microsoft / vcpkg

C++ Library Manager for Windows, Linux, and MacOS
MIT License
22.68k stars 6.27k forks source link

[suitesparse] Please split up SuiteSparse into its constituent packages #24252

Open szhorvat opened 2 years ago

szhorvat commented 2 years ago

This is s request to split up SuiteSparse to its constituent packages. SuiteSparse is a collection of more-or-less independent packages that do not always depend on each other. Most ports will depend not on the entire SuiteSparse collection but only a small subset, sometimes just one package. CXSparse and CSparse in particular are very commonly used independently from the rest of SuiteSparse (e.g. by the igraph port), as they provide a sparse matrix representation and do not depend on anything else within the SuiteSparse collection.

Many other package managers break up SuiteSparse, as can be seen here: https://repology.org/project/suitesparse/related (see e.g. https://repology.org/project/suitesparse-cxsparse/versions and https://repology.org/project/cxsparse/versions for an incomplete list; Debian also breaks it up).


Is your feature request related to a problem? Please describe.

Any port that depends on a single constituent package of SuiteSparse, such as CXSparse, will bring in a large number of unneeded and slow-to-install dependencies, including gfortran/MinGW.

Proposed solution

Break up SuiteSparse into its constituent packages, so only the necessary parts can be installed.

Describe alternatives you've considered

Not aware of any current way to avoid installing all unnecessary sub-packages.

To be clear, this improvement would provide a convenience: much faster installation of only the needed subpackages.

Additional context

Several major package systems / distros, such as Debian, Gentoo, FreeBSD, MacPorts, etc. provide parts of SuiteSparse separately.

szhorvat commented 1 year ago

FWIW, igraph no longer depends on SuiteSparse.

github-actions[bot] commented 7 months ago

This is an automated message. Per our repo policy, stale issues get closed if there has been no activity in the past 180 days. The issue will be automatically closed in 14 days. If you wish to keep this issue open, please add a new comment.

agriyakhetarpal commented 5 months ago

Thank you for removing the "stale" label on this issue. We would be very interested in seeing this being driven forward (especially with a major version update to v6 and v7) – it would resolve a lot of issues for Windows, where installing all of the SuiteSparse components is quite slow (we are in the requirement of just KLU and its sub-dependencies, i.e., AMD, COLAMD, and BTF).

szhorvat commented 5 months ago

In particular, building GraphBLAS takes an extremely long time (probably much longer than the rest of the packages combined).

valgur commented 2 months ago

I'll give it a shot. I've already gone through the process for ConanCenter (https://github.com/conan-io/conan-center-index/issues/5763#issuecomment-2056267818) and it was relatively straightforward, requiring almost no patching at all.

Also, the GraphBLAS package can be built in a much more reasonable time frame if JIT compilation of kernels is enabled instead of precompiling all of them.

szhorvat commented 2 months ago

If it's helpful, you can also look at how MacPorts does it https://github.com/macports/macports-ports/blob/master/math/SuiteSparse/Portfile