sparcityeu / SparseBase

Sparse data processing library with a generic, HPC-centric design, supports feature extraction, IO, reordering and partitioning.
https://sparcityeu.github.io/SparseBase/
MIT License
21 stars 7 forks source link

Create a user-friendly build interface #218

Open ardasener opened 1 year ago

ardasener commented 1 year ago

Sparsebase has many compile-time options (like header-only, data types). Furthermore, optional dependencies causes even more options to be selected by the users at compile-time. All of these options can also affect how the user needs to compile their own programs that use sparsebase as well.

The solution we are considering for this is to implement an easy-to-use and interactive script (preferably in Python) to build & install the library. This script can also provide users with build instructions, makefile templates etc. to properly link against sparsebase (this would also resolve #158).

A good example of the sort of thing we want here is the project creation for Nuxt (see here)

Here is a library that may be useful: PyInquirer

Note that this tool should be optional. If the users want to use cmake directly it should be possible.

ardasener commented 1 year ago

Here is an alternative library that seems to be actively maintained: Questionary

Atahanak commented 1 year ago

Looks easy to use.

AmroAlJundi commented 1 year ago

Create a user-friendly build interface #218

ardasener commented 1 year ago

It might be possible to automatically install some of the optional dependencies maybe? I have a script that does that for another project, here is a snippet from that:

# METIS
echo "Building metis..."
cd deps
wget -c $METIS_LINK
tar xzf "metis-${METIS_VERSION}.tar.gz"
cd "metis-${METIS_VERSION}"
make config shared=1
make -j $MAKE_J
cd ../..
mv ./deps/metis-${METIS_VERSION}/build/Linux-x86_64/libmetis/*.so libs/
mv ./deps/metis-${METIS_VERSION}/include/*.h libs/

It puts everything in a single directory called libs. We can add that to CMake's search path. This would be optional and only available on Linux maybe? Feel free to share your opinions.