easybuilders / easybuild-easyblocks

Collection of easyblocks that implement support for building and installing software with EasyBuild.
https://easybuild.io
GNU General Public License v2.0
104 stars 283 forks source link

Latest suitesparse easyblock modified library paths and doesn't install CSparse libs #3051

Open WilleBell opened 8 months ago

WilleBell commented 8 months ago

Latest suitesparse easyblock modified library paths and doesn't install CSparse libs which might cause installations that depend on SuiteSparse to fail, installation of those should be modified to find the libraries. But the issue of the missing CSparse library remains. Why was this lib removed in #3004? @appolloford

Installations that depend on SuiteSparse and might fail if not modified: AUGUSTUS CVXOPT Trilinos PETSc igraph Octave OpenSees DOLFIN FreeFEM Yade ARPACK++ pyGIMLi

WilleBell commented 8 months ago

Installation of PETSc fails. Path to libs can be fixed but it also requires the CSparse lib.

appolloford commented 8 months ago

Hi, I found some description from the SuiteSparse README

CSparse     a concise sparse matrix package, developed for my
            book, "Direct Methods for Sparse Linear Systems",
            published by SIAM.  Intended primarily for teaching.
            Note that the code is (c) Tim Davis, as stated in the book.
            For production, use CXSparse instead.  In particular, both
            CSparse and CXSparse have the same include filename: cs.h.
            This package is used for the built-in DMPERM in MATLAB.
            author: Tim Davis

CXSparse    CSparse Extended.  Includes support for complex matrices
            and both int or long integers.  Use this instead of CSparse
            for production use; it creates a libcsparse.so (or *dylib on
            the Mac) with the same name as CSparse.  It is a superset
            of CSparse.  Any code that links against CSparse should
            also be able to link against CXSparse instead.
            author: Tim Davis, David Bateman

CSparse looks like the only one which is not installed by cmake. Although I don't see a libcsparse.so from CXSparse (libcxsparse.so instead), I guess it does this intentionally to avoid some potential conflict with CXSparse. I am wondering whether the softwares in the list can be linked to CXSparse instead? Otherwise, I may copy those CSparse libs manually.

appolloford commented 8 months ago

At least for PETSc-3.19.2-foss-2022b.eb. I can successfully install that without CSpase. (require editing petsc easyblock)


Success: AUGUSTUS/3.5.0-foss-2022b CVXOPT-1.3.1-foss-2022a.eb (require revising path in easyconfig)

surak commented 8 months ago

Not to forget that there are extensions on R which depend on suitesparse. We took upstream suitesparse.py because we had an old one pre-suitesparse 6. We have 7.1.0

boegel commented 8 months ago

Not to forget that there are extensions on R which depend on suitesparse. We took upstream suitesparse.py because we had an old one pre-suitesparse 6. We have 7.1.0

Which extensions are that? We don't have SuiteSparse listed as dependency in upstream R easyconfigs...

surak commented 8 months ago

@SebastianAchilles can you paste the commented-out extensions of our R? I’m on vacations right now and don’t have access to Gitlab

appolloford commented 8 months ago

Some easyconfigs need to be updated as well, such as CVXOPT-1.3.1-foss-2022a.eb. I have not checked all of them since there is a long list. I guess some of them will be archived soon. I am not sure whether I should update them at this moment.

from develop branch

./r/R-INLA/R-INLA-21.05.02-foss-2020b-R-4.0.4.eb
./i/igraph/igraph-0.9.4-foss-2021a.eb
./i/igraph/igraph-0.9.5-foss-2021b.eb
./t/Trilinos/Trilinos-13.4.1-foss-2022a.eb
./t/Trilinos/Trilinos-12.12.1-intel-2017b-Python-2.7.14.eb
./t/Trilinos/Trilinos-12.12.1-foss-2019b-Python-3.7.4.eb
./t/Trilinos/Trilinos-12.12.1-foss-2017b-Python-2.7.14.eb
./t/Trilinos/Trilinos-12.12.1-intel-2018a-Python-3.6.4.eb
./t/Trilinos/Trilinos-13.4.1-foss-2022a-zoltan.eb
./t/Trilinos/Trilinos-12.12.1-foss-2018a-Python-3.6.4.eb
./s/S4/S4-1.1.1-20180610-foss-2017b.eb
./a/ARPACK++/ARPACK++-2018.03.26_find-deps.patch
./a/ARPACK++/ARPACK++-2018.03.26-foss-2017b.eb
./a/AUGUSTUS/AUGUSTUS-3.4.0-foss-2021b.eb
./a/AUGUSTUS/AUGUSTUS-3.4.0-foss-2020b.eb
./a/AUGUSTUS/AUGUSTUS-3.3-foss-2018a.eb
./a/AUGUSTUS/AUGUSTUS-3.3.3-intel-2019b.eb
./a/AUGUSTUS/AUGUSTUS-3.3.3-foss-2019b.eb
./a/AUGUSTUS/AUGUSTUS-3.3.2-intel-2018b-Python-2.7.15.eb
./a/AUGUSTUS/AUGUSTUS-3.5.0-foss-2022b.eb
./a/AUGUSTUS/AUGUSTUS-3.2.3-intel-2017a-Python-2.7.13.eb
./a/AUGUSTUS/AUGUSTUS-3.5.0-foss-2022a.eb
./a/AUGUSTUS/AUGUSTUS-3.3.2-foss-2017b-Python-2.7.14.eb
./a/AUGUSTUS/AUGUSTUS-3.3.2-intel-2017a-Python-2.7.13.eb
./a/AUGUSTUS/AUGUSTUS-3.4.0-foss-2021a.eb
./a/AUGUSTUS/AUGUSTUS-3.4.0-foss-2020a.eb
./a/AUGUSTUS/AUGUSTUS-3.3.2-intel-2019a.eb
./a/AUGUSTUS/AUGUSTUS-3.3.2-intel-2017b-Python-2.7.14.eb
./f/FreeFem++/FreeFem++-3.58-foss-2017b-downloaded-deps.eb
./f/FreeFem++/FreeFem++-3.61-1-intel-2018a-downloaded-deps.eb
./f/FreeFem++/FreeFem++-3.60-intel-2018a-downloaded-deps.eb
./f/FreeFEM/FreeFEM-4.5-foss-2019b-Python-3.7.4.eb
./o/OpenSees/OpenSees-3.2.0-add_Makefile_def_parallel.patch
./o/OpenSees/OpenSees-3.2.0-add_Makefile_def_sequential.patch
./o/OpenSees/OpenSees-3.2.0-intel-2020a-Python-3.8.2.eb
./o/OpenSees/OpenSees-3.2.0-intel-2020a-Python-3.8.2-parallel.eb
./o/Octave/Octave-4.0.3-intel-2016b.eb
./o/Octave/Octave-4.2.1-intel-2017a.eb
./o/Octave/Octave-5.1.0-foss-2019a.eb
./o/Octave/Octave-6.2.0-foss-2020b.eb
./o/Octave/Octave-4.2.2-foss-2018a.eb
./o/Octave/Octave-4.2.1-foss-2018a.eb
./o/Octave/Octave-7.1.0-foss-2021b.eb
./o/Octave/Octave-4.0.0-foss-2016a.eb
./o/Octave/Octave-4.4.1-foss-2018b.eb
./o/Octave/Octave-4.2.1-intel-2016b.eb
./o/Octave/Octave-4.2.1-intel-2017a-mt.eb
./o/Octave/Octave-5.1.0-foss-2019b.eb
./c/CVXOPT/CVXOPT-1.1.9-intel-2017a-Python-2.7.13.eb
./c/CVXOPT/CVXOPT-1.2.1-intel-2018a-Python-3.6.4.eb
./c/CVXOPT/CVXOPT-1.2.6-foss-2020b.eb
./c/CVXOPT/CVXOPT-1.1.9-fix-setup-py.patch
./c/CVXOPT/CVXOPT-1.2.3-foss-2019a.eb
./c/CVXOPT/CVXOPT-1.2.4-intel-2019b-Python-3.7.4.eb
./c/CVXOPT/CVXOPT-1.2.3-intel-2018b-Python-3.6.6.eb
./c/CVXOPT/CVXOPT-1.2.6-foss-2021a.eb
./c/CVXOPT/CVXOPT-1.2.1-fix-setup-py.patch
./c/CVXOPT/CVXOPT-1.3.1-foss-2022a.eb
./c/CVXOPT/CVXOPT-1.3.1_fix-setup-py.patch
./d/DOLFIN/DOLFIN-2018.1.0.post1-foss-2018a-Python-3.6.4.eb
./d/DOLFIN/DOLFIN-2019.1.0.post0-foss-2019b-Python-3.7.4.eb
./d/DOLFIN/DOLFIN-1.6.0_fix-SuiteSparse-4.3.patch
./y/Yade/Yade-2018.02b-intel-2018a-Python-2.7.14.eb
./p/PETSc/PETSc-3.12.4-foss-2020a-Python-3.8.2.eb
./p/PETSc/PETSc-3.7.2-intel-2016a-Python-2.7.11.eb
./p/PETSc/PETSc-3.12.4-intel-2019b-Python-2.7.16.eb
./p/PETSc/PETSc-3.18.4-intel-2021b.eb
./p/PETSc/PETSc-3.7.5-intel-2016b-downloaded-deps.eb
./p/PETSc/PETSc-3.9.3-foss-2018a.eb
./p/PETSc/PETSc-3.11.1-intel-2019a-Python-3.7.2.eb
./p/PETSc/PETSc-3.12.4-foss-2019b-Python-3.7.4.eb
./p/PETSc/PETSc-3.15.1-intel-2021a.eb
./p/PETSc/PETSc-3.11.0-foss-2018b-downloaded-deps.eb
./p/PETSc/PETSc-3.8.3-foss-2017b-downloaded-deps.eb
./p/PETSc/PETSc-3.12.4-intel-2020a-Python-3.8.2.eb
./p/PETSc/PETSc-3.9.3-intel-2018a.eb
./p/PETSc/PETSc-3.19.2-foss-2022b.eb
./p/PETSc/PETSc-3.7.3-foss-2016a-Python-2.7.11.eb
./p/PETSc/PETSc-3.9.1-foss-2018a-downloaded-deps.eb
./p/PETSc/PETSc-3.14.4-foss-2020b.eb
./p/PETSc/PETSc-3.14.4-intel-2020b.eb
./p/PETSc/PETSc-3.11.1-foss-2019a-Python-3.7.2.eb
./p/PETSc/PETSc-3.15.1-foss-2021a.eb
./p/PETSc/PETSc-3.17.4-foss-2022a.eb
./p/PETSc/PETSc-3.12.4-intel-2019b-Python-3.7.4.eb
./p/pyGIMLi/pyGIMLi-20160803-foss-2016a-Python-3.5.1.eb
./p/pyGIMLi/pyGIMLi-20160803-foss-2016a-Python-2.7.11.eb
boegel commented 7 months ago

@appolloford Updating any easyconfigs using a deprecated toolchain is a useless effort, since those are archived in the 5.0.x branch already. Now that we have the 2023b version of the common toolchains set in stone, anything older than 2021a (GCC 10.3.0) is deprecated; see also https://docs.easybuild.io/policies/toolchains

Are these the easyconfigs that have a dependency on SuiteSparse? No changes are needed for PETSc-3.19.2-foss-2022b.eb imho, installing that works just fine with the updated PETSc easyblock?

boegel commented 7 months ago

CVXOPT is definitely broken, fails with:

cc1: fatal error: /software/SuiteSparse/5.13.0-foss-2022a-METIS-5.1.0/SuiteSparse_config/SuiteSparse_config.c: No such file or directory
appolloford commented 7 months ago

Yes, the list is simply showing the easyconfigs with SuiteSparse dependency. PETSc and Trilinos easyconfigs should work fine with the new easyblock. I had a quick look on igraph, AUGUSTUS, Octave, and CVXOPT easyconfigs, which having toolchain later than 2021a, and it seems CVXOPT is the only one need updates. I will test them to make sure them work and probably also modify the CVXOPT easyblock.