From a136c4e4fd73291eb46f1c854e8c8547361ca32b Mon Sep 17 00:00:00 2001 From: sassy Date: Mon, 14 Oct 2024 11:08:19 +0100 Subject: [PATCH] adding easyconfigs: muParser-2.3.4-GCCcore-13.2.0.eb, R-INLA-24.10.07-2-foss-2023b.eb, Rmath-4.4.1-foss-2023b.eb, SuiteSparse-7.7.0-foss-2023b.eb and patches: R-INLA-24.10.07_remove-hardcoding.patch, R-INLA-24.10.07-2_fix-hardcoded-deps.patch --- .../muParser/muParser-2.3.4-GCCcore-13.2.0.eb | 32 ++++++ .../r/R-INLA/R-INLA-24.10.07-2-foss-2023b.eb | 108 ++++++++++++++++++ ...R-INLA-24.10.07-2_fix-hardcoded-deps.patch | 77 +++++++++++++ .../R-INLA-24.10.07_remove-hardcoding.patch | 48 ++++++++ .../r/Rmath/Rmath-4.4.1-foss-2023b.eb | 47 ++++++++ .../SuiteSparse-7.7.0-foss-2023b.eb | 26 +++++ 6 files changed, 338 insertions(+) create mode 100644 easybuild/easyconfigs/m/muParser/muParser-2.3.4-GCCcore-13.2.0.eb create mode 100644 easybuild/easyconfigs/r/R-INLA/R-INLA-24.10.07-2-foss-2023b.eb create mode 100644 easybuild/easyconfigs/r/R-INLA/R-INLA-24.10.07-2_fix-hardcoded-deps.patch create mode 100644 easybuild/easyconfigs/r/R-INLA/R-INLA-24.10.07_remove-hardcoding.patch create mode 100644 easybuild/easyconfigs/r/Rmath/Rmath-4.4.1-foss-2023b.eb create mode 100644 easybuild/easyconfigs/s/SuiteSparse/SuiteSparse-7.7.0-foss-2023b.eb diff --git a/easybuild/easyconfigs/m/muParser/muParser-2.3.4-GCCcore-13.2.0.eb b/easybuild/easyconfigs/m/muParser/muParser-2.3.4-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..d347f6174f4 --- /dev/null +++ b/easybuild/easyconfigs/m/muParser/muParser-2.3.4-GCCcore-13.2.0.eb @@ -0,0 +1,32 @@ +easyblock = 'CMakeMake' + +name = 'muParser' +version = '2.3.4' + +homepage = 'https://beltoforion.de/article.php?a=muparser' +description = """ + muParser is an extensible high performance math expression parser library + written in C++. It works by transforming a mathematical expression into + bytecode and precalculating constant parts of the expression. +""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/beltoforion/muparser/archive/'] +sources = ['v%(version)s.tar.gz'] +checksums = ['0c3fa54a3ebf36dda0ed3e7cd5451c964afbb15102bdbcba08aafb359a290121'] + +builddependencies = [ + ('binutils', '2.40'), + ('CMake', '3.27.6'), +] + +configopts = "-DENABLE_SAMPLES=OFF -DBUILD_SHARED_LIBS=ON" + +sanity_check_paths = { + 'files': ['include/%(name)s.h', 'lib/libmuparser.%s' % SHLIB_EXT], + 'dirs': [], +} + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/r/R-INLA/R-INLA-24.10.07-2-foss-2023b.eb b/easybuild/easyconfigs/r/R-INLA/R-INLA-24.10.07-2-foss-2023b.eb new file mode 100644 index 00000000000..751425062e1 --- /dev/null +++ b/easybuild/easyconfigs/r/R-INLA/R-INLA-24.10.07-2-foss-2023b.eb @@ -0,0 +1,108 @@ +# Updated to 24.10.07-2 +# Author: J. Sassmannshausen (Imperial College London/UK) + +easyblock = 'Bundle' + +name = 'R-INLA' +version = '24.10.07-2' + +homepage = 'https://www.r-inla.org' +description = "R-INLA is a package in R that do approximate Bayesian inference for Latent Gaussian Models." + +toolchain = {'name': 'foss', 'version': '2023b'} +toolchainopts = {'openmp': True} + +dependencies = [ + ('R', '4.4.1'), + ('R-bundle-CRAN', '2024.06'), + ('GSL', '2.7'), + ('zlib', '1.2.13'), + ('SuiteSparse', '7.7.0'), + ('METIS', '5.1.0'), + ('muParser', '2.3.4'), + ('Rmath', '%(rver)s'), + ('X11', '20231019'), + ('libtool', '2.4.7'), # provides libltdl +] + +default_easyblock = 'ConfigureMake' +# all components are installed from the same source tarball +default_component_specs = { + 'source_urls': ['https://github.com/hrue/r-inla/archive/refs/tags/'], + 'sources': [{'download_filename': 'Version_%s.tar.gz' % version, 'filename': 'R-INLA-%s.tar.gz' % version}], + 'skipsteps': ['configure'], + 'checksums': ['6e3bf7fd403290928ce5f9bd89092a750f8b9faf40bb99a3b3265116143260db'] +} + +local_gmrflib_prebuildopts = ' cd r-inla-Version_%(version)s && ln -s gmrflib GMRFLib && cd - && ' +local_gmrflib_buildopts = ' -C r-inla-*/gmrflib PREFIX=%(installdir)s CC="$CC" FC="$FC" ' +local_gmrflib_buildopts += ' FLAGS="$CXXFLAGS -DINLA_LINK_WITH_OPENBLAS " ' + +local_rinla_prebuildopts = "export CPATH=$EBROOTR/lib64/R/include/:$CPATH && " +local_rinla_prebuildopts += "cp r-inla-Version_%(version)s/gmrflib/sha.h %(installdir)s/include/GMRFLib/ && " + +local_inla_buildopts = '-C r-inla-*/inlaprog PREFIX=%(installdir)s ' +local_inla_buildopts += ' CC="$CC" CXX="$CXX" FC="$FC" LD="$CXX -lltdl" ' +local_inla_buildopts += ' FLAGS="$CXXFLAGS -DINLA_LINK_WITH_OPENBLAS"' + +components = [ + ('taucs', version, { + 'easyblock': 'MakeCp', + 'prebuildopts': "cd r-inla-*/extlibs && tar xvfz taucs-2.2--my-fix.tgz && cd taucs-2.2--my-fix && ", + 'buildopts': 'CC="$CC" CFLAGS="$CFLAGS" FC="$FC" FFLAGS="$FFLAGS" LIBBLAS="$LIBBLAS" LIBLAPACK="$LIBLAPACK"', + 'files_to_copy': [(['r-inla-*/extlibs/taucs-2.2--my-fix/lib/linux/libtaucs.a'], 'lib')], + }), + ('fmesher-R-INLA', version, { + 'patches': ['R-INLA-24.10.07-2_fix-hardcoded-deps.patch'], + 'checksums': default_component_specs['checksums'] + [ + '2e81c16c06eb1a9355e50dfac5f92477c093d94137ee49ae35e78e75d67a853d', + ], + 'buildopts': '-C r-inla-*/fmesher PREFIX=%(installdir)s CC="$CC" CXX="$CXX" LD="$CXX" FLAGS="$CXXFLAGS"', + 'installopts': '-C r-inla-*/fmesher PREFIX=%(installdir)s', + }), + ('GMRFLib', version, { + 'prebuildopts': local_gmrflib_prebuildopts, + 'buildopts': local_gmrflib_buildopts, + 'installopts': '-C r-inla-*/gmrflib PREFIX=%(installdir)s', + }), + ('fmesher', '0.1.7', { + 'easyblock': 'RPackage', + 'source_urls': [ + 'https://cran.r-project.org/src/contrib/Archive/fmesher', # package archive + 'https://cran.r-project.org/src/contrib/', # current version of packages + ], + 'sources': ['fmesher_%(version)s.tar.gz'], + 'checksums': ['b59af73ac4e30e5d4287fb6ddfc0b6e21b007243bd94a652f3725ea431019ecf'], + 'start_dir': 'fmesher', + }), + ('rinla', version, { + 'patches': ['R-INLA-24.10.07_remove-hardcoding.patch'], + 'checksums': default_component_specs['checksums'] + [ + '8a1fd63611e1ad64ed8702b5ba07b5f3969afcaf0454605074c1d717590ca603', + ], + 'easyblock': 'RPackage', + 'start_dir': 'r-inla-Version_%(version)s/rinla', + 'preinstallopts': "export R_LIBS_SITE=%(installdir)s:$R_LIBS_SITE && ", + }), + (name, version, { + 'prebuildopts': local_rinla_prebuildopts, + 'buildopts': local_inla_buildopts, + 'installopts': '-C r-inla-*/inlaprog PREFIX=%(installdir)s', + }), +] + +local_bins = ['inla', 'fmesher'] + +postinstallcmds = ['ln -s %%(installdir)s/bin/%s %%(installdir)s/INLA/bin/linux/64bit/%s' % (x, x) for x in local_bins] + +sanity_check_paths = { + 'files': ['%s/%s' % (p, x) for p in ['bin', 'INLA/bin/linux/64bit'] for x in local_bins] + + ['lib/libGMRFLib.a', 'lib/libtaucs.a'], + 'dirs': ['doc', 'include/GMRFLib'], +} + +sanity_check_commands = ["Rscript -e 'library(INLA)'"] + ["%s -h" % x for x in local_bins] + +modextrapaths = {'R_LIBS_SITE': ''} + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/r/R-INLA/R-INLA-24.10.07-2_fix-hardcoded-deps.patch b/easybuild/easyconfigs/r/R-INLA/R-INLA-24.10.07-2_fix-hardcoded-deps.patch new file mode 100644 index 00000000000..44adcadc924 --- /dev/null +++ b/easybuild/easyconfigs/r/R-INLA/R-INLA-24.10.07-2_fix-hardcoded-deps.patch @@ -0,0 +1,77 @@ +use dependencies provided by EasyBuild +authors: Denis Kristak (INUITS), Kenneth Hoste (HPC-UGent) +updated to 24.10.07-2: J. Sassmannshausen (Imperial College London/UK) +diff --git a/r-inla-Version_24.10.07-2.orig/gmrflib/old-stuff/smtp-taucs.c b/r-inla-Version_24.10.07-2/gmrflib/old-stuff/smtp-taucs.c +index 07d3b13..d2964c6 100644 +--- a/r-inla-Version_24.10.07-2.orig/gmrflib/old-stuff/smtp-taucs.c ++++ b/r-inla-Version_24.10.07-2/gmrflib/old-stuff/smtp-taucs.c +@@ -43,7 +43,7 @@ + + #include "GMRFLib/GMRFLib.h" + #include "GMRFLib/GMRFLibP.h" +-#include "amd.h" ++#include "suitesparse/amd.h" + #include "metis.h" + + GMRFLib_taucs_cache_tp *GMRFLib_taucs_cache_duplicate(GMRFLib_taucs_cache_tp *cache) +diff --git a/r-inla-Version_24.10.07-2.orig/gmrflib/smtp-taucs.c b/r-inla-Version_24.10.07-2/gmrflib/smtp-taucs.c +index ba7331f..dc09aba 100644 +--- a/r-inla-Version_24.10.07-2.orig/gmrflib/smtp-taucs.c ++++ b/r-inla-Version_24.10.07-2/gmrflib/smtp-taucs.c +@@ -43,7 +43,7 @@ + + #include "GMRFLib/GMRFLib.h" + #include "GMRFLib/GMRFLibP.h" +-#include "amd.h" ++#include "suitesparse/amd.h" + #include "metis.h" + + #define TIME_FUNCTIONS 0 +diff --git a/r-inla-Version_24.10.07-2.orig/inlaprog/Makefile b/r-inla-Version_24.10.07-2/inlaprog/Makefile +index c2a5bc3..64e9ede 100644 +--- a/r-inla-Version_24.10.07-2.orig/inlaprog/Makefile ++++ b/r-inla-Version_24.10.07-2/inlaprog/Makefile +@@ -2,8 +2,8 @@ + + PREFIX = /usr/local + +-RLIB_INC = -DINLA_WITH_LIBR -I/usr/include/R -I/usr/share/R/include +-RLIB_LIB = -L/usr/lib -lRmath -L/usr/lib/R/lib -lR ++RLIB_INC = -DINLA_WITH_LIBR ++RLIB_LIB = -lRmath -lR + + # select compilers and optimized compiler-options, add -fopenmp or similar to use OpenMP + CC = gcc +@@ -19,7 +19,7 @@ LEXTPREFIX = $(PREFIX) + + # The external libraries to link with + EXTLIBS1 = -L$(PREFIX)/lib -lGMRFLib -L$(LEXTPREFIX)/lib +-EXTLIBS2 = -lgsl -ltaucs -lmetis -llapack -lblas -lgslcblas -lamd -lmuparser -lz -lgfortran -lcrypto ++EXTLIBS2 = -lgsl -ltaucs -lmetis -lscalapack -lflexiblas -lgslcblas -lamd -lmuparser -lz -lgfortran -lcrypto + EXTLIBS3 = -Wl,--whole-archive -lpthread -Wl,--no-whole-archive -lm + + ################################################################################ +@@ -55,8 +55,8 @@ install: $(INLA) + done; \ + install -m755 $(INLA) $(PREFIX)/bin/$(INLA);\ + install -m755 $(INLA) $(PREFIX)/bin/$(INLA);\ +- rsync -auv --no-p --no-o --no-g --chmod=ugo=rwX --delete doc/* $(PREFIX)/doc/inla; \ +- rsync -auv --no-p --no-o --no-g --chmod=ugo=rwX --delete examples/* $(PREFIX)/doc/inla/examples; ++ # rsync -auv --no-p --no-o --no-g --chmod=ugo=rwX --delete doc/* $(PREFIX)/doc/inla; \ ++ # rsync -auv --no-p --no-o --no-g --chmod=ugo=rwX --delete examples/* $(PREFIX)/doc/inla/examples; + + clean:; -$(RM) $(OBJ) $(INLA) + +diff --git a/r-inla-Version_24.10.07-2.orig/inlaprog/src/eval.c b/r-inla-Version_24.10.07-2/inlaprog/src/eval.c +index bc9819b..c352fca 100644 +--- a/r-inla-Version_24.10.07-2.orig/inlaprog/src/eval.c ++++ b/r-inla-Version_24.10.07-2/inlaprog/src/eval.c +@@ -35,7 +35,7 @@ + #include + + #if defined(INLA_WITH_MUPARSER) +-#include ++#include + #endif + + #include "GMRFLib/GMRFLib.h" diff --git a/easybuild/easyconfigs/r/R-INLA/R-INLA-24.10.07_remove-hardcoding.patch b/easybuild/easyconfigs/r/R-INLA/R-INLA-24.10.07_remove-hardcoding.patch new file mode 100644 index 00000000000..435da7245a5 --- /dev/null +++ b/easybuild/easyconfigs/r/R-INLA/R-INLA-24.10.07_remove-hardcoding.patch @@ -0,0 +1,48 @@ +remove hardcoded paths from scripts +authors: Denis Kristak (INUITS), Kenneth Hoste (HPC-UGent) +Updated to 24.10.07: J. Sassmannshausen (Imperial College London/UK) +diff --git a/r-inla-Version_24.10.07.orig/rinla/inst/bin/linux/64bit/fmesher.run b/r-inla-Version_24.10.07/rinla/inst/bin/linux/64bit/fmesher.run +index 5a273e9..3195d02 100755 +--- a/r-inla-Version_24.10.07.orig/rinla/inst/bin/linux/64bit/fmesher.run ++++ b/r-inla-Version_24.10.07/rinla/inst/bin/linux/64bit/fmesher.run +@@ -4,18 +4,6 @@ tmp=$(basename "$cmd") + prog=${tmp%%.run} + DIR=$(dirname "$cmd") + +-D="" +-for d in {,/usr}/lib64 /usr/lib64/R/lib {,/usr}/lib/x86_64-linux-gnu {,/usr}/lib; do +- if [ -d "$d" ]; then +- if [ -z "$D" ]; then +- D="$d" +- else +- D="$D:$d" +- fi +- fi +-done +-export LD_LIBRARY_PATH="$DIR/first:$D:$DIR:$LD_LIBRARY_PATH" +- + if [ "${INLA_DEBUG}XX" != "XX" ]; then + echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH" + ldd -r "$DIR/$prog" +diff --git a/r-inla-Version_24.10.07.orig/rinla/inst/bin/linux/64bit/inla.run b/r-inla-Version_24.10.07/rinla/inst/bin/linux/64bit/inla.run +index 49a6424..555d007 100755 +--- a/r-inla-Version_24.10.07.orig/rinla/inst/bin/linux/64bit/inla.run ++++ b/r-inla-Version_24.10.07/rinla/inst/bin/linux/64bit/inla.run +@@ -13,17 +13,6 @@ if [ ! -z ${R_HOME+x} ]; then + fi + fi + +-D="" +-for d in {,/usr}/lib64 /usr/lib64/R/lib {,/usr}/lib/x86_64-linux-gnu {,/usr}/lib; do +- if [ -d "$d" ]; then +- if [ -z "$D" ]; then +- D="$d" +- else +- D="$D:$d" +- fi +- fi +-done +- + if [ -n "${INLA_NATIVE_LD_LIBRARY_PATH}" ]; then + ## so we can revert back to old behaviour + export LD_LIBRARY_PATH="$DIR/first:$D:$DIR:$LD_LIBRARY_PATH" diff --git a/easybuild/easyconfigs/r/Rmath/Rmath-4.4.1-foss-2023b.eb b/easybuild/easyconfigs/r/Rmath/Rmath-4.4.1-foss-2023b.eb new file mode 100644 index 00000000000..42e09c42aef --- /dev/null +++ b/easybuild/easyconfigs/r/Rmath/Rmath-4.4.1-foss-2023b.eb @@ -0,0 +1,47 @@ +# Easyconfig for Rmath +# Author: Caspar van Leeuwen +# SURFsara, Amsterdam, The Netherlands +# Updated to 4.4.1: J. Sassmannshausen (Imperial College London/UK) + +easyblock = 'ConfigureMake' + +name = 'Rmath' +version = '4.4.1' + +homepage = "https://www.r-project.org/" +description = """Rmath is the standalone version of the R math library. + Rmath can be used in your own C/C++ routines.""" + +toolchain = {'name': 'foss', 'version': '2023b'} + +source_urls = ['http://cran.us.r-project.org/src/base/R-%(version_major)s/'] +sources = ['R-%(version)s.tar.gz'] +checksums = ['b4cb675deaaeb7299d3b265d218cde43f192951ce5b89b7bb1a5148a36b2d94d'] + +dependencies = [ + ('bzip2', '1.0.8'), + ('cURL', '8.3.0'), + ('libreadline', '8.2'), + ('PCRE2', '10.42'), + ('XZ', '5.4.4'), + ('zlib', '1.2.13') +] + +# Copied from R-3.3.1-intel-2016b.eb. +# Again, unsure if these affect R-math: R documentation doesn't specify. +configopts = "--with-pic --enable-threads --with-x=no --with-pcre2" + +# Since we're only installing Rmath anyway, we don't care about R packages. +configopts += " --with-recommended-packages=no" + +# To build Rmath, docs say you need to execute 'make' in src/nmath/standalone +# https://cran.r-project.org/doc/manuals/r-devel/R-admin.html#Configuration-options +prebuildopts = 'cd src/nmath/standalone;' +preinstallopts = prebuildopts + +sanity_check_paths = { + 'files': ['lib/libRmath.a', 'lib/libRmath.%s' % SHLIB_EXT, 'include/Rmath.h'], + 'dirs': [] +} + +moduleclass = 'numlib' diff --git a/easybuild/easyconfigs/s/SuiteSparse/SuiteSparse-7.7.0-foss-2023b.eb b/easybuild/easyconfigs/s/SuiteSparse/SuiteSparse-7.7.0-foss-2023b.eb new file mode 100644 index 00000000000..f99f97a5cab --- /dev/null +++ b/easybuild/easyconfigs/s/SuiteSparse/SuiteSparse-7.7.0-foss-2023b.eb @@ -0,0 +1,26 @@ +name = 'SuiteSparse' +version = '7.7.0' + +homepage = 'https://faculty.cse.tamu.edu/davis/suitesparse.html' +description = """SuiteSparse is a collection of libraries to manipulate sparse matrices.""" + +toolchain = {'name': 'foss', 'version': '2023b'} +toolchainopts = {'unroll': True, 'pic': True} + +source_urls = ['https://github.com/DrTimothyAldenDavis/SuiteSparse/archive'] +sources = ['v%(version)s.tar.gz'] +checksums = ['529b067f5d80981f45ddf6766627b8fc5af619822f068f342aab776e683df4f3'] + +builddependencies = [ + ('CMake', '3.27.6'), + ('pkgconf', '2.0.3'), +] + +dependencies = [ + ('MPFR', '4.2.1'), +] + +# uncomment the next row if need customization +# cmake_options = '' + +moduleclass = 'numlib'