From 9166400aa2c1d18c431ea7f409e1357a0823d73b Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Fri, 20 Oct 2023 21:58:43 +0200 Subject: [PATCH 001/203] Easyconfig that can extend EESSI --- EESSI-2023.06-extend.eb | 85 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 EESSI-2023.06-extend.eb diff --git a/EESSI-2023.06-extend.eb b/EESSI-2023.06-extend.eb new file mode 100644 index 0000000000..e4fafb860c --- /dev/null +++ b/EESSI-2023.06-extend.eb @@ -0,0 +1,85 @@ +easyblock = 'Binary' + +name = 'EESSI' +version = '2023.06' +versionsuffix = '-extend' + +homepage = 'https://eessi.github.io/docs/' + +description = """ + The goal of the European Environment for Scientific Software Installations + (EESSI, pronounced as "easy") is to build a common stack of scientific + software installations for HPC systems and beyond, including laptops, + personal workstations and cloud infrastructure. + + This module allows you to extend EESSI using the same configuration for + EasyBuild as EESSI itself uses. It installs the modules in a special location + that is configurable in the CVMFS configuration (so can be on a shared + filesystem), and automatically found when using the default EESSI environment. +""" + +toolchain = SYSTEM + +source_urls = None +sources = ['eb_hooks.py'] +checksums = ['8ae609f99b6953beae89aa1945913686c86c156509dbc55e2b6b8017b13fcf66'] + +# Don't extend the PATH +prepend_to_path = None + +# All the dependencies we filter in EESSI +local_deps_to_filter = "Autoconf,Automake,Autotools,binutils,bzip2,DBus,flex,gettext,gperf,help2man,intltool,libreadline,libtool,Lua,M4,makeinfo,ncurses,util-linux,XZ,zlib" +local_arch_specific_deps_to_filter = {'aarch64': ',yasm', 'x86_64': ''} +local_deps_to_filter += local_arch_specific_deps_to_filter[ARCH] + +modextravars = { + 'EASYBUILD_FILTER_DEPS': local_deps_to_filter, + 'EASYBUILD_IGNORE_OSDEPS': '1', + 'EASYBUILD_DEBUG': '1', + 'EASYBUILD_TRACE': '1', + 'EASYBUILD_ZIP_LOGS': 'bzip2', + 'EASYBUILD_RPATH': '1', + 'EASYBUILD_FILTER_ENV_VARS': 'LD_LIBRARY_PATH', + 'EASYBUILD_READ_ONLY_INSTALLDIR': '1', + 'EASYBUILD_MODULE_EXTENSIONS': '1', + 'EASYBUILD_EXPERIMENTAL': '1', + 'EASYBUILD_HOOKS': '%(installdir)s/eb_hooks.py', +} + +# Need a few other variables, but they are more dynamic +# EASYBUILD_SYSROOT=${EPREFIX} +# EASYBUILD_PREFIX=${WORKDIR}/easybuild +# EASYBUILD_INSTALLPATH=${EESSI_PREFIX}/software/${EESSI_OS_TYPE}/${EESSI_SOFTWARE_SUBDIR} +# EASYBUILD_SOURCEPATH=${WORKDIR}/easybuild/sources:${EESSI_SOURCEPATH} +modluafooter = """ +if (mode() == "load") then + -- Use a working directory for temporary build files + if (os.getenv("WORKING_DIR") == nil) then + LmodMessage("-- Using /tmp as a temporary working directory for installations, you can override this by setting the environment variable WORKING_DIR and reloading the module (e.g., /dev/shm is a common option)") + end +end +working_dir = os.getenv("WORKING_DIR") or "/tmp" +-- Gather the EPREFIX to use as a sysroot +sysroot = os.getenv("EPREFIX") +-- Use an installation prefix that we _should_ have write access to +easybuild_installpath = string.gsub(os.getenv("EESSI_SOFTWARE_PATH"), 'versions', 'host_injections') +if (mode() == "load") then + LmodMessage("-- To create installations for EESSI, you _must_ have write permissions to " .. easybuild_installpath) + -- Advise them to reuse sources + if (os.getenv("EASYBUILD_SOURCEPATH") == nil) then + LmodMessage("-- You may wish to configure a sources directory for EasyBuild (for example, via setting the environment variable EASYBUILD_SOURCEPATH) to allow you to reuse existing sources for packages.") + end +end +-- Set the relevant environment variables for EasyBuild +setenv ("EASYBUILD_SYSROOT", sysroot) +setenv ("EASYBUILD_PREFIX", pathJoin(working_dir, "easybuild")) +setenv ("EASYBUILD_INSTALLPATH", easybuild_installpath) +always_load("EasyBuild") +""" + +sanity_check_paths = { + 'files': ['eb_hooks.py'], + 'dirs': [''] +} + +moduleclass = 'devel' From f1a0e71a4b1f01c3b9937a302f50dc87b252c99f Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Fri, 20 Oct 2023 22:00:21 +0200 Subject: [PATCH 002/203] Add extension of EESSI to MODULEPATH --- init/Magic_Castle/bash | 2 +- init/bash | 2 ++ init/eessi_environment_variables | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/init/Magic_Castle/bash b/init/Magic_Castle/bash index 85e4d54241..219c6d3a85 100644 --- a/init/Magic_Castle/bash +++ b/init/Magic_Castle/bash @@ -10,7 +10,7 @@ source $(dirname "$BASH_SOURCE")/../eessi_environment_variables # Provide a clean MODULEPATH export MODULEPATH_ROOT=$EESSI_MODULEPATH -export MODULEPATH=$EESSI_MODULEPATH +export MODULEPATH=$EESSI_EXTEND_MODULEPATH:$EESSI_MODULEPATH # Extensions are too many, let's not print them by default (requires Lmod 8.4.12) export LMOD_AVAIL_EXTENSIONS=no diff --git a/init/bash b/init/bash index ea605db0b5..bf8ada4fd2 100644 --- a/init/bash +++ b/init/bash @@ -26,6 +26,8 @@ if [ $? -eq 0 ]; then # prepend location of modules for EESSI software stack to $MODULEPATH echo "Prepending $EESSI_MODULEPATH to \$MODULEPATH..." >> $output module use $EESSI_MODULEPATH + echo "Prepending $EESSI_EXTEND_MODULEPATH to \$MODULEPATH..." >> $output + module use $EESSI_EXTEND_MODULEPATH #echo >> $output #echo "*** Known problems in the ${EESSI_PILOT_VERSION} pilot software stack ***" >> $output diff --git a/init/eessi_environment_variables b/init/eessi_environment_variables index 10ac1926f4..7b4f82bbd3 100644 --- a/init/eessi_environment_variables +++ b/init/eessi_environment_variables @@ -60,6 +60,8 @@ if [ -d $EESSI_PREFIX ]; then if [ -d $EESSI_MODULEPATH ]; then export EESSI_MODULEPATH=$EESSI_MODULEPATH echo "Using ${EESSI_MODULEPATH} as the directory to be added to MODULEPATH." >> $output + export EESSI_EXTEND_MODULEPATH=${EESSI_MODULEPATH/versions/host_injections} + echo "Using ${EESSI_EXTEND_MODULEPATH} as the extension directory to be added to MODULEPATH." >> $output else error "EESSI module path at $EESSI_MODULEPATH not found!" false From 98f20cdd9dd83c481065f30ab6657367d06b869b Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Tue, 7 Nov 2023 13:14:24 +0100 Subject: [PATCH 003/203] Allow for both site and user extensions to EESSI --- ...nd.eb => EESSI-extend-2023.06-easybuild.eb | 30 ++++++++++++------- init/Magic_Castle/bash | 2 +- init/bash | 6 ++-- init/eessi_environment_variables | 6 ++-- 4 files changed, 29 insertions(+), 15 deletions(-) rename EESSI-2023.06-extend.eb => EESSI-extend-2023.06-easybuild.eb (69%) diff --git a/EESSI-2023.06-extend.eb b/EESSI-extend-2023.06-easybuild.eb similarity index 69% rename from EESSI-2023.06-extend.eb rename to EESSI-extend-2023.06-easybuild.eb index e4fafb860c..fd9f897326 100644 --- a/EESSI-2023.06-extend.eb +++ b/EESSI-extend-2023.06-easybuild.eb @@ -1,8 +1,9 @@ easyblock = 'Binary' -name = 'EESSI' +name = 'EESSI-extend' version = '2023.06' -versionsuffix = '-extend' +# May have different ways to extend EESSI in future (manually, other tools,...) +versionsuffix = '-easybuild' homepage = 'https://eessi.github.io/docs/' @@ -13,9 +14,10 @@ description = """ personal workstations and cloud infrastructure. This module allows you to extend EESSI using the same configuration for - EasyBuild as EESSI itself uses. It installs the modules in a special location - that is configurable in the CVMFS configuration (so can be on a shared - filesystem), and automatically found when using the default EESSI environment. + EasyBuild as EESSI itself uses. The default installation is the users + home directory, but this can be overridden for a site installation (by setting + EESSI_SITE_INSTALL) or for a direct installation under CVMFS (by setting + EESSI_CVMFS_INSTALL). """ toolchain = SYSTEM @@ -55,14 +57,20 @@ modluafooter = """ if (mode() == "load") then -- Use a working directory for temporary build files if (os.getenv("WORKING_DIR") == nil) then - LmodMessage("-- Using /tmp as a temporary working directory for installations, you can override this by setting the environment variable WORKING_DIR and reloading the module (e.g., /dev/shm is a common option)") + LmodMessage("-- Using /tmp/$USER as a temporary working directory for installations, you can override this by setting the environment variable WORKING_DIR and reloading the module (e.g., /dev/shm is a common option)") end end -working_dir = os.getenv("WORKING_DIR") or "/tmp" +working_dir = os.getenv("WORKING_DIR") or pathJoin("/tmp", os.getenv("USER")) -- Gather the EPREFIX to use as a sysroot -sysroot = os.getenv("EPREFIX") +sysroot = os.getenv("EESSI_EPREFIX") -- Use an installation prefix that we _should_ have write access to -easybuild_installpath = string.gsub(os.getenv("EESSI_SOFTWARE_PATH"), 'versions', 'host_injections') +if (os.getenv("EESSI_CVMFS_INSTALL") ~= nil) then + easybuild_installpath = os.getenv("EESSI_SOFTWARE_PATH") +elseif (os.getenv("EESSI_SITE_INSTALL") ~= nil) then + easybuild_installpath = string.gsub(os.getenv("EESSI_SOFTWARE_PATH"), 'versions', 'host_injections') +else + easybuild_installpath = string.gsub(os.getenv("EESSI_SOFTWARE_PATH"), os.getenv("EESSI_CVMFS_REPO"), pathJoin(os.getenv("HOME"), "eessi")) +end if (mode() == "load") then LmodMessage("-- To create installations for EESSI, you _must_ have write permissions to " .. easybuild_installpath) -- Advise them to reuse sources @@ -74,7 +82,9 @@ end setenv ("EASYBUILD_SYSROOT", sysroot) setenv ("EASYBUILD_PREFIX", pathJoin(working_dir, "easybuild")) setenv ("EASYBUILD_INSTALLPATH", easybuild_installpath) -always_load("EasyBuild") +if not ( isloaded("EasyBuild") ) then + load("EasyBuild") +end """ sanity_check_paths = { diff --git a/init/Magic_Castle/bash b/init/Magic_Castle/bash index 219c6d3a85..0ee9d612f3 100644 --- a/init/Magic_Castle/bash +++ b/init/Magic_Castle/bash @@ -10,7 +10,7 @@ source $(dirname "$BASH_SOURCE")/../eessi_environment_variables # Provide a clean MODULEPATH export MODULEPATH_ROOT=$EESSI_MODULEPATH -export MODULEPATH=$EESSI_EXTEND_MODULEPATH:$EESSI_MODULEPATH +export MODULEPATH=$EESSI_USER_MODULEPATH:$EESSI_SITE_MODULEPATH:$EESSI_MODULEPATH # Extensions are too many, let's not print them by default (requires Lmod 8.4.12) export LMOD_AVAIL_EXTENSIONS=no diff --git a/init/bash b/init/bash index bf8ada4fd2..76c1e9154a 100644 --- a/init/bash +++ b/init/bash @@ -26,8 +26,10 @@ if [ $? -eq 0 ]; then # prepend location of modules for EESSI software stack to $MODULEPATH echo "Prepending $EESSI_MODULEPATH to \$MODULEPATH..." >> $output module use $EESSI_MODULEPATH - echo "Prepending $EESSI_EXTEND_MODULEPATH to \$MODULEPATH..." >> $output - module use $EESSI_EXTEND_MODULEPATH + echo "Prepending site path $EESSI_SITE_MODULEPATH to \$MODULEPATH..." >> $output + module use $EESSI_SITE_MODULEPATH + echo "Prepending user path $EESSI_SITE_MODULEPATH to \$MODULEPATH..." >> $output + module use $EESSI_USER_MODULEPATH #echo >> $output #echo "*** Known problems in the ${EESSI_PILOT_VERSION} pilot software stack ***" >> $output diff --git a/init/eessi_environment_variables b/init/eessi_environment_variables index 7b4f82bbd3..656fbc6637 100644 --- a/init/eessi_environment_variables +++ b/init/eessi_environment_variables @@ -60,8 +60,10 @@ if [ -d $EESSI_PREFIX ]; then if [ -d $EESSI_MODULEPATH ]; then export EESSI_MODULEPATH=$EESSI_MODULEPATH echo "Using ${EESSI_MODULEPATH} as the directory to be added to MODULEPATH." >> $output - export EESSI_EXTEND_MODULEPATH=${EESSI_MODULEPATH/versions/host_injections} - echo "Using ${EESSI_EXTEND_MODULEPATH} as the extension directory to be added to MODULEPATH." >> $output + export EESSI_SITE_MODULEPATH=${EESSI_MODULEPATH/versions/host_injections} + echo "Using ${EESSI_SITE_MODULEPATH} as the site extension directory to be added to MODULEPATH." >> $output + export EESSI_USER_MODULEPATH=${EESSI_MODULEPATH/${EESSI_CVMFS_REPO}/${HOME}\/eessi} + echo "Using ${EESSI_USER_MODULEPATH} as the user extension directory to be added to MODULEPATH." >> $output else error "EESSI module path at $EESSI_MODULEPATH not found!" false From 60cb5dc90187b8b8506933a74cc51e07b67cfe0a Mon Sep 17 00:00:00 2001 From: ocaisa Date: Tue, 7 Nov 2023 13:15:20 +0100 Subject: [PATCH 004/203] Update EESSI-extend-2023.06-easybuild.eb --- EESSI-extend-2023.06-easybuild.eb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EESSI-extend-2023.06-easybuild.eb b/EESSI-extend-2023.06-easybuild.eb index fd9f897326..ce55f619fb 100644 --- a/EESSI-extend-2023.06-easybuild.eb +++ b/EESSI-extend-2023.06-easybuild.eb @@ -30,7 +30,7 @@ checksums = ['8ae609f99b6953beae89aa1945913686c86c156509dbc55e2b6b8017b13fcf66'] prepend_to_path = None # All the dependencies we filter in EESSI -local_deps_to_filter = "Autoconf,Automake,Autotools,binutils,bzip2,DBus,flex,gettext,gperf,help2man,intltool,libreadline,libtool,Lua,M4,makeinfo,ncurses,util-linux,XZ,zlib" +local_deps_to_filter = "Autoconf,Automake,Autotools,binutils,bzip2,DBus,flex,gettext,gperf,help2man,intltool,libreadline,libtool,M4,makeinfo,ncurses,util-linux,XZ,zlib" local_arch_specific_deps_to_filter = {'aarch64': ',yasm', 'x86_64': ''} local_deps_to_filter += local_arch_specific_deps_to_filter[ARCH] From 8fe3892e8bb41a8054bd8cfeea34e96888235db3 Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Tue, 7 Nov 2023 13:48:53 +0100 Subject: [PATCH 005/203] Escape hyphen for gsub --- EESSI-extend-2023.06-easybuild.eb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/EESSI-extend-2023.06-easybuild.eb b/EESSI-extend-2023.06-easybuild.eb index ce55f619fb..8993c63cc3 100644 --- a/EESSI-extend-2023.06-easybuild.eb +++ b/EESSI-extend-2023.06-easybuild.eb @@ -69,7 +69,8 @@ if (os.getenv("EESSI_CVMFS_INSTALL") ~= nil) then elseif (os.getenv("EESSI_SITE_INSTALL") ~= nil) then easybuild_installpath = string.gsub(os.getenv("EESSI_SOFTWARE_PATH"), 'versions', 'host_injections') else - easybuild_installpath = string.gsub(os.getenv("EESSI_SOFTWARE_PATH"), os.getenv("EESSI_CVMFS_REPO"), pathJoin(os.getenv("HOME"), "eessi")) + -- Would have liked to use os.getenv("EESSI_CVMFS_REPO") here but the hypen needs to be escaped + easybuild_installpath = string.gsub(os.getenv("EESSI_SOFTWARE_PATH"), "/cvmfs/pilot.eessi%-hpc.org", pathJoin(os.getenv("HOME"), "eessi")) end if (mode() == "load") then LmodMessage("-- To create installations for EESSI, you _must_ have write permissions to " .. easybuild_installpath) From fdf0d9a1ee712f2d46eaeaaf6614eb15846441d7 Mon Sep 17 00:00:00 2001 From: hugo meiland Date: Wed, 10 Jan 2024 17:18:22 +0100 Subject: [PATCH 006/203] add zen4 / AMD Genoa --- init/arch_specs/eessi_arch_x86.spec | 7 ++--- .../x86_64/amd/zen4/Azure-Alma8-9V33X.cpuinfo | 27 +++++++++++++++++++ .../x86_64/amd/zen4/Azure-Alma8-9V33X.output | 1 + .../x86_64/amd/zen4/Shinx-RHEL8-9654.cpuinfo | 27 +++++++++++++++++++ .../x86_64/amd/zen4/Shinx-RHEL8-9654.output | 1 + 5 files changed, 60 insertions(+), 3 deletions(-) create mode 100644 tests/archdetect/x86_64/amd/zen4/Azure-Alma8-9V33X.cpuinfo create mode 100644 tests/archdetect/x86_64/amd/zen4/Azure-Alma8-9V33X.output create mode 100644 tests/archdetect/x86_64/amd/zen4/Shinx-RHEL8-9654.cpuinfo create mode 100644 tests/archdetect/x86_64/amd/zen4/Shinx-RHEL8-9654.output diff --git a/init/arch_specs/eessi_arch_x86.spec b/init/arch_specs/eessi_arch_x86.spec index 8d01cb0c03..bfbc5b4be1 100755 --- a/init/arch_specs/eessi_arch_x86.spec +++ b/init/arch_specs/eessi_arch_x86.spec @@ -1,6 +1,7 @@ # x86_64 CPU architecture specifications # Software path in EESSI | Vendor ID | List of defining CPU features -"x86_64/intel/haswell" "GenuineIntel" "avx2 fma" # Intel Haswell, Broadwell +"x86_64/intel/haswell" "GenuineIntel" "avx2 fma" # Intel Haswell, Broadwell "x86_64/intel/skylake_avx512" "GenuineIntel" "avx2 fma avx512f avx512bw avx512cd avx512dq avx512vl" # Intel Skylake, Cascade Lake -"x86_64/amd/zen2" "AuthenticAMD" "avx2 fma" # AMD Rome -"x86_64/amd/zen3" "AuthenticAMD" "avx2 fma vaes" # AMD Milan, Milan-X +"x86_64/amd/zen2" "AuthenticAMD" "avx2 fma" # AMD Rome +"x86_64/amd/zen3" "AuthenticAMD" "avx2 fma vaes" # AMD Milan, Milan-X +"x86_64/amd/zen4" "AuthenticAMD" "avx2 fma vaes avx512f avx512ifma" # AMD Genoa, Genoa-X diff --git a/tests/archdetect/x86_64/amd/zen4/Azure-Alma8-9V33X.cpuinfo b/tests/archdetect/x86_64/amd/zen4/Azure-Alma8-9V33X.cpuinfo new file mode 100644 index 0000000000..4a97da862c --- /dev/null +++ b/tests/archdetect/x86_64/amd/zen4/Azure-Alma8-9V33X.cpuinfo @@ -0,0 +1,27 @@ +processor : 0 +vendor_id : AuthenticAMD +cpu family : 25 +model : 17 +model name : AMD EPYC 9V33X 96-Core Processor +stepping : 1 +microcode : 0xffffffff +cpu MHz : 3705.853 +cache size : 1024 KB +physical id : 0 +siblings : 88 +core id : 0 +cpu cores : 88 +apicid : 0 +initial apicid : 0 +fpu : yes +fpu_exception : yes +cpuid level : 13 +wp : yes +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl tsc_reliable nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy svm cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext perfctr_core invpcid_single vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves avx512_bf16 clzero xsaveerptr arat npt nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold v_vmsave_vmload avx512vbmi umip avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid fsrm +bugs : sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass +bogomips : 5100.08 +TLB size : 3584 4K pages +clflush size : 64 +cache_alignment : 64 +address sizes : 48 bits physical, 48 bits virtual +power management: diff --git a/tests/archdetect/x86_64/amd/zen4/Azure-Alma8-9V33X.output b/tests/archdetect/x86_64/amd/zen4/Azure-Alma8-9V33X.output new file mode 100644 index 0000000000..950740a78c --- /dev/null +++ b/tests/archdetect/x86_64/amd/zen4/Azure-Alma8-9V33X.output @@ -0,0 +1 @@ +x86_64/amd/zen4 diff --git a/tests/archdetect/x86_64/amd/zen4/Shinx-RHEL8-9654.cpuinfo b/tests/archdetect/x86_64/amd/zen4/Shinx-RHEL8-9654.cpuinfo new file mode 100644 index 0000000000..f28381d7a2 --- /dev/null +++ b/tests/archdetect/x86_64/amd/zen4/Shinx-RHEL8-9654.cpuinfo @@ -0,0 +1,27 @@ +processor : 0 +vendor_id : AuthenticAMD +cpu family : 25 +model : 17 +model name : AMD EPYC 9654 96-Core Processor +stepping : 1 +microcode : 0xa10113e +cpu MHz : 3699.993 +cache size : 1024 KB +physical id : 0 +siblings : 96 +core id : 0 +cpu cores : 96 +apicid : 0 +initial apicid : 0 +fpu : yes +fpu_exception : yes +cpuid level : 16 +wp : yes +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 invpcid_single hw_pstate ssbd mba perfmon_v2 ibrs ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq rdseed adx avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local avx512_bf16 clzero irperf xsaveerptr wbnoinvd amd_ppin cppc arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif v_spec_ctrl avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq la57 rdpid overflow_recov succor smca fsrm flush_l1d +bugs : sysret_ss_attrs spectre_v1 spectre_v2 spec_store_bypass +bogomips : 4799.99 +TLB size : 3584 4K pages +clflush size : 64 +cache_alignment : 64 +address sizes : 52 bits physical, 57 bits virtual +power management: ts ttp tm hwpstate cpb eff_freq_ro [13] [14] diff --git a/tests/archdetect/x86_64/amd/zen4/Shinx-RHEL8-9654.output b/tests/archdetect/x86_64/amd/zen4/Shinx-RHEL8-9654.output new file mode 100644 index 0000000000..950740a78c --- /dev/null +++ b/tests/archdetect/x86_64/amd/zen4/Shinx-RHEL8-9654.output @@ -0,0 +1 @@ +x86_64/amd/zen4 From 1ee221bdbfe0ae6015ca3765a8e23b0760a2323f Mon Sep 17 00:00:00 2001 From: hugo meiland Date: Wed, 10 Jan 2024 17:24:21 +0100 Subject: [PATCH 007/203] add all.output tests --- tests/archdetect/x86_64/amd/zen4/Azure-Alma8-9V33X.all.output | 1 + tests/archdetect/x86_64/amd/zen4/Shinx-RHEL8-9654.all.output | 1 + 2 files changed, 2 insertions(+) create mode 100644 tests/archdetect/x86_64/amd/zen4/Azure-Alma8-9V33X.all.output create mode 100644 tests/archdetect/x86_64/amd/zen4/Shinx-RHEL8-9654.all.output diff --git a/tests/archdetect/x86_64/amd/zen4/Azure-Alma8-9V33X.all.output b/tests/archdetect/x86_64/amd/zen4/Azure-Alma8-9V33X.all.output new file mode 100644 index 0000000000..e1bbd79e4a --- /dev/null +++ b/tests/archdetect/x86_64/amd/zen4/Azure-Alma8-9V33X.all.output @@ -0,0 +1 @@ +x86_64/amd/zen4:x86_64/amd/zen3:x86_64/amd/zen2:x86_64/generic diff --git a/tests/archdetect/x86_64/amd/zen4/Shinx-RHEL8-9654.all.output b/tests/archdetect/x86_64/amd/zen4/Shinx-RHEL8-9654.all.output new file mode 100644 index 0000000000..e1bbd79e4a --- /dev/null +++ b/tests/archdetect/x86_64/amd/zen4/Shinx-RHEL8-9654.all.output @@ -0,0 +1 @@ +x86_64/amd/zen4:x86_64/amd/zen3:x86_64/amd/zen2:x86_64/generic From 680e7b91836c33caeb1c2c493f0589d4b5a73219 Mon Sep 17 00:00:00 2001 From: hugo meiland Date: Wed, 10 Jan 2024 17:28:59 +0100 Subject: [PATCH 008/203] adding zen4 checks --- .github/workflows/tests_archdetect.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/tests_archdetect.yml b/.github/workflows/tests_archdetect.yml index 37338693c5..d1407637e0 100644 --- a/.github/workflows/tests_archdetect.yml +++ b/.github/workflows/tests_archdetect.yml @@ -13,6 +13,8 @@ jobs: - x86_64/intel/skylake_avx512/archspec-linux-6132 - x86_64/amd/zen2/Azure-CentOS7-7V12 - x86_64/amd/zen3/Azure-CentOS7-7V73X + - x86_64/amd/zen4/Azure-Alma8-9V33X + - x86_64/amd/zen4/Shinx-RHEL8-9654 - ppc64le/power9le/unknown-power9le - aarch64/neoverse_n1/Azure-Ubuntu20-Altra - aarch64/neoverse_n1/AWS-awslinux-graviton2 From 7070c047ebf57918dd0ae19c11ade011e99cefff Mon Sep 17 00:00:00 2001 From: hugo meiland Date: Wed, 10 Jan 2024 18:00:17 +0100 Subject: [PATCH 009/203] commenting out power to prevent conflict --- .github/workflows/tests_archdetect.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests_archdetect.yml b/.github/workflows/tests_archdetect.yml index d1407637e0..45e8dd2e60 100644 --- a/.github/workflows/tests_archdetect.yml +++ b/.github/workflows/tests_archdetect.yml @@ -15,10 +15,10 @@ jobs: - x86_64/amd/zen3/Azure-CentOS7-7V73X - x86_64/amd/zen4/Azure-Alma8-9V33X - x86_64/amd/zen4/Shinx-RHEL8-9654 - - ppc64le/power9le/unknown-power9le - aarch64/neoverse_n1/Azure-Ubuntu20-Altra - aarch64/neoverse_n1/AWS-awslinux-graviton2 - aarch64/neoverse_v1/AWS-awslinux-graviton3 + # - ppc64le/power9le/unknown-power9le fail-fast: false steps: - name: checkout From ad70b6b0857f6e3508a73c4675795de30f6b40eb Mon Sep 17 00:00:00 2001 From: hugo meiland Date: Wed, 10 Jan 2024 19:27:14 +0100 Subject: [PATCH 010/203] commenting out power9 to prevent conflict --- .github/workflows/tests_archdetect.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/tests_archdetect.yml b/.github/workflows/tests_archdetect.yml index 45e8dd2e60..68d25250ca 100644 --- a/.github/workflows/tests_archdetect.yml +++ b/.github/workflows/tests_archdetect.yml @@ -18,6 +18,8 @@ jobs: - aarch64/neoverse_n1/Azure-Ubuntu20-Altra - aarch64/neoverse_n1/AWS-awslinux-graviton2 - aarch64/neoverse_v1/AWS-awslinux-graviton3 + # commented out since these targets are currently not supported in software.eessi.io repo + # (and some tests assume that the corresponding subdirectory in software layer is there) # - ppc64le/power9le/unknown-power9le fail-fast: false steps: From fd3103e1f75157edffcf16023ef4fb6431c6b5eb Mon Sep 17 00:00:00 2001 From: hugo meiland Date: Wed, 10 Jan 2024 20:15:18 +0100 Subject: [PATCH 011/203] move to software.eessi.io --- .github/workflows/test_eessi.yml | 14 +++++++------- .github/workflows/test_eessi_container_script.yml | 12 ++++++------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/test_eessi.yml b/.github/workflows/test_eessi.yml index 04195dd619..7c96b091d2 100644 --- a/.github/workflows/test_eessi.yml +++ b/.github/workflows/test_eessi.yml @@ -10,7 +10,7 @@ jobs: fail-fast: false matrix: EESSI_VERSION: - - 2021.12 + - 2023.06 EESSI_SOFTWARE_SUBDIR: - aarch64/generic - aarch64/graviton2 @@ -24,19 +24,19 @@ jobs: - name: Check out software-layer repository uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # v3.1.0 - - name: Mount EESSI CernVM-FS pilot repository + - name: Mount EESSI CernVM-FS software repository uses: cvmfs-contrib/github-action-cvmfs@d4641d0d591c9a5c3be23835ced2fb648b44c04b # v3.1 with: cvmfs_config_package: https://github.com/EESSI/filesystem-layer/releases/download/latest/cvmfs-config-eessi_latest_all.deb cvmfs_http_proxy: DIRECT - cvmfs_repositories: pilot.eessi-hpc.org + cvmfs_repositories: software.eessi.io - name: Test check_missing_installations.sh script run: | - source /cvmfs/pilot.eessi-hpc.org/versions/${{matrix.EESSI_VERSION}}/init/bash + source /cvmfs/software.eessi.io/versions/${{matrix.EESSI_VERSION}}/init/bash module load EasyBuild eb --version - export EESSI_PREFIX=/cvmfs/pilot.eessi-hpc.org/versions/${{matrix.EESSI_VERSION}} + export EESSI_PREFIX=/cvmfs/software.eessi.io/versions/${{matrix.EESSI_VERSION}} export EESSI_OS_TYPE=linux export EESSI_SOFTWARE_SUBDIR=${{matrix.EESSI_SOFTWARE_SUBDIR}} env | grep ^EESSI | sort @@ -45,10 +45,10 @@ jobs: - name: Test check_missing_installations.sh with missing package (GCC/8.3.0) run: | - source /cvmfs/pilot.eessi-hpc.org/versions/${{matrix.EESSI_VERSION}}/init/bash + source /cvmfs/software.eessi.io/versions/${{matrix.EESSI_VERSION}}/init/bash module load EasyBuild eb --version - export EESSI_PREFIX=/cvmfs/pilot.eessi-hpc.org/versions/${{matrix.EESSI_VERSION}} + export EESSI_PREFIX=/cvmfs/software.eessi.io/versions/${{matrix.EESSI_VERSION}} export EESSI_OS_TYPE=linux export EESSI_SOFTWARE_SUBDIR=${{matrix.EESSI_SOFTWARE_SUBDIR}} env | grep ^EESSI | sort diff --git a/.github/workflows/test_eessi_container_script.yml b/.github/workflows/test_eessi_container_script.yml index 929fb22cec..590aa4225b 100644 --- a/.github/workflows/test_eessi_container_script.yml +++ b/.github/workflows/test_eessi_container_script.yml @@ -90,15 +90,15 @@ jobs: elif [[ ${{matrix.SCRIPT_TEST}} == 'readwrite' ]]; then outfile=out_readwrite.txt fn="test_${RANDOM}.txt" - echo "touch /cvmfs/pilot.eessi-hpc.org/${fn}" > test_script.sh + echo "touch /cvmfs/software.eessi.io/${fn}" > test_script.sh chmod u+x test_script.sh export SINGULARITY_BIND="$PWD:/test" ./eessi_container.sh --verbose --access rw --mode run /test/test_script.sh > ${outfile} tmpdir=$(grep "\-\-resume" ${outfile} | sed "s/.*--resume \([^']*\).*/\1/g") # note: must use '--access rw' again here, since touched file is in overlay upper dir - ./eessi_container.sh --verbose --resume ${tmpdir} --access rw --mode shell <<< "ls -l /cvmfs/pilot.eessi-hpc.org/${fn}" > ${outfile} - grep "/cvmfs/pilot.eessi-hpc.org/${fn}$" $outfile + ./eessi_container.sh --verbose --resume ${tmpdir} --access rw --mode shell <<< "ls -l /cvmfs/software.eessi.io/${fn}" > ${outfile} + grep "/cvmfs/software.eessi.io/${fn}$" $outfile # test use of --resume elif [[ ${{matrix.SCRIPT_TEST}} == 'resume' ]]; then @@ -120,12 +120,12 @@ jobs: elif [[ ${{matrix.SCRIPT_TEST}} == 'save' ]]; then outfile=out_save.txt fn="test_${RANDOM}.txt" - test_cmd="touch /cvmfs/pilot.eessi-hpc.org/${fn}" + test_cmd="touch /cvmfs/software.eessi.io/${fn}" ./eessi_container.sh --verbose --mode shell --access rw --save test-save.tar <<< "${test_cmd}" 2>&1 | tee ${outfile} rm -f ${outfile} - ./eessi_container.sh --verbose --mode shell --access rw --resume test-save.tar <<< "ls -l /cvmfs/pilot.eessi-hpc.org/${fn}" > ${outfile} - grep "/cvmfs/pilot.eessi-hpc.org/${fn}$" $outfile + ./eessi_container.sh --verbose --mode shell --access rw --resume test-save.tar <<< "ls -l /cvmfs/software.eessi.io/${fn}" > ${outfile} + grep "/cvmfs/software.eessi.io/${fn}$" $outfile tar tfv test-save.tar | grep "overlay-upper/${fn}" From a13bce84ca477c9d866ad722993252aad924d5fd Mon Sep 17 00:00:00 2001 From: hugo meiland Date: Wed, 10 Jan 2024 20:20:48 +0100 Subject: [PATCH 012/203] move from pilot to software --- .github/workflows/tests_readme.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests_readme.yml b/.github/workflows/tests_readme.yml index 5c6d0318d4..034dae3780 100644 --- a/.github/workflows/tests_readme.yml +++ b/.github/workflows/tests_readme.yml @@ -24,7 +24,7 @@ jobs: - name: verify if README.md is consistent with EESSI_PILOT_VERSION from init/eessi_defaults run: | source init/eessi_defaults - grep "${EESSI_PILOT_VERSION}" README.md + grep "${EESSI_VERSION}" README.md - name: verify if README.md is consistent with EESSI_CVMFS_REPO from init/eessi_defaults run: | From 473a5b52b960881f2b4371978279976b9a8bccae Mon Sep 17 00:00:00 2001 From: hugo meiland Date: Thu, 11 Jan 2024 03:51:20 +0100 Subject: [PATCH 013/203] move EESSI action to v3 --- .github/workflows/tests_archdetect.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/tests_archdetect.yml b/.github/workflows/tests_archdetect.yml index 68d25250ca..f09567d125 100644 --- a/.github/workflows/tests_archdetect.yml +++ b/.github/workflows/tests_archdetect.yml @@ -26,7 +26,8 @@ jobs: - name: checkout uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # v3.1.0 - name: Enable EESSI - uses: eessi/github-action-eessi@58b50fd2eead2162c2b9ac258d4fb60cc9f30503 # v2.0.13 + #uses: eessi/github-action-eessi@58b50fd2eead2162c2b9ac258d4fb60cc9f30503 # v2.0.13 + uses: eessi/github-action-eessi@v3 - name: test eessi_archdetect.sh run: | export EESSI_MACHINE_TYPE=${{matrix.proc_cpuinfo}} From 807d78471ad4104d0ff3f590dbc697d6cd2a3968 Mon Sep 17 00:00:00 2001 From: hugo meiland Date: Mon, 15 Jan 2024 11:27:42 +0100 Subject: [PATCH 014/203] fix upstream merge --- .github/workflows/test_eessi.yml | 72 -------------------------------- 1 file changed, 72 deletions(-) delete mode 100644 .github/workflows/test_eessi.yml diff --git a/.github/workflows/test_eessi.yml b/.github/workflows/test_eessi.yml deleted file mode 100644 index 7c96b091d2..0000000000 --- a/.github/workflows/test_eessi.yml +++ /dev/null @@ -1,72 +0,0 @@ -# documentation: https://help.github.com/en/articles/workflow-syntax-for-github-actions -name: Tests relying on having EESSI pilot repo mounted -on: [push, pull_request, workflow_dispatch] -permissions: - contents: read # to fetch code (actions/checkout) -jobs: - eessi_pilot_repo: - runs-on: ubuntu-20.04 - strategy: - fail-fast: false - matrix: - EESSI_VERSION: - - 2023.06 - EESSI_SOFTWARE_SUBDIR: - - aarch64/generic - - aarch64/graviton2 - - aarch64/graviton3 - - x86_64/amd/zen2 - - x86_64/amd/zen3 - - x86_64/intel/haswell - - x86_64/intel/skylake_avx512 - - x86_64/generic - steps: - - name: Check out software-layer repository - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # v3.1.0 - - - name: Mount EESSI CernVM-FS software repository - uses: cvmfs-contrib/github-action-cvmfs@d4641d0d591c9a5c3be23835ced2fb648b44c04b # v3.1 - with: - cvmfs_config_package: https://github.com/EESSI/filesystem-layer/releases/download/latest/cvmfs-config-eessi_latest_all.deb - cvmfs_http_proxy: DIRECT - cvmfs_repositories: software.eessi.io - - - name: Test check_missing_installations.sh script - run: | - source /cvmfs/software.eessi.io/versions/${{matrix.EESSI_VERSION}}/init/bash - module load EasyBuild - eb --version - export EESSI_PREFIX=/cvmfs/software.eessi.io/versions/${{matrix.EESSI_VERSION}} - export EESSI_OS_TYPE=linux - export EESSI_SOFTWARE_SUBDIR=${{matrix.EESSI_SOFTWARE_SUBDIR}} - env | grep ^EESSI | sort - echo "just run check_missing_installations.sh (should use eessi-${{matrix.EESSI_VERSION}}.yml)" - ./check_missing_installations.sh - - - name: Test check_missing_installations.sh with missing package (GCC/8.3.0) - run: | - source /cvmfs/software.eessi.io/versions/${{matrix.EESSI_VERSION}}/init/bash - module load EasyBuild - eb --version - export EESSI_PREFIX=/cvmfs/software.eessi.io/versions/${{matrix.EESSI_VERSION}} - export EESSI_OS_TYPE=linux - export EESSI_SOFTWARE_SUBDIR=${{matrix.EESSI_SOFTWARE_SUBDIR}} - env | grep ^EESSI | sort - echo "modify eessi-${{matrix.EESSI_VERSION}}.yml by adding a missing package (GCC/8.3.0)" - echo " GCC:" >> eessi-${{matrix.EESSI_VERSION}}.yml - echo " toolchains:" >> eessi-${{matrix.EESSI_VERSION}}.yml - echo " SYSTEM:" >> eessi-${{matrix.EESSI_VERSION}}.yml - echo " versions: '8.3.0'" >> eessi-${{matrix.EESSI_VERSION}}.yml - tail -n 4 eessi-${{matrix.EESSI_VERSION}}.yml - # note, check_missing_installations.sh exits 1 if a package was - # missing, which is intepreted as false (exit code based, not - # boolean logic), hence when the script exits 0 if no package was - # missing it is interpreted as true, thus the test did not capture - # the missing package - if ./check_missing_installations.sh; then - echo "did NOT capture missing package; test FAILED" - exit 1 - else - echo "captured missing package; test PASSED" - exit 0 - fi From 743860fc06d5be09e9b15d62514f91ac2fb4aebc Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Wed, 13 Mar 2024 11:29:07 +0100 Subject: [PATCH 015/203] {2023.06}[foss/2023b] GROMACS 2024.1 --- .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023b.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023b.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023b.yml index e2d35276df..f906811a73 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023b.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023b.yml @@ -49,3 +49,6 @@ easyconfigs: - libspatialindex-1.9.3-GCCcore-13.2.0.eb: options: from-pr: 19922 + - GROMACS-2024.1-foss-2023b.eb: + options: + from-pr: 20102 From 70d94a1361eaa02a8dea4c64495480f0a4cc6910 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Sat, 30 Mar 2024 22:58:48 +0100 Subject: [PATCH 016/203] add R-bundle-Bioconductor-3.16-foss-2022b-R-4.2.2.eb --- .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2022b.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2022b.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2022b.yml index 3962f63bda..8a3e82d760 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2022b.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2022b.yml @@ -11,3 +11,4 @@ easyconfigs: - R-4.2.2-foss-2022b.eb: options: from-pr: 20238 + - R-bundle-Bioconductor-3.16-foss-2022b-R-4.2.2.eb From 3ccecf97e9008ddf98640d3a0ab970607c5b5779 Mon Sep 17 00:00:00 2001 From: Caspar van Leeuwen Date: Wed, 3 Apr 2024 12:58:22 +0200 Subject: [PATCH 017/203] Add possibility to ignore certain hooks on local modules. E.g. we don't want to be prevented from loading local CUDA modules because of the EESSI hook. See https://github.com/EESSI/software-layer/issues/523 --- create_lmodsitepackage.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/create_lmodsitepackage.py b/create_lmodsitepackage.py index 29b2d39bd7..ffbe7a1531 100755 --- a/create_lmodsitepackage.py +++ b/create_lmodsitepackage.py @@ -19,6 +19,18 @@ return content end +local function from_eessi_prefix(t) + local eessi_prefix = os.getenv("EESSI_PREFIX") + -- If EESSI_PREFIX wasn't defined, we cannot check if this module was from the EESSI environment + -- In that case, we assume it isn't, otherwise EESSI_PREFIX would (probably) have been set + if eessi_prefix == nil then + return False + else + -- Check if the full modulepath starts with the eessi_prefix + return t.fn:find( "^" .. eessi_prefix) ~= nil + end +end + local function load_site_specific_hooks() -- This function will be run after the EESSI hooks are registered -- It will load a local SitePackage.lua that is architecture independent (if it exists) from e.g. @@ -152,10 +164,13 @@ -- Combine both functions into a single one, as we can only register one function as load hook in lmod -- Also: make it non-local, so it can be imported and extended by other lmodrc files if needed function eessi_load_hook(t) - eessi_cuda_enabled_load_hook(t) + -- Only apply CUDA hooks if the loaded module is in the EESSI prefix + -- This avoids getting an Lmod Error when trying to load a CUDA module from a local software stack + if from_eessi_prefix(t) then + eessi_cuda_enabled_load_hook(t) + end end - hook.register("load", eessi_load_hook) -- Note that this needs to happen at the end, so that any EESSI specific hooks can be overwritten by the site From bb20ab2078b25041011f242673a848b199aedb74 Mon Sep 17 00:00:00 2001 From: Caspar van Leeuwen Date: Wed, 3 Apr 2024 16:36:39 +0200 Subject: [PATCH 018/203] Also use hooks for site extensions in host_injections AND for user extensions in /home/casparl/eessi/... --- create_lmodsitepackage.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/create_lmodsitepackage.py b/create_lmodsitepackage.py index ffbe7a1531..f7d4d06bb9 100755 --- a/create_lmodsitepackage.py +++ b/create_lmodsitepackage.py @@ -20,14 +20,24 @@ end local function from_eessi_prefix(t) + -- eessi_prefix is the prefix with official EESSI modules + -- e.g. /cvmfs/software.eessi.io/versions/2023.06 local eessi_prefix = os.getenv("EESSI_PREFIX") + -- eessi_prefix_host_injections is the prefix with site-extensions (i.e. additional modules) + -- to the official EESSI modules, e.g. /cvmfs/software.eessi.io/host_injections/2023.06 + local eessi_prefix_host_injections = string.gsub(eessi_prefix, 'versions', 'host_injections') + -- eessi_prefix_user_home is the prefix with user-extensions (i.e. additional modules) + -- to the offocial EESSI modules, e.g. $HOME/eessi/versions/2023.06 + local eessi_prefix_user_home = string.gsub(eessi_prefix, os.getenv("EESSI_CVMFS_REPO"), pathJoin(os.getenv("HOME"), "eessi")) -- If EESSI_PREFIX wasn't defined, we cannot check if this module was from the EESSI environment -- In that case, we assume it isn't, otherwise EESSI_PREFIX would (probably) have been set if eessi_prefix == nil then return False else - -- Check if the full modulepath starts with the eessi_prefix - return t.fn:find( "^" .. eessi_prefix) ~= nil + -- Check if the full modulepath starts with the eessi_prefix_* + return string.find(t.fn, "^" .. eessi_prefix) ~= nil or + string.find(t.fn, "^" .. eessi_prefix_host_injections) ~= nil or + string.find(t.fn, "^" .. eessi_prefix_user_home) ~= nil end end From 838920bd332819b1e50706873ee53f2469cf3794 Mon Sep 17 00:00:00 2001 From: Caspar van Leeuwen Date: Wed, 3 Apr 2024 16:38:24 +0200 Subject: [PATCH 019/203] Leave breadcrumb to notify that paths may need to be changed in the future --- create_lmodsitepackage.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/create_lmodsitepackage.py b/create_lmodsitepackage.py index f7d4d06bb9..ce94a7e311 100755 --- a/create_lmodsitepackage.py +++ b/create_lmodsitepackage.py @@ -23,6 +23,10 @@ -- eessi_prefix is the prefix with official EESSI modules -- e.g. /cvmfs/software.eessi.io/versions/2023.06 local eessi_prefix = os.getenv("EESSI_PREFIX") + + -- NOTE: exact paths for site and user extensions aren't final, so may need to be updated later. + -- See https://github.com/EESSI/software-layer/pull/371 + -- eessi_prefix_host_injections is the prefix with site-extensions (i.e. additional modules) -- to the official EESSI modules, e.g. /cvmfs/software.eessi.io/host_injections/2023.06 local eessi_prefix_host_injections = string.gsub(eessi_prefix, 'versions', 'host_injections') From 145706e751ea7a73202676894cd58be65bea97d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 5 Apr 2024 11:53:36 +0200 Subject: [PATCH 020/203] add R-bundle-Bioconductor-3.18-foss-2023a-R-4.3.2.eb --- .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml index ad3cfddfb6..2dadc5ab28 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml @@ -57,3 +57,4 @@ easyconfigs: - Highway-1.0.4-GCCcore-12.3.0.eb - ELPA-2023.05.001-foss-2023a.eb - libxc-6.2.2-GCC-12.3.0.eb + - R-bundle-Bioconductor-3.18-foss-2023a-R-4.3.2.eb From cef7a277ac4092f8ff1256290ad6bb8b244c2443 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 5 Apr 2024 13:03:35 +0200 Subject: [PATCH 021/203] add from-pr to bioconductor --- .../2023.06/eessi-2023.06-eb-4.9.0-2023a.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml index facd4230ab..60b9600589 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml @@ -67,4 +67,6 @@ easyconfigs: - MODFLOW-6.4.4-foss-2023a.eb: options: from-pr: 20142 - - R-bundle-Bioconductor-3.18-foss-2023a-R-4.3.2.eb + - R-bundle-Bioconductor-3.18-foss-2023a-R-4.3.2.eb: + options: + from-pr: 19949 From 3745adee2c09aa73d44c7b693baca3ac4c96e70c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Mon, 8 Apr 2024 13:52:36 +0200 Subject: [PATCH 022/203] use pr 20316 for Bioconductor --- .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml index d3ac5f1c5b..bfc408e045 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml @@ -73,4 +73,4 @@ easyconfigs: from-pr: 20238 - R-bundle-Bioconductor-3.18-foss-2023a-R-4.3.2.eb: options: - from-pr: 19949 + from-pr: 20316 From 03b708fe7af1fc1aa330bf17bdf3f25a601f093e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Mon, 8 Apr 2024 13:54:13 +0200 Subject: [PATCH 023/203] use PR 20316 for Bioconductor --- .../2023.06/eessi-2023.06-eb-4.9.0-2022b.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2022b.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2022b.yml index 8a3e82d760..da89e01a51 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2022b.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2022b.yml @@ -11,4 +11,6 @@ easyconfigs: - R-4.2.2-foss-2022b.eb: options: from-pr: 20238 - - R-bundle-Bioconductor-3.16-foss-2022b-R-4.2.2.eb + - R-bundle-Bioconductor-3.16-foss-2022b-R-4.2.2.eb: + options: + from-pr: 20316 From 1998a7cfe2904e1b8dacdba4d6eca1fe67eb6354 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Mon, 8 Apr 2024 15:16:08 +0200 Subject: [PATCH 024/203] add EB 4.9.1 --- .../2023.06/eessi-2023.06-eb-4.9.1-001-system.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-001-system.yml diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-001-system.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-001-system.yml new file mode 100644 index 0000000000..c5a08b5209 --- /dev/null +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-001-system.yml @@ -0,0 +1,4 @@ +easyconfigs: + - EasyBuild-4.9.1.eb: + options: + from-pr: 20299 From 1910871e228de824978f00b1d995879330745dec Mon Sep 17 00:00:00 2001 From: maxim-masterov Date: Tue, 9 Apr 2024 12:12:18 +0200 Subject: [PATCH 025/203] Add fix for permissions set on Lmod SitePackage --- create_lmodsitepackage.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/create_lmodsitepackage.py b/create_lmodsitepackage.py index 29b2d39bd7..38600cb471 100755 --- a/create_lmodsitepackage.py +++ b/create_lmodsitepackage.py @@ -4,6 +4,7 @@ # import os import sys +from stat import S_IREAD, S_IWRITE, S_IRGRP, S_IWGRP, S_IROTH DOT_LMOD = '.lmod' @@ -180,6 +181,8 @@ def error(msg): os.makedirs(os.path.dirname(sitepackage_path), exist_ok=True) with open(sitepackage_path, 'w') as fp: fp.write(hook_txt) + # Make sure that the created Lmod file has "read" permissions for the "other" UNIX group + os.chmod(sitepackage_path, S_IREAD|S_IWRITE|S_IRGRP|S_IWGRP|S_IROTH) except (IOError, OSError) as err: error("Failed to create %s: %s" % (sitepackage_path, err)) From 8f656a4dced151499045dd9c1c49dc6438fb7471 Mon Sep 17 00:00:00 2001 From: Maxim Date: Wed, 10 Apr 2024 16:19:37 +0200 Subject: [PATCH 026/203] Update create_lmodsitepackage.py Co-authored-by: ocaisa --- create_lmodsitepackage.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/create_lmodsitepackage.py b/create_lmodsitepackage.py index 38600cb471..0761f2cdf1 100755 --- a/create_lmodsitepackage.py +++ b/create_lmodsitepackage.py @@ -181,7 +181,7 @@ def error(msg): os.makedirs(os.path.dirname(sitepackage_path), exist_ok=True) with open(sitepackage_path, 'w') as fp: fp.write(hook_txt) - # Make sure that the created Lmod file has "read" permissions for the "other" UNIX group + # Make sure that the created Lmod file has "read/write" for the user/group and "read" permissions for others os.chmod(sitepackage_path, S_IREAD|S_IWRITE|S_IRGRP|S_IWGRP|S_IROTH) except (IOError, OSError) as err: From 1a396e03badc537ddf901257bba7efb1cbdc8281 Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Fri, 12 Apr 2024 13:23:53 +0200 Subject: [PATCH 027/203] Ensure we use instructions introduced with ARM v8.2 for Neoverse N1 --- init/arch_specs/eessi_arch_arm.spec | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/init/arch_specs/eessi_arch_arm.spec b/init/arch_specs/eessi_arch_arm.spec index b5c9275043..1400871f93 100755 --- a/init/arch_specs/eessi_arch_arm.spec +++ b/init/arch_specs/eessi_arch_arm.spec @@ -1,6 +1,6 @@ # ARM CPU architecture specifications # Software path in EESSI | Vendor ID | List of defining CPU features -"aarch64/neoverse_n1" "ARM" "asimd" # Ampere Altra -"aarch64/neoverse_n1" "" "asimd" # AWS Graviton2 -"aarch64/neoverse_v1" "ARM" "asimd svei8mm" -"aarch64/neoverse_v1" "" "asimd svei8mm" # AWS Graviton3 +"aarch64/neoverse_n1" "ARM" "asimddp" # Ampere Altra +"aarch64/neoverse_n1" "" "asimddp" # AWS Graviton2 +"aarch64/neoverse_v1" "ARM" "asimddp svei8mm" +"aarch64/neoverse_v1" "" "asimddp svei8mm" # AWS Graviton3 From cedcf73c5da8d51d47c8d8d209cab76222e82820 Mon Sep 17 00:00:00 2001 From: ocaisa Date: Fri, 12 Apr 2024 16:19:43 +0200 Subject: [PATCH 028/203] Update eessi_arch_arm.spec --- init/arch_specs/eessi_arch_arm.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init/arch_specs/eessi_arch_arm.spec b/init/arch_specs/eessi_arch_arm.spec index 1400871f93..8c1bc34d20 100755 --- a/init/arch_specs/eessi_arch_arm.spec +++ b/init/arch_specs/eessi_arch_arm.spec @@ -1,4 +1,4 @@ -# ARM CPU architecture specifications +# ARM CPU architecture specifications (see https://gpages.juszkiewicz.com.pl/arm-socs-table/arm-socs.html for guidance) # Software path in EESSI | Vendor ID | List of defining CPU features "aarch64/neoverse_n1" "ARM" "asimddp" # Ampere Altra "aarch64/neoverse_n1" "" "asimddp" # AWS Graviton2 From 04e04a308829b49f4b925d4420363739c728a58b Mon Sep 17 00:00:00 2001 From: Caspar van Leeuwen Date: Mon, 15 Apr 2024 11:33:08 +0200 Subject: [PATCH 029/203] Added ncdu --- .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml new file mode 100644 index 0000000000..3b51db3b11 --- /dev/null +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml @@ -0,0 +1,2 @@ +easyconfigs: + - ncdu-1.18-GCC-12.3.0.eb From 8f81944b29dfb48edaf30b9466ce9edde4aa748f Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Tue, 16 Apr 2024 09:04:47 +0200 Subject: [PATCH 030/203] make sure that software directory that corresponds to $EESSI_SOFTWARE_SUBDIR_OVERRIDE exists --- EESSI-install-software.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/EESSI-install-software.sh b/EESSI-install-software.sh index 567fed8e79..91effe4aba 100755 --- a/EESSI-install-software.sh +++ b/EESSI-install-software.sh @@ -143,6 +143,8 @@ if [ -z $EESSI_SOFTWARE_SUBDIR_OVERRIDE ]; then echo ">> Determined \$EESSI_SOFTWARE_SUBDIR_OVERRIDE via 'eessi_software_subdir.py $DETECTION_PARAMETERS' script" else echo ">> Picking up pre-defined \$EESSI_SOFTWARE_SUBDIR_OVERRIDE: ${EESSI_SOFTWARE_SUBDIR_OVERRIDE}" + # make sure directory exists (since it's expected by init/eessi_environment_variables when using archdetect) + mkdir -p ${EESSI_PREFIX}/software/${EESSI_OS_TYPE}/${EESSI_SOFTWARE_SUBDIR_OVERRIDE} fi # Set all the EESSI environment variables (respecting $EESSI_SOFTWARE_SUBDIR_OVERRIDE) From 8331e4485a5734730b0929be69c3cd3c6beaa4b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Tue, 16 Apr 2024 09:30:02 +0200 Subject: [PATCH 031/203] remove build_container.sh, as we now use eessi_container.sh --- build_container.sh | 69 ---------------------------------------------- 1 file changed, 69 deletions(-) delete mode 100755 build_container.sh diff --git a/build_container.sh b/build_container.sh deleted file mode 100755 index 23a9e665c9..0000000000 --- a/build_container.sh +++ /dev/null @@ -1,69 +0,0 @@ -#!/bin/bash - -base_dir=$(dirname $(realpath $0)) - -BUILD_CONTAINER="docker://ghcr.io/eessi/build-node:debian11" - -if [ $# -lt 2 ]; then - echo "Usage: $0 " >&2 - exit 1 -fi -SHELL_OR_RUN=$1 -EESSI_TMPDIR=$2 -shift 2 - -if [ "$SHELL_OR_RUN" == "run" ] && [ $# -eq 0 ]; then - echo "ERROR: No command specified to run?!" >&2 - exit 1 -fi - -# make sure specified temporary directory exists -mkdir -p $EESSI_TMPDIR - -echo "Using $EESSI_TMPDIR as parent for temporary directories..." - -# create temporary directories -mkdir -p $EESSI_TMPDIR/{home,overlay-upper,overlay-work} -mkdir -p $EESSI_TMPDIR/{var-lib-cvmfs,var-run-cvmfs} -# configure Singularity -export SINGULARITY_CACHEDIR=$EESSI_TMPDIR/singularity_cache - -# take into account that $SINGULARITY_BIND may be defined already, to bind additional paths into the build container -BIND_PATHS="$EESSI_TMPDIR/var-run-cvmfs:/var/run/cvmfs,$EESSI_TMPDIR/var-lib-cvmfs:/var/lib/cvmfs,$EESSI_TMPDIR" -if [ -z $SINGULARITY_BIND ]; then - export SINGULARITY_BIND="$BIND_PATHS" -else - export SINGULARITY_BIND="$SINGULARITY_BIND,$BIND_PATHS" -fi - -# allow that SINGULARITY_HOME is defined before script is run -if [ -z $SINGULARITY_HOME ]; then - export SINGULARITY_HOME="$EESSI_TMPDIR/home:/home/$USER" -fi - -source ${base_dir}/init/eessi_defaults -# strip "/cvmfs/" from default setting -repo_name=${EESSI_CVMFS_REPO/\/cvmfs\//} - -# set environment variables for fuse mounts in Singularity container -export EESSI_PILOT_READONLY="container:cvmfs2 ${repo_name} /cvmfs_ro/${repo_name}" -export EESSI_PILOT_WRITABLE_OVERLAY="container:fuse-overlayfs -o lowerdir=/cvmfs_ro/${repo_name} -o upperdir=$EESSI_TMPDIR/overlay-upper -o workdir=$EESSI_TMPDIR/overlay-work ${EESSI_CVMFS_REPO}" - -# pass $EESSI_SOFTWARE_SUBDIR_OVERRIDE into build container (if set) -if [ ! -z ${EESSI_SOFTWARE_SUBDIR_OVERRIDE} ]; then - export SINGULARITYENV_EESSI_SOFTWARE_SUBDIR_OVERRIDE=${EESSI_SOFTWARE_SUBDIR_OVERRIDE} - # also specify via $APPTAINERENV_* (future proof, cfr. https://apptainer.org/docs/user/latest/singularity_compatibility.html#singularity-environment-variable-compatibility) - export APPTAINERENV_EESSI_SOFTWARE_SUBDIR_OVERRIDE=${EESSI_SOFTWARE_SUBDIR_OVERRIDE} -fi - -if [ "$SHELL_OR_RUN" == "shell" ]; then - # start shell in Singularity container, with EESSI repository mounted with writable overlay - echo "Starting Singularity build container..." - singularity shell --fusemount "$EESSI_PILOT_READONLY" --fusemount "$EESSI_PILOT_WRITABLE_OVERLAY" $BUILD_CONTAINER -elif [ "$SHELL_OR_RUN" == "run" ]; then - echo "Running '$@' in Singularity build container..." - singularity exec --fusemount "$EESSI_PILOT_READONLY" --fusemount "$EESSI_PILOT_WRITABLE_OVERLAY" $BUILD_CONTAINER "$@" -else - echo "ERROR: Unknown action specified: $SHELL_OR_RUN (should be either 'shell' or 'run')" >&2 - exit 1 -fi From a7305456f10ca0289d1cbea8b212aa7cb4fb114a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Tue, 16 Apr 2024 09:32:23 +0200 Subject: [PATCH 032/203] replace build_container.sh by eessi_container.sh --- .github/workflows/tests_scripts.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tests_scripts.yml b/.github/workflows/tests_scripts.yml index 4944d9beaa..76d19d29fe 100644 --- a/.github/workflows/tests_scripts.yml +++ b/.github/workflows/tests_scripts.yml @@ -3,9 +3,9 @@ name: Tests for scripts on: push: paths: - - build_container.sh - create_directory_tarballs.sh - create_lmodsitepackage.py + - eessi_container.sh - EESSI-install-software.sh - install_software_layer.sh - load_easybuild_module.sh @@ -15,9 +15,9 @@ on: pull_request: paths: - - build_container.sh - create_directory_tarballs.sh - create_lmodsitepackage.py + - eessi_container.sh - EESSI-install-software.sh - install_software_layer.sh - load_easybuild_module.sh From 8593e595ee382a26c8f9621dd39ccb338e937259 Mon Sep 17 00:00:00 2001 From: ocaisa Date: Thu, 18 Apr 2024 23:51:24 +0200 Subject: [PATCH 033/203] No hyphen any more so no need for lua escaping --- EESSI-extend-2023.06-easybuild.eb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/EESSI-extend-2023.06-easybuild.eb b/EESSI-extend-2023.06-easybuild.eb index 8993c63cc3..ce55f619fb 100644 --- a/EESSI-extend-2023.06-easybuild.eb +++ b/EESSI-extend-2023.06-easybuild.eb @@ -69,8 +69,7 @@ if (os.getenv("EESSI_CVMFS_INSTALL") ~= nil) then elseif (os.getenv("EESSI_SITE_INSTALL") ~= nil) then easybuild_installpath = string.gsub(os.getenv("EESSI_SOFTWARE_PATH"), 'versions', 'host_injections') else - -- Would have liked to use os.getenv("EESSI_CVMFS_REPO") here but the hypen needs to be escaped - easybuild_installpath = string.gsub(os.getenv("EESSI_SOFTWARE_PATH"), "/cvmfs/pilot.eessi%-hpc.org", pathJoin(os.getenv("HOME"), "eessi")) + easybuild_installpath = string.gsub(os.getenv("EESSI_SOFTWARE_PATH"), os.getenv("EESSI_CVMFS_REPO"), pathJoin(os.getenv("HOME"), "eessi")) end if (mode() == "load") then LmodMessage("-- To create installations for EESSI, you _must_ have write permissions to " .. easybuild_installpath) From 8e976c6a2c8fbef7751dbc3f0c434ac431db3c4d Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Fri, 19 Apr 2024 00:58:16 +0200 Subject: [PATCH 034/203] Make the hooks part of the init dir --- EESSI-extend-2023.06-easybuild.eb | 17 +++-------------- EESSI-install-software.sh | 8 ++++++++ 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/EESSI-extend-2023.06-easybuild.eb b/EESSI-extend-2023.06-easybuild.eb index ce55f619fb..6d71693db8 100644 --- a/EESSI-extend-2023.06-easybuild.eb +++ b/EESSI-extend-2023.06-easybuild.eb @@ -1,4 +1,4 @@ -easyblock = 'Binary' +easyblock = 'Bundle' name = 'EESSI-extend' version = '2023.06' @@ -22,13 +22,6 @@ description = """ toolchain = SYSTEM -source_urls = None -sources = ['eb_hooks.py'] -checksums = ['8ae609f99b6953beae89aa1945913686c86c156509dbc55e2b6b8017b13fcf66'] - -# Don't extend the PATH -prepend_to_path = None - # All the dependencies we filter in EESSI local_deps_to_filter = "Autoconf,Automake,Autotools,binutils,bzip2,DBus,flex,gettext,gperf,help2man,intltool,libreadline,libtool,M4,makeinfo,ncurses,util-linux,XZ,zlib" local_arch_specific_deps_to_filter = {'aarch64': ',yasm', 'x86_64': ''} @@ -45,12 +38,12 @@ modextravars = { 'EASYBUILD_READ_ONLY_INSTALLDIR': '1', 'EASYBUILD_MODULE_EXTENSIONS': '1', 'EASYBUILD_EXPERIMENTAL': '1', - 'EASYBUILD_HOOKS': '%(installdir)s/eb_hooks.py', } # Need a few other variables, but they are more dynamic # EASYBUILD_SYSROOT=${EPREFIX} # EASYBUILD_PREFIX=${WORKDIR}/easybuild +# EASYBUILD_HOOKS=${EESSI_PREFIX}/init/easybuild/eb_hooks.py # EASYBUILD_INSTALLPATH=${EESSI_PREFIX}/software/${EESSI_OS_TYPE}/${EESSI_SOFTWARE_SUBDIR} # EASYBUILD_SOURCEPATH=${WORKDIR}/easybuild/sources:${EESSI_SOURCEPATH} modluafooter = """ @@ -82,14 +75,10 @@ end setenv ("EASYBUILD_SYSROOT", sysroot) setenv ("EASYBUILD_PREFIX", pathJoin(working_dir, "easybuild")) setenv ("EASYBUILD_INSTALLPATH", easybuild_installpath) +setenv ("EASYBUILD_HOOKS", pathJoin(os.getenv("EESSI_PREFIX"), "init", "easybuild", "hooks.py")) if not ( isloaded("EasyBuild") ) then load("EasyBuild") end """ -sanity_check_paths = { - 'files': ['eb_hooks.py'], - 'dirs': [''] -} - moduleclass = 'devel' diff --git a/EESSI-install-software.sh b/EESSI-install-software.sh index 91effe4aba..9766c20aa1 100755 --- a/EESSI-install-software.sh +++ b/EESSI-install-software.sh @@ -264,6 +264,14 @@ fi ### add packages here +# use PR patch file to determine if the EasyBuild hooks have changed +changed_eb_hooks=$(cat ${pr_diff} | grep '^+++' | cut -f2 -d' ' | sed 's@^[a-z]/@@g' | grep '^eb_hooks.py$') +if [ -n "${changed_eb_hooks}" ]; then + # If the hooks have been changed we need to copy them over to the init directory + mkdir -p ${EESSI_PREFIX}/init/easybuild + cp eb_hooks.py ${EESSI_PREFIX}/init/easybuild +fi + echo ">> Creating/updating Lmod RC file..." export LMOD_CONFIG_DIR="${EASYBUILD_INSTALLPATH}/.lmod" lmod_rc_file="$LMOD_CONFIG_DIR/lmodrc.lua" From dbe6d6bde6f7e6e498fe0e337836c4114d4bb0c3 Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Fri, 19 Apr 2024 01:00:43 +0200 Subject: [PATCH 035/203] Actually install the EESSI extension module --- .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml index 3b51db3b11..b7d4370b84 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml @@ -1,2 +1,3 @@ easyconfigs: - ncdu-1.18-GCC-12.3.0.eb + - EESSI-extend-2023.06-easybuild.eb From 5ca2c4a25d702372f0993b57025a7f01459b21d9 Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Fri, 19 Apr 2024 09:52:39 +0200 Subject: [PATCH 036/203] Copy over hooks along with initi files --- EESSI-install-software.sh | 8 -------- install_scripts.sh | 6 ++++++ 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/EESSI-install-software.sh b/EESSI-install-software.sh index 9766c20aa1..91effe4aba 100755 --- a/EESSI-install-software.sh +++ b/EESSI-install-software.sh @@ -264,14 +264,6 @@ fi ### add packages here -# use PR patch file to determine if the EasyBuild hooks have changed -changed_eb_hooks=$(cat ${pr_diff} | grep '^+++' | cut -f2 -d' ' | sed 's@^[a-z]/@@g' | grep '^eb_hooks.py$') -if [ -n "${changed_eb_hooks}" ]; then - # If the hooks have been changed we need to copy them over to the init directory - mkdir -p ${EESSI_PREFIX}/init/easybuild - cp eb_hooks.py ${EESSI_PREFIX}/init/easybuild -fi - echo ">> Creating/updating Lmod RC file..." export LMOD_CONFIG_DIR="${EASYBUILD_INSTALLPATH}/.lmod" lmod_rc_file="$LMOD_CONFIG_DIR/lmodrc.lua" diff --git a/install_scripts.sh b/install_scripts.sh index 508735975c..e6aecf4513 100755 --- a/install_scripts.sh +++ b/install_scripts.sh @@ -113,3 +113,9 @@ nvidia_files=( install_cuda_host_injections.sh link_nvidia_host_libraries.sh ) copy_files_by_list ${TOPDIR}/scripts/gpu_support/nvidia ${INSTALL_PREFIX}/scripts/gpu_support/nvidia "${nvidia_files[@]}" + +# Copy over EasyBuild hooks file used for installations +hook_files=( + eb_hooks.py +) +copy_files_by_list ${TOPDIR} ${INSTALL_PREFIX}/easybuild "${hook_files[@]}" From 148534a3922272b7f6f4f7a3e1b9d210b69ca933 Mon Sep 17 00:00:00 2001 From: ocaisa Date: Fri, 19 Apr 2024 09:58:10 +0200 Subject: [PATCH 037/203] Update install_scripts.sh --- install_scripts.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install_scripts.sh b/install_scripts.sh index e6aecf4513..17f0b81008 100755 --- a/install_scripts.sh +++ b/install_scripts.sh @@ -118,4 +118,4 @@ copy_files_by_list ${TOPDIR}/scripts/gpu_support/nvidia ${INSTALL_PREFIX}/script hook_files=( eb_hooks.py ) -copy_files_by_list ${TOPDIR} ${INSTALL_PREFIX}/easybuild "${hook_files[@]}" +copy_files_by_list ${TOPDIR} ${INSTALL_PREFIX}/init/easybuild "${hook_files[@]}" From dee801bbf1dc31c61a51a6e4b6dde702bf6337f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 19 Apr 2024 10:25:51 +0200 Subject: [PATCH 038/203] move bioconductor to 4.9.1 easystack --- .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2022b.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2022b.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2022b.yml index 8a3e82d760..3962f63bda 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2022b.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2022b.yml @@ -11,4 +11,3 @@ easyconfigs: - R-4.2.2-foss-2022b.eb: options: from-pr: 20238 - - R-bundle-Bioconductor-3.16-foss-2022b-R-4.2.2.eb From cbad690f01b417a9a185685d20f7e160808242ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 19 Apr 2024 10:26:05 +0200 Subject: [PATCH 039/203] add bioconductor --- .../2023.06/eessi-2023.06-eb-4.9.1-2022b.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2022b.yml diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2022b.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2022b.yml new file mode 100644 index 0000000000..f80b99f187 --- /dev/null +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2022b.yml @@ -0,0 +1,5 @@ +easyconfigs: + - R-bundle-Bioconductor-3.16-foss-2022b-R-4.2.2.eb: + options: + from-pr: 20379 + From b6a222639341313caca5bebb621590f8d0862373 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 19 Apr 2024 10:30:08 +0200 Subject: [PATCH 040/203] move biocondutor to 4.9.1 stack, use pr 20379 --- .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml | 3 --- .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml | 3 +++ 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml index bfc408e045..44952e2765 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml @@ -71,6 +71,3 @@ easyconfigs: options: # see https://github.com/easybuilders/easybuild-easyconfigs/pull/20238 from-pr: 20238 - - R-bundle-Bioconductor-3.18-foss-2023a-R-4.3.2.eb: - options: - from-pr: 20316 diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml index 3b51db3b11..57cfc00297 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml @@ -1,2 +1,5 @@ easyconfigs: - ncdu-1.18-GCC-12.3.0.eb + - R-bundle-Bioconductor-3.18-foss-2023a-R-4.3.2.eb: + options: + from-pr: 20379 From 786e1e8189d75682c37150d2d7d58e465ec7e9ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 19 Apr 2024 10:31:08 +0200 Subject: [PATCH 041/203] remove blank line --- .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2022b.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2022b.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2022b.yml index f80b99f187..e547e45f2b 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2022b.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2022b.yml @@ -2,4 +2,3 @@ easyconfigs: - R-bundle-Bioconductor-3.16-foss-2022b-R-4.2.2.eb: options: from-pr: 20379 - From d6336e181efb320a74b895e0baf73373e49875f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 19 Apr 2024 11:50:15 +0200 Subject: [PATCH 042/203] move bioconductor back to 4.9.0 file --- .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml | 3 +++ .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml | 3 --- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml index 44952e2765..23d64036f1 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml @@ -71,3 +71,6 @@ easyconfigs: options: # see https://github.com/easybuilders/easybuild-easyconfigs/pull/20238 from-pr: 20238 + - R-bundle-Bioconductor-3.18-foss-2023a-R-4.3.2.eb: + options: + from-pr: 20379 diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml index 57cfc00297..3b51db3b11 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml @@ -1,5 +1,2 @@ easyconfigs: - ncdu-1.18-GCC-12.3.0.eb - - R-bundle-Bioconductor-3.18-foss-2023a-R-4.3.2.eb: - options: - from-pr: 20379 From 339f358e46dd338649939c31042a0faf15f9e532 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 19 Apr 2024 13:59:23 +0200 Subject: [PATCH 043/203] add rebuild easystack for setuptools_scm fix --- ...move-setuptools_scm-from-hatchling-to-Python.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 easystacks/software.eessi.io/2023.06/rebuilds/20240419-eb-4.9.1-move-setuptools_scm-from-hatchling-to-Python.yml diff --git a/easystacks/software.eessi.io/2023.06/rebuilds/20240419-eb-4.9.1-move-setuptools_scm-from-hatchling-to-Python.yml b/easystacks/software.eessi.io/2023.06/rebuilds/20240419-eb-4.9.1-move-setuptools_scm-from-hatchling-to-Python.yml new file mode 100644 index 0000000000..56ea7a46a1 --- /dev/null +++ b/easystacks/software.eessi.io/2023.06/rebuilds/20240419-eb-4.9.1-move-setuptools_scm-from-hatchling-to-Python.yml @@ -0,0 +1,13 @@ +# 2024-04-19 +# Move setuptools_scm extension from hatchling to Python by rebuilding +# all affected modules with EasyBuild 4.9.1. +# This solves an issue with pyarrow, which is part of the Arrow installation. +# https://github.com/easybuilders/easybuild-easyconfigs/pull/19777 +# https://github.com/easybuilders/easybuild-easyconfigs/issues/19849 +easyconfigs: + - hatchling-1.18.0-GCCcore-12.3.0.eb + - hatchling-1.18.0-GCCcore-13.2.0.eb + - Python-bundle-PyPI-2023.06-GCCcore-12.3.0.eb + - Python-bundle-PyPI-2023.10-GCCcore-13.2.0.eb + - Python-3.11.3-GCCcore-12.3.0.eb + - Python-3.11.5-GCCcore-13.2.0.eb From 4ad271e4891e9c4e1c533e1a04505f16e505bf0a Mon Sep 17 00:00:00 2001 From: ocaisa Date: Fri, 19 Apr 2024 19:30:27 +0200 Subject: [PATCH 044/203] Update EESSI-extend-2023.06-easybuild.eb --- EESSI-extend-2023.06-easybuild.eb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EESSI-extend-2023.06-easybuild.eb b/EESSI-extend-2023.06-easybuild.eb index 6d71693db8..7acd0f0d36 100644 --- a/EESSI-extend-2023.06-easybuild.eb +++ b/EESSI-extend-2023.06-easybuild.eb @@ -75,7 +75,7 @@ end setenv ("EASYBUILD_SYSROOT", sysroot) setenv ("EASYBUILD_PREFIX", pathJoin(working_dir, "easybuild")) setenv ("EASYBUILD_INSTALLPATH", easybuild_installpath) -setenv ("EASYBUILD_HOOKS", pathJoin(os.getenv("EESSI_PREFIX"), "init", "easybuild", "hooks.py")) +setenv ("EASYBUILD_HOOKS", pathJoin(os.getenv("EESSI_PREFIX"), "init", "easybuild", "eb_hooks.py")) if not ( isloaded("EasyBuild") ) then load("EasyBuild") end From db81fd36358c0430bfc6d3ae2784b7e0958d097a Mon Sep 17 00:00:00 2001 From: Thomas Roeblitz Date: Sat, 20 Apr 2024 07:05:40 +0200 Subject: [PATCH 045/203] zen4-only {2023.06}[system] EasyBuild v4.9.1 --- .../2023.06/zen4/eessi-2023.06-eb-4.9.1-001-system.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.1-001-system.yml diff --git a/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.1-001-system.yml b/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.1-001-system.yml new file mode 100644 index 0000000000..c5a08b5209 --- /dev/null +++ b/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.1-001-system.yml @@ -0,0 +1,4 @@ +easyconfigs: + - EasyBuild-4.9.1.eb: + options: + from-pr: 20299 From 8cb9547b0c2b1b3bd1736b57d754fa9cad01516b Mon Sep 17 00:00:00 2001 From: Thomas Roeblitz Date: Sat, 20 Apr 2024 14:10:55 +0200 Subject: [PATCH 046/203] make sure lmod cfg files exists early in build environment --- EESSI-install-software.sh | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/EESSI-install-software.sh b/EESSI-install-software.sh index 91effe4aba..7f67b883f2 100755 --- a/EESSI-install-software.sh +++ b/EESSI-install-software.sh @@ -147,6 +147,24 @@ else mkdir -p ${EESSI_PREFIX}/software/${EESSI_OS_TYPE}/${EESSI_SOFTWARE_SUBDIR_OVERRIDE} fi +# if we run the script for the first time, e.g., to start building for a new +# stack, we need to ensure certain files are present in +# ${EESSI_PREFIX}/software/${EESSI_OS_TYPE}/${EESSI_SOFTWARE_SUBDIR_OVERRIDE} +# - .lmod/lmodrc.lua +# - .lmod/SitePackage.lua +_eessi_software_path=${EESSI_PREFIX}/software/${EESSI_OS_TYPE}/${EESSI_SOFTWARE_SUBDIR_OVERRIDE} +_lmod_cfg_dir=${_eessi_software_path}/.lmod +_lmod_rc_file=${_lmod_cfg_dir}/lmodrc.lua +if [ ! -f ${_lmod_rc_file} ]; then + command -V python3 + python3 ${TOPDIR}/create_lmodrc.py ${_eessi_software_path} +fi +_lmod_sitepackage_file=${_lmod_cfg_dir}/SitePackage.lua +if [ ! -f ${_lmod_sitepackage_file} ]; then + command -V python3 + python3 ${TOPDIR}/create_lmodrc.py ${_eessi_software_path} +fi + # Set all the EESSI environment variables (respecting $EESSI_SOFTWARE_SUBDIR_OVERRIDE) # $EESSI_SILENT - don't print any messages # $EESSI_BASIC_ENV - give a basic set of environment variables From bde1b728c6c39cfffcffbf0480323d5b7348346a Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Sat, 20 Apr 2024 14:16:44 +0200 Subject: [PATCH 047/203] Allow for default site installations, and configurable project and/or user installations --- EESSI-extend-2023.06-easybuild.eb | 93 ++++++++++++++++++++++++++++--- init/Magic_Castle/bash | 2 +- init/bash | 2 - init/eessi_environment_variables | 2 - 4 files changed, 87 insertions(+), 12 deletions(-) diff --git a/EESSI-extend-2023.06-easybuild.eb b/EESSI-extend-2023.06-easybuild.eb index 7acd0f0d36..3f9b62a494 100644 --- a/EESSI-extend-2023.06-easybuild.eb +++ b/EESSI-extend-2023.06-easybuild.eb @@ -14,10 +14,26 @@ description = """ personal workstations and cloud infrastructure. This module allows you to extend EESSI using the same configuration for - EasyBuild as EESSI itself uses. The default installation is the users - home directory, but this can be overridden for a site installation (by setting - EESSI_SITE_INSTALL) or for a direct installation under CVMFS (by setting - EESSI_CVMFS_INSTALL). + EasyBuild as EESSI itself uses. A number of environment variables control the + behaviour of the module: + - EESSI_USER_INSTALL can be set to a location to install modules for use by + the user only. The location must already exist on the filesystem. + - EESSI_PROJECT_INSTALL can be set to a location to install modules for use by + a project. The location must already exist on the filesystem and you should + ensure that the location has the correct Linux group and the SGID permission + is set on that directory (`chmod g+s $EESSI_PROJECT_INSTALL`) so that all + members of the group have permission to read and write installations. + - EESSI_SITE_INSTALL is either defined or not and cannot be used with another + environment variable. A site installation is done in a defined location and + any installations there are (by default) world readable. + - EESSI_CVMFS_INSTALL is either defined or not and cannot be used with another + environment variable. A CVMFS installation targets a defined location which + will be ingested into CVMFS and is only useful for CVMFS administrators. + - If none of the environment variables above are defined, an EESSI_USER_INSTALL + is assumed with a value of $HOME/EESSI + If both EESSI_USER_INSTALL and EESSI_PROJECT_INSTALL are defined, both sets of + installations are exposed, but new installations are created as user + installations. """ toolchain = SYSTEM @@ -27,6 +43,7 @@ local_deps_to_filter = "Autoconf,Automake,Autotools,binutils,bzip2,DBus,flex,get local_arch_specific_deps_to_filter = {'aarch64': ',yasm', 'x86_64': ''} local_deps_to_filter += local_arch_specific_deps_to_filter[ARCH] +# Set the universal EasyBuild variables modextravars = { 'EASYBUILD_FILTER_DEPS': local_deps_to_filter, 'EASYBUILD_IGNORE_OSDEPS': '1', @@ -46,6 +63,12 @@ modextravars = { # EASYBUILD_HOOKS=${EESSI_PREFIX}/init/easybuild/eb_hooks.py # EASYBUILD_INSTALLPATH=${EESSI_PREFIX}/software/${EESSI_OS_TYPE}/${EESSI_SOFTWARE_SUBDIR} # EASYBUILD_SOURCEPATH=${WORKDIR}/easybuild/sources:${EESSI_SOURCEPATH} +# +# And also some optional ones based on the kind of installation +# EASYBUILD_SET_GID_BIT +# EASYBUILD_GROUP_WRITABLE_INSTALLDIR +# EASYBUILD_UMASK +# EASYBUILD_STICKY_BIT modluafooter = """ if (mode() == "load") then -- Use a working directory for temporary build files @@ -58,11 +81,48 @@ working_dir = os.getenv("WORKING_DIR") or pathJoin("/tmp", os.getenv("USER")) sysroot = os.getenv("EESSI_EPREFIX") -- Use an installation prefix that we _should_ have write access to if (os.getenv("EESSI_CVMFS_INSTALL") ~= nil) then + -- Make sure no other EESSI install environment variables are set + if (os.getenv("EESSI_SITE_INSTALL") ~= nil) or (os.getenv("EESSI_PROJECT_INSTALL") ~= nil) or (os.getenv("EESSI_USER_INSTALL") then + LmodError("You cannot use EESSI_CVMFS_INSTALL in combination with any other EESSI_*_INSTALL environment variables") + end + eessi_cvmfs_install = true easybuild_installpath = os.getenv("EESSI_SOFTWARE_PATH") -elseif (os.getenv("EESSI_SITE_INSTALL") ~= nil) then +elseif (os.getenv("EESSI_SITE_INSTALL") ~= nil) then + -- Make sure no other EESSI install environment variables are set + if (os.getenv("EESSI_PROJECT_INSTALL") ~= nil) or (os.getenv("EESSI_USER_INSTALL") then + LmodError("You cannot use EESSI_SITE_INSTALL in combination with any other EESSI_*_INSTALL environment variables") + end easybuild_installpath = string.gsub(os.getenv("EESSI_SOFTWARE_PATH"), 'versions', 'host_injections') else - easybuild_installpath = string.gsub(os.getenv("EESSI_SOFTWARE_PATH"), os.getenv("EESSI_CVMFS_REPO"), pathJoin(os.getenv("HOME"), "eessi")) + -- Deal with user and project installs + project_install = os.getenv("EESSI_PROJECT_INSTALL") + project_modulepath = nil + if (project_install ~= nil) then + -- Check the folder exists + if not isDir(project_install) then + LmodError("The location of EESSI_PROJECT_INSTALL (" .. project_install .. ") does not exist or is not a folder") + end + LmodMessage("Configuring for use of EESSI_PROJECT_INSTALL under " .. project_install) + easybuild_installpath = string.gsub(os.getenv("EESSI_SOFTWARE_PATH"), os.getenv("EESSI_CVMFS_REPO"), project_install) + project_modulepath = pathJoin(easybuild_installpath, 'modules', 'all') + end + user_install = os.getenv("EESSI_USER_INSTALL") + user_modulepath = nil + if (project_install == nil) then + if (user_install ~= nil) then + user_install = pathJoin(os.getenv("HOME"), "eessi") + else + -- Check the folder exists + if not isDir(user_install) then + LmodError("The location of EESSI_USER_INSTALL (" .. user_install .. ") does not exist or is not a folder") + end + end + end + if (user_install ~= nil) then + LmodMessage("Configuring for use of EESSI_USER_INSTALL under " .. user_install) + easybuild_installpath = string.gsub(os.getenv("EESSI_SOFTWARE_PATH"), os.getenv("EESSI_CVMFS_REPO"), user_install) + user_modulepath = pathJoin(easybuild_installpath, 'modules', 'all') + end end if (mode() == "load") then LmodMessage("-- To create installations for EESSI, you _must_ have write permissions to " .. easybuild_installpath) @@ -71,11 +131,30 @@ if (mode() == "load") then LmodMessage("-- You may wish to configure a sources directory for EasyBuild (for example, via setting the environment variable EASYBUILD_SOURCEPATH) to allow you to reuse existing sources for packages.") end end --- Set the relevant environment variables for EasyBuild +-- Set the relevant universal environment variables for EasyBuild setenv ("EASYBUILD_SYSROOT", sysroot) setenv ("EASYBUILD_PREFIX", pathJoin(working_dir, "easybuild")) setenv ("EASYBUILD_INSTALLPATH", easybuild_installpath) setenv ("EASYBUILD_HOOKS", pathJoin(os.getenv("EESSI_PREFIX"), "init", "easybuild", "eb_hooks.py")) + +-- Set all related environment variables if we have project or user installations (including extending MODULEPATH) +if (user_modulepath ~= nil) then + setenv ("EASYBUILD_SET_GID_BIT", "1") + setenv ("EASYBUILD_GROUP_WRITABLE_INSTALLDIR", "1") + setenv ("EASYBUILD_UMASK", "002") + setenv ("EASYBUILD_STICKY_BIT", "0") + -- configure MODULEPATH + if (project_modulepath ~= nil) then + prepend_path("MODULEPATH", project_modulepath) + end + prepend_path("MODULEPATH", user_modulepath) +elseif (project_modulepath ~= nil) then + setenv ("EASYBUILD_UMASK", "022") + setenv ("EASYBUILD_STICKY_BIT", "1") + -- configure MODULEPATH + prepend_path("MODULEPATH", project_modulepath) +end +-- Make aure EasyBuild itself is loaded if not ( isloaded("EasyBuild") ) then load("EasyBuild") end diff --git a/init/Magic_Castle/bash b/init/Magic_Castle/bash index e6c7ff294c..bf625e7e7b 100644 --- a/init/Magic_Castle/bash +++ b/init/Magic_Castle/bash @@ -10,7 +10,7 @@ source $(dirname "$BASH_SOURCE")/../eessi_environment_variables # Provide a clean MODULEPATH export MODULEPATH_ROOT=$EESSI_MODULEPATH -export MODULEPATH=$EESSI_USER_MODULEPATH:$EESSI_SITE_MODULEPATH:$EESSI_MODULEPATH +export MODULEPATH=$EESSI_SITE_MODULEPATH:$EESSI_MODULEPATH # Extensions are too many, let's not print them by default (requires Lmod 8.4.12) export LMOD_AVAIL_EXTENSIONS=no diff --git a/init/bash b/init/bash index 3c6aad47f1..565c37cc65 100644 --- a/init/bash +++ b/init/bash @@ -28,8 +28,6 @@ if [ $? -eq 0 ]; then module use $EESSI_MODULEPATH echo "Prepending site path $EESSI_SITE_MODULEPATH to \$MODULEPATH..." >> $output module use $EESSI_SITE_MODULEPATH - echo "Prepending user path $EESSI_SITE_MODULEPATH to \$MODULEPATH..." >> $output - module use $EESSI_USER_MODULEPATH #show_msg "" #show_msg "*** Known problems in the ${EESSI_VERSION} software stack ***" diff --git a/init/eessi_environment_variables b/init/eessi_environment_variables index 5ae2c5c3c6..dbf01cc9e4 100644 --- a/init/eessi_environment_variables +++ b/init/eessi_environment_variables @@ -91,8 +91,6 @@ if [ -d $EESSI_PREFIX ]; then show_msg "Using ${EESSI_MODULEPATH} as the directory to be added to MODULEPATH." export EESSI_SITE_MODULEPATH=${EESSI_MODULEPATH/versions/host_injections} show_msg "Using ${EESSI_SITE_MODULEPATH} as the site extension directory to be added to MODULEPATH." - export EESSI_USER_MODULEPATH=${EESSI_MODULEPATH/${EESSI_CVMFS_REPO}/${HOME}\/eessi} - show_msg "Using ${EESSI_USER_MODULEPATH} as the user extension directory to be added to MODULEPATH." else error "EESSI module path at $EESSI_MODULEPATH not found!" false From da9f206f216c70b8559bdd002235a754125aba2d Mon Sep 17 00:00:00 2001 From: Thomas Roeblitz Date: Sat, 20 Apr 2024 14:18:58 +0200 Subject: [PATCH 048/203] use create_lmodsitepackage.py --- EESSI-install-software.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EESSI-install-software.sh b/EESSI-install-software.sh index 7f67b883f2..13e94fb72d 100755 --- a/EESSI-install-software.sh +++ b/EESSI-install-software.sh @@ -162,7 +162,7 @@ fi _lmod_sitepackage_file=${_lmod_cfg_dir}/SitePackage.lua if [ ! -f ${_lmod_sitepackage_file} ]; then command -V python3 - python3 ${TOPDIR}/create_lmodrc.py ${_eessi_software_path} + python3 ${TOPDIR}/create_lmodsitepackage.py ${_eessi_software_path} fi # Set all the EESSI environment variables (respecting $EESSI_SOFTWARE_SUBDIR_OVERRIDE) From 82f58b24ae4cb2ada19c79ad6c8e7cef2727ed56 Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Sat, 20 Apr 2024 14:30:57 +0200 Subject: [PATCH 049/203] Fix conditions --- EESSI-extend-2023.06-easybuild.eb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/EESSI-extend-2023.06-easybuild.eb b/EESSI-extend-2023.06-easybuild.eb index 3f9b62a494..0f0b4bc9f9 100644 --- a/EESSI-extend-2023.06-easybuild.eb +++ b/EESSI-extend-2023.06-easybuild.eb @@ -82,14 +82,14 @@ sysroot = os.getenv("EESSI_EPREFIX") -- Use an installation prefix that we _should_ have write access to if (os.getenv("EESSI_CVMFS_INSTALL") ~= nil) then -- Make sure no other EESSI install environment variables are set - if (os.getenv("EESSI_SITE_INSTALL") ~= nil) or (os.getenv("EESSI_PROJECT_INSTALL") ~= nil) or (os.getenv("EESSI_USER_INSTALL") then + if ((os.getenv("EESSI_SITE_INSTALL") ~= nil) or (os.getenv("EESSI_PROJECT_INSTALL") ~= nil) or (os.getenv("EESSI_USER_INSTALL") ~= nil)) then LmodError("You cannot use EESSI_CVMFS_INSTALL in combination with any other EESSI_*_INSTALL environment variables") end eessi_cvmfs_install = true easybuild_installpath = os.getenv("EESSI_SOFTWARE_PATH") elseif (os.getenv("EESSI_SITE_INSTALL") ~= nil) then -- Make sure no other EESSI install environment variables are set - if (os.getenv("EESSI_PROJECT_INSTALL") ~= nil) or (os.getenv("EESSI_USER_INSTALL") then + if ((os.getenv("EESSI_PROJECT_INSTALL") ~= nil) or (os.getenv("EESSI_USER_INSTALL") ~= nil)) then LmodError("You cannot use EESSI_SITE_INSTALL in combination with any other EESSI_*_INSTALL environment variables") end easybuild_installpath = string.gsub(os.getenv("EESSI_SOFTWARE_PATH"), 'versions', 'host_injections') From 4ebfc2057d08056a978743f0e63ce630e5912fef Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Sat, 20 Apr 2024 14:35:32 +0200 Subject: [PATCH 050/203] Fix condition --- EESSI-extend-2023.06-easybuild.eb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EESSI-extend-2023.06-easybuild.eb b/EESSI-extend-2023.06-easybuild.eb index 0f0b4bc9f9..900d584720 100644 --- a/EESSI-extend-2023.06-easybuild.eb +++ b/EESSI-extend-2023.06-easybuild.eb @@ -109,7 +109,7 @@ else user_install = os.getenv("EESSI_USER_INSTALL") user_modulepath = nil if (project_install == nil) then - if (user_install ~= nil) then + if (user_install == nil) then user_install = pathJoin(os.getenv("HOME"), "eessi") else -- Check the folder exists From 5c5899b3230c64cb40f57e91fa3521b74d83bdd2 Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Sat, 20 Apr 2024 14:39:06 +0200 Subject: [PATCH 051/203] Messages only on module load --- EESSI-extend-2023.06-easybuild.eb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/EESSI-extend-2023.06-easybuild.eb b/EESSI-extend-2023.06-easybuild.eb index 900d584720..303abe0410 100644 --- a/EESSI-extend-2023.06-easybuild.eb +++ b/EESSI-extend-2023.06-easybuild.eb @@ -102,7 +102,9 @@ else if not isDir(project_install) then LmodError("The location of EESSI_PROJECT_INSTALL (" .. project_install .. ") does not exist or is not a folder") end - LmodMessage("Configuring for use of EESSI_PROJECT_INSTALL under " .. project_install) + if (mode() == "load") then + LmodMessage("Configuring for use of EESSI_PROJECT_INSTALL under " .. project_install) + end easybuild_installpath = string.gsub(os.getenv("EESSI_SOFTWARE_PATH"), os.getenv("EESSI_CVMFS_REPO"), project_install) project_modulepath = pathJoin(easybuild_installpath, 'modules', 'all') end @@ -119,7 +121,9 @@ else end end if (user_install ~= nil) then - LmodMessage("Configuring for use of EESSI_USER_INSTALL under " .. user_install) + if (mode() == "load") then + LmodMessage("Configuring for use of EESSI_USER_INSTALL under " .. user_install) + end easybuild_installpath = string.gsub(os.getenv("EESSI_SOFTWARE_PATH"), os.getenv("EESSI_CVMFS_REPO"), user_install) user_modulepath = pathJoin(easybuild_installpath, 'modules', 'all') end From c4cbcd8b9b6212c830e371aa3013eee8977ff776 Mon Sep 17 00:00:00 2001 From: Thomas Roeblitz Date: Sat, 20 Apr 2024 14:41:02 +0200 Subject: [PATCH 052/203] skip CUDA install if no EasyBuild module is found --- EESSI-install-software.sh | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/EESSI-install-software.sh b/EESSI-install-software.sh index 13e94fb72d..2d401e40ce 100755 --- a/EESSI-install-software.sh +++ b/EESSI-install-software.sh @@ -221,10 +221,21 @@ ${TOPDIR}/install_scripts.sh --prefix ${EESSI_PREFIX} # Hardcode this for now, see if it works # TODO: We should make a nice yaml and loop over all CUDA versions in that yaml to figure out what to install # Allow skipping CUDA SDK install in e.g. CI environments +# The install_cuda... script uses EasyBuild. So, we need to check if we have EB +# or skip this step. +module_avail_out=$TMPDIR/ml.out +module avail 2>&1 | grep EasyBuild &> ${module_avail_out} +if [[ $? -eq 0 ]]; then + echo_green ">> Found an EasyBuild module" +else + echo_yellow ">> No EasyBuild module found: skipping step to install CUDA (see output in ${module_avail_out})" + export skip_cuda_install=True +fi +if if [ -z "${skip_cuda_install}" ] || [ ! "${skip_cuda_install}" ]; then ${EESSI_PREFIX}/scripts/gpu_support/nvidia/install_cuda_host_injections.sh -c 12.1.1 --accept-cuda-eula else - echo "Skipping installation of CUDA SDK in host_injections, since the --skip-cuda-install flag was passed" + echo "Skipping installation of CUDA SDK in host_injections, since the --skip-cuda-install flag was passed OR no EasyBuild module was found" fi # Install drivers in host_injections From eeb5537e4b8889cbbf183ffd17e4743961357f3c Mon Sep 17 00:00:00 2001 From: Thomas Roeblitz Date: Sat, 20 Apr 2024 14:45:17 +0200 Subject: [PATCH 053/203] remove extra if --- EESSI-install-software.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EESSI-install-software.sh b/EESSI-install-software.sh index 2d401e40ce..8a5789c2b2 100755 --- a/EESSI-install-software.sh +++ b/EESSI-install-software.sh @@ -231,7 +231,7 @@ else echo_yellow ">> No EasyBuild module found: skipping step to install CUDA (see output in ${module_avail_out})" export skip_cuda_install=True fi -if + if [ -z "${skip_cuda_install}" ] || [ ! "${skip_cuda_install}" ]; then ${EESSI_PREFIX}/scripts/gpu_support/nvidia/install_cuda_host_injections.sh -c 12.1.1 --accept-cuda-eula else From 8122bbd6bd7f6c44f4db9c955dcbd0bc7d736ad4 Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Sat, 20 Apr 2024 14:56:52 +0200 Subject: [PATCH 054/203] fix location of settings --- EESSI-extend-2023.06-easybuild.eb | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/EESSI-extend-2023.06-easybuild.eb b/EESSI-extend-2023.06-easybuild.eb index 303abe0410..ddf56648b9 100644 --- a/EESSI-extend-2023.06-easybuild.eb +++ b/EESSI-extend-2023.06-easybuild.eb @@ -143,18 +143,18 @@ setenv ("EASYBUILD_HOOKS", pathJoin(os.getenv("EESSI_PREFIX"), "init", "easybuil -- Set all related environment variables if we have project or user installations (including extending MODULEPATH) if (user_modulepath ~= nil) then - setenv ("EASYBUILD_SET_GID_BIT", "1") - setenv ("EASYBUILD_GROUP_WRITABLE_INSTALLDIR", "1") - setenv ("EASYBUILD_UMASK", "002") - setenv ("EASYBUILD_STICKY_BIT", "0") + setenv ("EASYBUILD_UMASK", "022") + setenv ("EASYBUILD_STICKY_BIT", "1") -- configure MODULEPATH if (project_modulepath ~= nil) then prepend_path("MODULEPATH", project_modulepath) end prepend_path("MODULEPATH", user_modulepath) elseif (project_modulepath ~= nil) then - setenv ("EASYBUILD_UMASK", "022") - setenv ("EASYBUILD_STICKY_BIT", "1") + setenv ("EASYBUILD_SET_GID_BIT", "1") + setenv ("EASYBUILD_GROUP_WRITABLE_INSTALLDIR", "1") + setenv ("EASYBUILD_UMASK", "002") + setenv ("EASYBUILD_STICKY_BIT", "0") -- configure MODULEPATH prepend_path("MODULEPATH", project_modulepath) end From 4d465e9996b61bfb2f2643710bf944ee88bdd355 Mon Sep 17 00:00:00 2001 From: Pedro Santos Neves <10762799+Neves-P@users.noreply.github.com> Date: Sun, 21 Apr 2024 17:47:40 +0200 Subject: [PATCH 055/203] Add SAMtools-1.18-GCC-12.3.0 --- .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml index 3b51db3b11..ec5fd3c638 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml @@ -1,2 +1,3 @@ easyconfigs: - ncdu-1.18-GCC-12.3.0.eb + - SAMtools-1.18-GCC-12.3.0.eb From 04c6f0ee56bde553968da02f7daba36cbb363d78 Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Mon, 22 Apr 2024 09:30:11 +0200 Subject: [PATCH 056/203] Always check for dir existence when using EESSI_USER_INSTALL --- EESSI-extend-2023.06-easybuild.eb | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/EESSI-extend-2023.06-easybuild.eb b/EESSI-extend-2023.06-easybuild.eb index ddf56648b9..c06087a940 100644 --- a/EESSI-extend-2023.06-easybuild.eb +++ b/EESSI-extend-2023.06-easybuild.eb @@ -110,15 +110,14 @@ else end user_install = os.getenv("EESSI_USER_INSTALL") user_modulepath = nil - if (project_install == nil) then - if (user_install == nil) then - user_install = pathJoin(os.getenv("HOME"), "eessi") - else - -- Check the folder exists - if not isDir(user_install) then - LmodError("The location of EESSI_USER_INSTALL (" .. user_install .. ") does not exist or is not a folder") - end + if (user_install ~= nil) then + -- Check the folder exists + if not isDir(user_install) then + LmodError("The location of EESSI_USER_INSTALL (" .. user_install .. ") does not exist or is not a folder") end + elseif (user_install == nil) and (project_install == nil) then + -- No need to check for existence when we use a HOME subdir + user_install = pathJoin(os.getenv("HOME"), "eessi") end if (user_install ~= nil) then if (mode() == "load") then From 8cd5d844e872fe58efcdbb49e38689e656f3f9a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Mon, 22 Apr 2024 16:39:45 +0200 Subject: [PATCH 057/203] attempt to fix the hatchling reinstallation issue --- EESSI-remove-software.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/EESSI-remove-software.sh b/EESSI-remove-software.sh index 446a156cb8..d8a6dae63e 100755 --- a/EESSI-remove-software.sh +++ b/EESSI-remove-software.sh @@ -114,6 +114,11 @@ if [ $EUID -eq 0 ]; then echo_yellow "Removing ${app_dir} and ${app_module}..." rm -rf ${app_dir} rm -rf ${app_module} + # if the parent dir of this application is now empty, remove it too to work around a weird issue with the overlay + # see https://github.com/EESSI/software-layer/pull/546#issuecomment-2067018216 + if [ ! -n "$(dirname ${app_dir})" ]; then + rmdir "$(dirname ${app_dir})" + fi done else fatal_error "Easystack file ${easystack_file} not found!" From 76ecccf629f6b4dda1b65e4ee1f3f2d9d9b9457c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Mon, 22 Apr 2024 17:13:37 +0200 Subject: [PATCH 058/203] use right if condition for checking if dir is empty --- EESSI-remove-software.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/EESSI-remove-software.sh b/EESSI-remove-software.sh index d8a6dae63e..f3c4f9e618 100755 --- a/EESSI-remove-software.sh +++ b/EESSI-remove-software.sh @@ -116,8 +116,9 @@ if [ $EUID -eq 0 ]; then rm -rf ${app_module} # if the parent dir of this application is now empty, remove it too to work around a weird issue with the overlay # see https://github.com/EESSI/software-layer/pull/546#issuecomment-2067018216 - if [ ! -n "$(dirname ${app_dir})" ]; then - rmdir "$(dirname ${app_dir})" + app_dir_parent=$(dirname "${app_dir}") + if [ ! -n "$(ls -A ${app_dir_parent})" ]; then + rmdir "${app_dir_parent}" fi done else From 1642621d1b47b804f689280d7c797824d1662a2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 26 Apr 2024 14:24:46 +0200 Subject: [PATCH 059/203] undo parent dir removal, workaround didn't work --- EESSI-remove-software.sh | 6 ------ 1 file changed, 6 deletions(-) diff --git a/EESSI-remove-software.sh b/EESSI-remove-software.sh index f3c4f9e618..446a156cb8 100755 --- a/EESSI-remove-software.sh +++ b/EESSI-remove-software.sh @@ -114,12 +114,6 @@ if [ $EUID -eq 0 ]; then echo_yellow "Removing ${app_dir} and ${app_module}..." rm -rf ${app_dir} rm -rf ${app_module} - # if the parent dir of this application is now empty, remove it too to work around a weird issue with the overlay - # see https://github.com/EESSI/software-layer/pull/546#issuecomment-2067018216 - app_dir_parent=$(dirname "${app_dir}") - if [ ! -n "$(ls -A ${app_dir_parent})" ]; then - rmdir "${app_dir_parent}" - fi done else fatal_error "Easystack file ${easystack_file} not found!" From a5bf9d3da294fad127aef0dc972af323a0488077 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 26 Apr 2024 14:26:25 +0200 Subject: [PATCH 060/203] only rebuild 2023a easyconfigs --- ...eb-4.9.1-move-setuptools_scm-from-hatchling-to-Python.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/easystacks/software.eessi.io/2023.06/rebuilds/20240419-eb-4.9.1-move-setuptools_scm-from-hatchling-to-Python.yml b/easystacks/software.eessi.io/2023.06/rebuilds/20240419-eb-4.9.1-move-setuptools_scm-from-hatchling-to-Python.yml index 56ea7a46a1..76dd37e870 100644 --- a/easystacks/software.eessi.io/2023.06/rebuilds/20240419-eb-4.9.1-move-setuptools_scm-from-hatchling-to-Python.yml +++ b/easystacks/software.eessi.io/2023.06/rebuilds/20240419-eb-4.9.1-move-setuptools_scm-from-hatchling-to-Python.yml @@ -1,13 +1,10 @@ # 2024-04-19 # Move setuptools_scm extension from hatchling to Python by rebuilding -# all affected modules with EasyBuild 4.9.1. +# the affected modules in the 2023a toolchain with EasyBuild 4.9.1. # This solves an issue with pyarrow, which is part of the Arrow installation. # https://github.com/easybuilders/easybuild-easyconfigs/pull/19777 # https://github.com/easybuilders/easybuild-easyconfigs/issues/19849 easyconfigs: - hatchling-1.18.0-GCCcore-12.3.0.eb - - hatchling-1.18.0-GCCcore-13.2.0.eb - Python-bundle-PyPI-2023.06-GCCcore-12.3.0.eb - - Python-bundle-PyPI-2023.10-GCCcore-13.2.0.eb - Python-3.11.3-GCCcore-12.3.0.eb - - Python-3.11.5-GCCcore-13.2.0.eb From c4af218d2c7dd604f10cea7454d1f672b00498ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 26 Apr 2024 15:04:02 +0200 Subject: [PATCH 061/203] only try 2023b versions --- ...4.9.1-move-setuptools_scm-from-hatchling-to-Python.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/easystacks/software.eessi.io/2023.06/rebuilds/20240419-eb-4.9.1-move-setuptools_scm-from-hatchling-to-Python.yml b/easystacks/software.eessi.io/2023.06/rebuilds/20240419-eb-4.9.1-move-setuptools_scm-from-hatchling-to-Python.yml index 76dd37e870..f3484a3486 100644 --- a/easystacks/software.eessi.io/2023.06/rebuilds/20240419-eb-4.9.1-move-setuptools_scm-from-hatchling-to-Python.yml +++ b/easystacks/software.eessi.io/2023.06/rebuilds/20240419-eb-4.9.1-move-setuptools_scm-from-hatchling-to-Python.yml @@ -1,10 +1,10 @@ # 2024-04-19 # Move setuptools_scm extension from hatchling to Python by rebuilding -# the affected modules in the 2023a toolchain with EasyBuild 4.9.1. +# the affected modules in the 2023b toolchain with EasyBuild 4.9.1. # This solves an issue with pyarrow, which is part of the Arrow installation. # https://github.com/easybuilders/easybuild-easyconfigs/pull/19777 # https://github.com/easybuilders/easybuild-easyconfigs/issues/19849 easyconfigs: - - hatchling-1.18.0-GCCcore-12.3.0.eb - - Python-bundle-PyPI-2023.06-GCCcore-12.3.0.eb - - Python-3.11.3-GCCcore-12.3.0.eb + - hatchling-1.18.0-GCCcore-13.2.0.eb + - Python-bundle-PyPI-2023.10-GCCcore-13.2.0.eb + - Python-3.11.5-GCCcore-13.2.0.eb From 33cb74f5e2f4f63cd286e0d1b71818ccb1eca1a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 26 Apr 2024 15:33:15 +0200 Subject: [PATCH 062/203] try adding write permissions instead of removing --- EESSI-remove-software.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/EESSI-remove-software.sh b/EESSI-remove-software.sh index 446a156cb8..1a488dcb67 100755 --- a/EESSI-remove-software.sh +++ b/EESSI-remove-software.sh @@ -112,8 +112,9 @@ if [ $EUID -eq 0 ]; then app_dir=${EASYBUILD_INSTALLPATH}/software/${app} app_module=${EASYBUILD_INSTALLPATH}/modules/all/${app}.lua echo_yellow "Removing ${app_dir} and ${app_module}..." - rm -rf ${app_dir} - rm -rf ${app_module} + #rm -rf ${app_dir} + #rm -rf ${app_module} + chmod -R u+w ${app_dir} ${app_module} done else fatal_error "Easystack file ${easystack_file} not found!" From 1e92daf31bca8a879b2888cefc5156c76774f7ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 26 Apr 2024 16:12:21 +0200 Subject: [PATCH 063/203] do remove the module to make sure it gets rebuilt --- EESSI-remove-software.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/EESSI-remove-software.sh b/EESSI-remove-software.sh index 1a488dcb67..9d82dd8aa6 100755 --- a/EESSI-remove-software.sh +++ b/EESSI-remove-software.sh @@ -113,8 +113,8 @@ if [ $EUID -eq 0 ]; then app_module=${EASYBUILD_INSTALLPATH}/modules/all/${app}.lua echo_yellow "Removing ${app_dir} and ${app_module}..." #rm -rf ${app_dir} - #rm -rf ${app_module} - chmod -R u+w ${app_dir} ${app_module} + rm -rf ${app_module} + chmod -R u+w ${app_dir} done else fatal_error "Easystack file ${easystack_file} not found!" From d0229ccb3adb03eac5cdddde76858b00d20832bf Mon Sep 17 00:00:00 2001 From: ocaisa Date: Mon, 29 Apr 2024 14:40:50 +0200 Subject: [PATCH 064/203] Update create_lmodsitepackage.py --- create_lmodsitepackage.py | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/create_lmodsitepackage.py b/create_lmodsitepackage.py index ce94a7e311..862902d80e 100755 --- a/create_lmodsitepackage.py +++ b/create_lmodsitepackage.py @@ -24,24 +24,20 @@ -- e.g. /cvmfs/software.eessi.io/versions/2023.06 local eessi_prefix = os.getenv("EESSI_PREFIX") - -- NOTE: exact paths for site and user extensions aren't final, so may need to be updated later. - -- See https://github.com/EESSI/software-layer/pull/371 - - -- eessi_prefix_host_injections is the prefix with site-extensions (i.e. additional modules) - -- to the official EESSI modules, e.g. /cvmfs/software.eessi.io/host_injections/2023.06 - local eessi_prefix_host_injections = string.gsub(eessi_prefix, 'versions', 'host_injections') - -- eessi_prefix_user_home is the prefix with user-extensions (i.e. additional modules) - -- to the offocial EESSI modules, e.g. $HOME/eessi/versions/2023.06 - local eessi_prefix_user_home = string.gsub(eessi_prefix, os.getenv("EESSI_CVMFS_REPO"), pathJoin(os.getenv("HOME"), "eessi")) -- If EESSI_PREFIX wasn't defined, we cannot check if this module was from the EESSI environment -- In that case, we assume it isn't, otherwise EESSI_PREFIX would (probably) have been set if eessi_prefix == nil then return False else - -- Check if the full modulepath starts with the eessi_prefix_* - return string.find(t.fn, "^" .. eessi_prefix) ~= nil or - string.find(t.fn, "^" .. eessi_prefix_host_injections) ~= nil or - string.find(t.fn, "^" .. eessi_prefix_user_home) ~= nil + -- NOTE: exact paths for site so may need to be updated later. + -- See https://github.com/EESSI/software-layer/pull/371 + + -- eessi_prefix_host_injections is the prefix with site-extensions (i.e. additional modules) + -- to the official EESSI modules, e.g. /cvmfs/software.eessi.io/host_injections/2023.06 + local eessi_prefix_host_injections = string.gsub(eessi_prefix, 'versions', 'host_injections') + + -- Check if the full modulepath starts with the eessi_prefix_* + return string.find(t.fn, "^" .. eessi_prefix) ~= nil or string.find(t.fn, "^" .. eessi_prefix_host_injections) ~= nil end end From b6371d0e2766720a8fbccdb2ed322b5858dc834f Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Tue, 30 Apr 2024 11:06:30 +0200 Subject: [PATCH 065/203] use easyconfig PR for GROMACS 2024.1 that uses backported patch to fix problems with tests --- .../2023.06/eessi-2023.06-eb-4.9.0-2023b.yml | 3 --- .../2023.06/eessi-2023.06-eb-4.9.1-2023b.yml | 4 ++++ 2 files changed, 4 insertions(+), 3 deletions(-) create mode 100644 easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023b.yml diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023b.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023b.yml index d45ebfb9ba..86c5106c85 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023b.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023b.yml @@ -57,6 +57,3 @@ easyconfigs: - Qt5-5.15.13-GCCcore-13.2.0.eb: options: from-pr: 20201 - - GROMACS-2024.1-foss-2023b.eb: - options: - from-pr: 20102 diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023b.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023b.yml new file mode 100644 index 0000000000..1392fa2f5a --- /dev/null +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023b.yml @@ -0,0 +1,4 @@ +easyconfigs: + - GROMACS-2024.1-foss-2023b.eb: + options: + from-pr: 20439 From b94fa6262a2845a03d58a9095b5da4fb84b8e710 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Tue, 30 Apr 2024 15:13:53 +0200 Subject: [PATCH 066/203] restore easystack, rebuild all required versions --- ...eb-4.9.1-move-setuptools_scm-from-hatchling-to-Python.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/easystacks/software.eessi.io/2023.06/rebuilds/20240419-eb-4.9.1-move-setuptools_scm-from-hatchling-to-Python.yml b/easystacks/software.eessi.io/2023.06/rebuilds/20240419-eb-4.9.1-move-setuptools_scm-from-hatchling-to-Python.yml index f3484a3486..56ea7a46a1 100644 --- a/easystacks/software.eessi.io/2023.06/rebuilds/20240419-eb-4.9.1-move-setuptools_scm-from-hatchling-to-Python.yml +++ b/easystacks/software.eessi.io/2023.06/rebuilds/20240419-eb-4.9.1-move-setuptools_scm-from-hatchling-to-Python.yml @@ -1,10 +1,13 @@ # 2024-04-19 # Move setuptools_scm extension from hatchling to Python by rebuilding -# the affected modules in the 2023b toolchain with EasyBuild 4.9.1. +# all affected modules with EasyBuild 4.9.1. # This solves an issue with pyarrow, which is part of the Arrow installation. # https://github.com/easybuilders/easybuild-easyconfigs/pull/19777 # https://github.com/easybuilders/easybuild-easyconfigs/issues/19849 easyconfigs: + - hatchling-1.18.0-GCCcore-12.3.0.eb - hatchling-1.18.0-GCCcore-13.2.0.eb + - Python-bundle-PyPI-2023.06-GCCcore-12.3.0.eb - Python-bundle-PyPI-2023.10-GCCcore-13.2.0.eb + - Python-3.11.3-GCCcore-12.3.0.eb - Python-3.11.5-GCCcore-13.2.0.eb From 66724f282e405579021811813721aaf79dc35a75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Tue, 30 Apr 2024 15:14:50 +0200 Subject: [PATCH 067/203] undo changes --- EESSI-remove-software.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/EESSI-remove-software.sh b/EESSI-remove-software.sh index 9d82dd8aa6..446a156cb8 100755 --- a/EESSI-remove-software.sh +++ b/EESSI-remove-software.sh @@ -112,9 +112,8 @@ if [ $EUID -eq 0 ]; then app_dir=${EASYBUILD_INSTALLPATH}/software/${app} app_module=${EASYBUILD_INSTALLPATH}/modules/all/${app}.lua echo_yellow "Removing ${app_dir} and ${app_module}..." - #rm -rf ${app_dir} + rm -rf ${app_dir} rm -rf ${app_module} - chmod -R u+w ${app_dir} done else fatal_error "Easystack file ${easystack_file} not found!" From 01c49de45a802aafdc5d0bcf7cd577c0213cfac0 Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Tue, 30 Apr 2024 20:54:28 +0200 Subject: [PATCH 068/203] avoid building GROMACS 2024.1 with SVE on Neoverse V1, stick to Neon for now (cfr. https://gitlab.com/gromacs/gromacs/-/issues/5057) --- eb_hooks.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/eb_hooks.py b/eb_hooks.py index 20b5f76cfc..f02c8db48c 100644 --- a/eb_hooks.py +++ b/eb_hooks.py @@ -335,6 +335,21 @@ def pre_configure_hook(self, *args, **kwargs): PRE_CONFIGURE_HOOKS[self.name](self, *args, **kwargs) +def pre_configure_hook_gromacs(self, *args, **kwargs): + """ + Pre-configure hook for GROMACS: + - avoid building with SVE instructions on Neoverse V1 as workaround for failing tests, + see https://gitlab.com/gromacs/gromacs/-/issues/5057 + https://gitlab.com/eessi/support/-/issues/47 + """ + if self.name == 'GROMACS': + cpu_target = get_eessi_envvar('EESSI_SOFTWARE_SUBDIR') + if LooseVersion(self.version) <= LooseVersion('2024.1') and cpu_target == CPU_TARGET_NEOVERSE_V1: + self.cfg.update('configopts', '-DGMX_SIMD=ARM_NEON_ASIMD') + print_msg("Avoiding use of SVE instructions for GROMACS %s by using ARM_NEON_ASIMD as GMX_SIMD value", self.version) + else: + raise EasyBuildError("GROMACS-specific hook triggered for non-GROMACS easyconfig?!") + + def pre_configure_hook_openblas_optarch_generic(self, *args, **kwargs): """ Pre-configure hook for OpenBLAS: add DYNAMIC_ARCH=1 to build/test/install options when using --optarch=GENERIC @@ -665,6 +680,7 @@ def inject_gpu_property(ec): } PRE_CONFIGURE_HOOKS = { + 'GROMACS': pre_configure_hook_gromacs, 'libfabric': pre_configure_hook_libfabric_disable_psm3_x86_64_generic, 'MetaBAT': pre_configure_hook_metabat_filtered_zlib_dep, 'OpenBLAS': pre_configure_hook_openblas_optarch_generic, From ac82cc840bfbdae0638438fb85f9a5004e020f2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Tue, 30 Apr 2024 21:21:32 +0200 Subject: [PATCH 069/203] move bioconductor to eb 4.9.1 file --- .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml | 3 --- .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml | 3 +++ 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml index 23d64036f1..44952e2765 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml @@ -71,6 +71,3 @@ easyconfigs: options: # see https://github.com/easybuilders/easybuild-easyconfigs/pull/20238 from-pr: 20238 - - R-bundle-Bioconductor-3.18-foss-2023a-R-4.3.2.eb: - options: - from-pr: 20379 diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml index ec5fd3c638..e65747e4a5 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml @@ -1,3 +1,6 @@ easyconfigs: - ncdu-1.18-GCC-12.3.0.eb - SAMtools-1.18-GCC-12.3.0.eb + - R-bundle-Bioconductor-3.18-foss-2023a-R-4.3.2.eb: + options: + from-pr: 20379 From 3eee364b47b4cae85aa675d020a7bd7a362b47f0 Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Wed, 1 May 2024 11:11:41 +0200 Subject: [PATCH 070/203] register known issue for GROMACS 2024.1 on neoverse_v1 --- eessi-2023.06-known-issues.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/eessi-2023.06-known-issues.yml b/eessi-2023.06-known-issues.yml index 011cb2dc08..2d1256354f 100644 --- a/eessi-2023.06-known-issues.yml +++ b/eessi-2023.06-known-issues.yml @@ -19,6 +19,9 @@ - FFTW.MPI-3.3.10-gompi-2023b: - issue: https://github.com/EESSI/software-layer/issues/325 - info: "Flaky FFTW tests, random failures" + - GROMACS-2024.1-foss-2023b: + - issue: https://github.com/EESSI/software-layer/issues/557 + - info: "SVE disabled due to known bug which causes test failures" - Highway-1.0.3-GCCcore-12.2.0.eb: - issue: https://github.com/EESSI/software-layer/issues/469 - info: "failing SVE test due to wrong expected value" From fe0c7c534db6ce8d369aafaa84b4d0afaf7b3cc2 Mon Sep 17 00:00:00 2001 From: Neves-P Date: Wed, 1 May 2024 17:14:47 +0200 Subject: [PATCH 071/203] Add Lmod hook for ESPReSso --- create_lmodsitepackage.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/create_lmodsitepackage.py b/create_lmodsitepackage.py index 0761f2cdf1..ef17448f0c 100755 --- a/create_lmodsitepackage.py +++ b/create_lmodsitepackage.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python3 +z#!/usr/bin/env python3 # # Create SitePackage.lua configuration file for Lmod. # @@ -150,10 +150,24 @@ end end +local function eessi_espresso_deprecated_warning(t) + local frameStk = require("FrameStk"):singleton() + local mt = frameStk:mt() + local simpleName = string.match(t.modFullName, "(.-)/") + local version = string.match(t.modFullName, "%d.%d.%d") + if simpleName == 'ESPResSo' and version == '4.2.1' + local advice = 'Prefer versions >= 4.2.2 which include important bugfixes.\\n' + advice = advice .. 'For details see https://github.com/espressomd/espresso/issues/4856\\n' + advice = advice .. 'Use version 4.2.1 at your own risk!\\nn' + LmodWarning("\\nESPReSso v4.2.1 has known issues and has been deprecated. ", advice) + end +end + -- Combine both functions into a single one, as we can only register one function as load hook in lmod -- Also: make it non-local, so it can be imported and extended by other lmodrc files if needed function eessi_load_hook(t) eessi_cuda_enabled_load_hook(t) + eessi_espresso_deprecated_warning(t) end From 8f253276033d83d08ea770c1dd8ef946d6675d63 Mon Sep 17 00:00:00 2001 From: Neves-P Date: Mon, 6 May 2024 09:36:04 +0200 Subject: [PATCH 072/203] Fix typo --- create_lmodsitepackage.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/create_lmodsitepackage.py b/create_lmodsitepackage.py index ef17448f0c..61b40c4252 100755 --- a/create_lmodsitepackage.py +++ b/create_lmodsitepackage.py @@ -1,4 +1,4 @@ -z#!/usr/bin/env python3 +#!/usr/bin/env python3 # # Create SitePackage.lua configuration file for Lmod. # From a9e8ae8192e916b3b6bcbfa6c47206a748d362b8 Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Mon, 6 May 2024 16:06:22 +0200 Subject: [PATCH 073/203] Match name stub of files to CUDA allow list to ship --- .../2024.05.06-eb-4.9.1-CUDA-12.1.1-ship-full-runtime.yml | 8 ++++++++ eb_hooks.py | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 easystacks/software.eessi.io/2023.06/rebuilds/2024.05.06-eb-4.9.1-CUDA-12.1.1-ship-full-runtime.yml diff --git a/easystacks/software.eessi.io/2023.06/rebuilds/2024.05.06-eb-4.9.1-CUDA-12.1.1-ship-full-runtime.yml b/easystacks/software.eessi.io/2023.06/rebuilds/2024.05.06-eb-4.9.1-CUDA-12.1.1-ship-full-runtime.yml new file mode 100644 index 0000000000..2a9daf7ba6 --- /dev/null +++ b/easystacks/software.eessi.io/2023.06/rebuilds/2024.05.06-eb-4.9.1-CUDA-12.1.1-ship-full-runtime.yml @@ -0,0 +1,8 @@ +# 2024.05.06 +# Original matching of files we could ship was not done correctly. We were +# matching the basename for files (e.g., libcudart.so from libcudart.so.12) +# rather than the name stub (libcudart) +easyconfigs: + - CUDA-12.1.1.eb: + options: + accept-eula-for: CUDA diff --git a/eb_hooks.py b/eb_hooks.py index f02c8db48c..8b0a11b0ed 100644 --- a/eb_hooks.py +++ b/eb_hooks.py @@ -612,8 +612,8 @@ def post_sanitycheck_cuda(self, *args, **kwargs): full_path = os.path.join(dir_path, filename) # we only really care about real files, i.e. not symlinks if not os.path.islink(full_path): - # check if the current file is part of the allowlist - basename = os.path.splitext(filename)[0] + # check if the current file name stub is part of the allowlist + basename = filename.split('.')[0] if basename in allowlist: self.log.debug("%s is found in allowlist, so keeping it: %s", basename, full_path) else: From 28e5e9c52005cb46855e7fe965cd41997e9c48d6 Mon Sep 17 00:00:00 2001 From: ocaisa Date: Mon, 6 May 2024 18:49:34 +0200 Subject: [PATCH 074/203] Update 2024.05.06-eb-4.9.1-CUDA-12.1.1-ship-full-runtime.yml --- .../2024.05.06-eb-4.9.1-CUDA-12.1.1-ship-full-runtime.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/easystacks/software.eessi.io/2023.06/rebuilds/2024.05.06-eb-4.9.1-CUDA-12.1.1-ship-full-runtime.yml b/easystacks/software.eessi.io/2023.06/rebuilds/2024.05.06-eb-4.9.1-CUDA-12.1.1-ship-full-runtime.yml index 2a9daf7ba6..058ab75e80 100644 --- a/easystacks/software.eessi.io/2023.06/rebuilds/2024.05.06-eb-4.9.1-CUDA-12.1.1-ship-full-runtime.yml +++ b/easystacks/software.eessi.io/2023.06/rebuilds/2024.05.06-eb-4.9.1-CUDA-12.1.1-ship-full-runtime.yml @@ -2,6 +2,7 @@ # Original matching of files we could ship was not done correctly. We were # matching the basename for files (e.g., libcudart.so from libcudart.so.12) # rather than the name stub (libcudart) +# See https://github.com/EESSI/software-layer/pull/559 easyconfigs: - CUDA-12.1.1.eb: options: From cc91f3411df6010ff29247a94bfe9356e70cf342 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20R=C3=B6blitz?= Date: Tue, 7 May 2024 10:50:48 +0200 Subject: [PATCH 075/203] fix tiny typo --- EESSI-extend-2023.06-easybuild.eb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EESSI-extend-2023.06-easybuild.eb b/EESSI-extend-2023.06-easybuild.eb index c06087a940..e6e540bf45 100644 --- a/EESSI-extend-2023.06-easybuild.eb +++ b/EESSI-extend-2023.06-easybuild.eb @@ -157,7 +157,7 @@ elseif (project_modulepath ~= nil) then -- configure MODULEPATH prepend_path("MODULEPATH", project_modulepath) end --- Make aure EasyBuild itself is loaded +-- Make sure EasyBuild itself is loaded if not ( isloaded("EasyBuild") ) then load("EasyBuild") end From 38a0581480ac284c2802e5e63a0541fae31f786a Mon Sep 17 00:00:00 2001 From: Thomas Roeblitz Date: Tue, 7 May 2024 10:55:28 +0200 Subject: [PATCH 076/203] use eessi.io/docs and system easystack file --- EESSI-extend-2023.06-easybuild.eb | 2 +- .../2023.06/eessi-2023.06-eb-4.9.1-001-system.yml | 1 + .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml | 1 - 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/EESSI-extend-2023.06-easybuild.eb b/EESSI-extend-2023.06-easybuild.eb index e6e540bf45..241cde264b 100644 --- a/EESSI-extend-2023.06-easybuild.eb +++ b/EESSI-extend-2023.06-easybuild.eb @@ -5,7 +5,7 @@ version = '2023.06' # May have different ways to extend EESSI in future (manually, other tools,...) versionsuffix = '-easybuild' -homepage = 'https://eessi.github.io/docs/' +homepage = 'https://eessi.io/docs/' description = """ The goal of the European Environment for Scientific Software Installations diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-001-system.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-001-system.yml index c5a08b5209..46ac979719 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-001-system.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-001-system.yml @@ -2,3 +2,4 @@ easyconfigs: - EasyBuild-4.9.1.eb: options: from-pr: 20299 + - EESSI-extend-2023.06-easybuild.eb diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml index b7d4370b84..3b51db3b11 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml @@ -1,3 +1,2 @@ easyconfigs: - ncdu-1.18-GCC-12.3.0.eb - - EESSI-extend-2023.06-easybuild.eb From 0ff23347d31156ed4501f49f1a7f187f51257ecf Mon Sep 17 00:00:00 2001 From: ocaisa Date: Tue, 7 May 2024 12:05:38 +0200 Subject: [PATCH 077/203] Update EESSI-extend-2023.06-easybuild.eb --- EESSI-extend-2023.06-easybuild.eb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/EESSI-extend-2023.06-easybuild.eb b/EESSI-extend-2023.06-easybuild.eb index 241cde264b..76e96766f9 100644 --- a/EESSI-extend-2023.06-easybuild.eb +++ b/EESSI-extend-2023.06-easybuild.eb @@ -139,9 +139,11 @@ setenv ("EASYBUILD_SYSROOT", sysroot) setenv ("EASYBUILD_PREFIX", pathJoin(working_dir, "easybuild")) setenv ("EASYBUILD_INSTALLPATH", easybuild_installpath) setenv ("EASYBUILD_HOOKS", pathJoin(os.getenv("EESSI_PREFIX"), "init", "easybuild", "eb_hooks.py")) +setenv ("EASYBUILD_UMASK", "002") -- Set all related environment variables if we have project or user installations (including extending MODULEPATH) if (user_modulepath ~= nil) then + -- Use a more restrictive umask for this case setenv ("EASYBUILD_UMASK", "022") setenv ("EASYBUILD_STICKY_BIT", "1") -- configure MODULEPATH @@ -152,7 +154,6 @@ if (user_modulepath ~= nil) then elseif (project_modulepath ~= nil) then setenv ("EASYBUILD_SET_GID_BIT", "1") setenv ("EASYBUILD_GROUP_WRITABLE_INSTALLDIR", "1") - setenv ("EASYBUILD_UMASK", "002") setenv ("EASYBUILD_STICKY_BIT", "0") -- configure MODULEPATH prepend_path("MODULEPATH", project_modulepath) From 6682c7d36d54641aeb6a5cd9eeaf2cd981ef89d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Tue, 7 May 2024 13:32:25 +0200 Subject: [PATCH 078/203] move OSU-Micro-Benchmarks 2023b to 2023b easystack --- .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml | 1 - .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023b.yml | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml index 44952e2765..8f5608d881 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml @@ -35,7 +35,6 @@ easyconfigs: from-pr: 19996 - dask-2023.9.2-foss-2023a.eb - OSU-Micro-Benchmarks-7.2-gompi-2023a-CUDA-12.1.1.eb - - OSU-Micro-Benchmarks-7.2-gompi-2023b.eb - JupyterNotebook-7.0.2-GCCcore-12.3.0.eb - ImageMagick-7.1.1-15-GCCcore-12.3.0.eb: options: diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023b.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023b.yml index 86c5106c85..15c02951d7 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023b.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023b.yml @@ -57,3 +57,4 @@ easyconfigs: - Qt5-5.15.13-GCCcore-13.2.0.eb: options: from-pr: 20201 + - OSU-Micro-Benchmarks-7.2-gompi-2023b.eb From 298159e516db7c696b12ca57bf51a5328588ebf9 Mon Sep 17 00:00:00 2001 From: Thomas Roeblitz Date: Tue, 7 May 2024 14:27:24 +0200 Subject: [PATCH 079/203] bumping scorecard-action version to 2.3.1 --- .github/workflows/scorecards.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index dc18fd584a..7eff557094 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -40,7 +40,7 @@ jobs: persist-credentials: false - name: "Run analysis" - uses: ossf/scorecard-action@99c53751e09b9529366343771cc321ec74e9bd3d # v2.0.6 + uses: ossf/scorecard-action@0864cf19026789058feabb7e87baa5f140aac736 # v2.3.1 with: results_file: results.sarif results_format: sarif From 462adc5cdd5c3f2255f0275e45a7f6a82da584bf Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Tue, 7 May 2024 15:28:38 +0200 Subject: [PATCH 080/203] {2023.06,zen4} foss/2023a --- .../2023.06/zen4/eessi-2023.06-eb-4.9.1-2023a.yml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.1-2023a.yml diff --git a/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.1-2023a.yml b/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.1-2023a.yml new file mode 100644 index 0000000000..c821df1afb --- /dev/null +++ b/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.1-2023a.yml @@ -0,0 +1,2 @@ +easyconfigs: + - foss-2023a.eb From 06f88dbbc5f90654fb1d48c888a9575cb768be59 Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Tue, 7 May 2024 18:15:55 +0200 Subject: [PATCH 081/203] stick to x86_64/amd/zen3 when AMD Genoa (Zen4) is detected, until optimized software installations are available for Zen4 --- init/eessi_environment_variables | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/init/eessi_environment_variables b/init/eessi_environment_variables index 5450b2bfb4..e7f8f2faaa 100644 --- a/init/eessi_environment_variables +++ b/init/eessi_environment_variables @@ -48,6 +48,14 @@ if [ -d $EESSI_PREFIX ]; then fi if [ ! -z $EESSI_SOFTWARE_SUBDIR ]; then + # use x86_64/amd/zen3 for now when AMD Genoa (Zen4) CPU is detected, + # since optimized software installations for Zen4 are a work-in-progress, + # see https://gitlab.com/eessi/support/-/issues/37 + if [[ "${EESSI_SOFTWARE_SUBDIR}" == "x86_64/amd/zen4" ]]; then + export EESSI_SOFTWARE_SUBDIR="x86_64/amd/zen3" + echo -e "\e[33mSticking to ${EESSI_SOFTWARE_SUBDIR} for now, since optimized installations for AMD Genoa (Zen4) are a work in progress, see https://gitlab.com/eessi/support/-/issues/37 for more information\e[0m" + fi + show_msg "Using ${EESSI_SOFTWARE_SUBDIR} as software subdirectory." export EESSI_SOFTWARE_PATH=$EESSI_PREFIX/software/$EESSI_OS_TYPE/$EESSI_SOFTWARE_SUBDIR From 8cce17c83ba3230774a56de285de3fe369792595 Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Tue, 7 May 2024 19:19:54 +0200 Subject: [PATCH 082/203] relax check for existence of software overlay dir in script to create tarball to deploy --- create_tarball.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/create_tarball.sh b/create_tarball.sh index 2d77acfc43..0a7669f73f 100755 --- a/create_tarball.sh +++ b/create_tarball.sh @@ -28,7 +28,7 @@ fi overlay_upper_dir="${eessi_tmpdir}/overlay-upper" -software_dir_overlay="${overlay_upper_dir}/versions/${eessi_version}/software/${os}/${cpu_arch_subdir}" +software_dir_overlay="${overlay_upper_dir}/versions/${eessi_version}" if [ ! -d ${software_dir_overlay} ]; then echo "Software directory overlay ${software_dir_overlay} does not exist?!" >&2 exit 3 From 39dddf641af1d59498076154c77c9de500451d9d Mon Sep 17 00:00:00 2001 From: Caspar van Leeuwen <33718780+casparvl@users.noreply.github.com> Date: Tue, 7 May 2024 19:29:25 +0200 Subject: [PATCH 083/203] Update init/bash Co-authored-by: Kenneth Hoste --- init/bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init/bash b/init/bash index 565c37cc65..655260841d 100644 --- a/init/bash +++ b/init/bash @@ -26,7 +26,7 @@ if [ $? -eq 0 ]; then # prepend location of modules for EESSI software stack to $MODULEPATH show_msg "Prepending $EESSI_MODULEPATH to \$MODULEPATH..." module use $EESSI_MODULEPATH - echo "Prepending site path $EESSI_SITE_MODULEPATH to \$MODULEPATH..." >> $output + echo "Prepending site path $EESSI_SITE_MODULEPATH to \$MODULEPATH..." module use $EESSI_SITE_MODULEPATH #show_msg "" From 500b1de874a93e523ec308721f85a5824b8260e1 Mon Sep 17 00:00:00 2001 From: Caspar van Leeuwen <33718780+casparvl@users.noreply.github.com> Date: Tue, 7 May 2024 19:32:03 +0200 Subject: [PATCH 084/203] Update init/bash MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Thomas Röblitz --- init/bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init/bash b/init/bash index 655260841d..93471e075e 100644 --- a/init/bash +++ b/init/bash @@ -26,7 +26,7 @@ if [ $? -eq 0 ]; then # prepend location of modules for EESSI software stack to $MODULEPATH show_msg "Prepending $EESSI_MODULEPATH to \$MODULEPATH..." module use $EESSI_MODULEPATH - echo "Prepending site path $EESSI_SITE_MODULEPATH to \$MODULEPATH..." + show_msg "Prepending site path $EESSI_SITE_MODULEPATH to \$MODULEPATH..." module use $EESSI_SITE_MODULEPATH #show_msg "" From 999cbd359528edf4feedd822859b9e2d0f922d9b Mon Sep 17 00:00:00 2001 From: Thomas Roeblitz Date: Tue, 7 May 2024 19:45:16 +0200 Subject: [PATCH 085/203] relax check or tarball is not created unless also software was built --- create_tarball.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/create_tarball.sh b/create_tarball.sh index 2d77acfc43..0a7669f73f 100755 --- a/create_tarball.sh +++ b/create_tarball.sh @@ -28,7 +28,7 @@ fi overlay_upper_dir="${eessi_tmpdir}/overlay-upper" -software_dir_overlay="${overlay_upper_dir}/versions/${eessi_version}/software/${os}/${cpu_arch_subdir}" +software_dir_overlay="${overlay_upper_dir}/versions/${eessi_version}" if [ ! -d ${software_dir_overlay} ]; then echo "Software directory overlay ${software_dir_overlay} does not exist?!" >&2 exit 3 From 78b4e13a230b0b95cb4f41df013bf016c9b286b6 Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Tue, 7 May 2024 15:30:44 +0200 Subject: [PATCH 086/203] {2023.06,zen4} foss/2023b --- .../2023.06/zen4/eessi-2023.06-eb-4.9.1-2023b.yml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.1-2023b.yml diff --git a/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.1-2023b.yml b/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.1-2023b.yml new file mode 100644 index 0000000000..75dc4e6602 --- /dev/null +++ b/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.1-2023b.yml @@ -0,0 +1,2 @@ +easyconfigs: + - foss-2023b.eb From ac3e74795c735eb99acf93e0fe9c024d6d81291a Mon Sep 17 00:00:00 2001 From: ocaisa Date: Wed, 15 May 2024 11:16:49 +0200 Subject: [PATCH 087/203] Only correct the Zen4 software subdirectory if it has not been overridden --- init/eessi_environment_variables | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/init/eessi_environment_variables b/init/eessi_environment_variables index 71e70ee071..78851a9c95 100644 --- a/init/eessi_environment_variables +++ b/init/eessi_environment_variables @@ -52,8 +52,10 @@ if [ -d $EESSI_PREFIX ]; then # since optimized software installations for Zen4 are a work-in-progress, # see https://gitlab.com/eessi/support/-/issues/37 if [[ "${EESSI_SOFTWARE_SUBDIR}" == "x86_64/amd/zen4" ]]; then - export EESSI_SOFTWARE_SUBDIR="x86_64/amd/zen3" - echo -e "\e[33mSticking to ${EESSI_SOFTWARE_SUBDIR} for now, since optimized installations for AMD Genoa (Zen4) are a work in progress, see https://gitlab.com/eessi/support/-/issues/37 for more information\e[0m" + if [ -z $EESSI_SOFTWARE_SUBDIR_OVERRIDE ]; then + export EESSI_SOFTWARE_SUBDIR="x86_64/amd/zen3" + echo -e "\e[33mSticking to ${EESSI_SOFTWARE_SUBDIR} for now, since optimized installations for AMD Genoa (Zen4) are a work in progress, see https://gitlab.com/eessi/support/-/issues/37 for more information\e[0m" + fi fi show_msg "Using ${EESSI_SOFTWARE_SUBDIR} as software subdirectory." From d043d867a3dccce1b978ee2531923e970b6e6176 Mon Sep 17 00:00:00 2001 From: ocaisa Date: Wed, 15 May 2024 12:10:19 +0200 Subject: [PATCH 088/203] Add `psm2` to filtered dependencies for `2023.06` `PSM2` was introduced as a dependency of `libfabric` in https://github.com/easybuilders/easybuild-easyconfigs/pull/20501. We already have PSM2 in the compat layer, so we can filter this dependency out, but longer term we probably actually want it since it should be built with accelerator support. --- configure_easybuild | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/configure_easybuild b/configure_easybuild index c67b879cf3..60e3744603 100644 --- a/configure_easybuild +++ b/configure_easybuild @@ -32,6 +32,12 @@ if [[ "$EESSI_CPU_FAMILY" == "aarch64" ]]; then DEPS_TO_FILTER="${DEPS_TO_FILTER},Yasm" fi +# Version 23.06 of EESSI ships PSM2 in the compat layer, so we can filter this out while retaining support for OFA fabric +# (longer term this is probably not the right move as PSM2 should be configured with accelerator support, hence the restricted version) +if [[ "$EESSI_VERSION" == "2023.06" ]]; then + DEPS_TO_FILTER="${DEPS_TO_FILTER},psm2" +fi + export EASYBUILD_FILTER_DEPS=$DEPS_TO_FILTER export EASYBUILD_MODULE_EXTENSIONS=1 From ec2e8bdf04456b85bf9dae3a46ea132acba90df3 Mon Sep 17 00:00:00 2001 From: ocaisa Date: Wed, 15 May 2024 12:14:20 +0200 Subject: [PATCH 089/203] Update configure_easybuild --- configure_easybuild | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure_easybuild b/configure_easybuild index 60e3744603..ed3e651a4c 100644 --- a/configure_easybuild +++ b/configure_easybuild @@ -35,7 +35,7 @@ fi # Version 23.06 of EESSI ships PSM2 in the compat layer, so we can filter this out while retaining support for OFA fabric # (longer term this is probably not the right move as PSM2 should be configured with accelerator support, hence the restricted version) if [[ "$EESSI_VERSION" == "2023.06" ]]; then - DEPS_TO_FILTER="${DEPS_TO_FILTER},psm2" + DEPS_TO_FILTER="${DEPS_TO_FILTER},PSM2" fi export EASYBUILD_FILTER_DEPS=$DEPS_TO_FILTER From 3cdb7b2653336dd707b65197bf578f4012a6b0ff Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Wed, 15 May 2024 12:43:43 +0200 Subject: [PATCH 090/203] Add a rebuild of GROMACS --- ...240515-eb-4.9.1-GROMACS-correct-gmxapi-version.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 easystacks/software.eessi.io/2023.06/rebuilds/20240515-eb-4.9.1-GROMACS-correct-gmxapi-version.yml diff --git a/easystacks/software.eessi.io/2023.06/rebuilds/20240515-eb-4.9.1-GROMACS-correct-gmxapi-version.yml b/easystacks/software.eessi.io/2023.06/rebuilds/20240515-eb-4.9.1-GROMACS-correct-gmxapi-version.yml new file mode 100644 index 0000000000..e767c63f6e --- /dev/null +++ b/easystacks/software.eessi.io/2023.06/rebuilds/20240515-eb-4.9.1-GROMACS-correct-gmxapi-version.yml @@ -0,0 +1,11 @@ +# 2024.05.15 +# Originally shipped version forgot to bump the gmxapi version and source +# tarball, it was still using an older version from the 2023.3 tarball. Looking +# at https://gitlab.com/gromacs/gromacs/-/blob/v2024.1/python_packaging/gmxapi/src/gmxapi/version.py?ref_type=tags#L68, +# the 2024.1 release includes gmxapi 0.5.0. +# +# See https://github.com/easybuilders/easybuild-easyconfigs/pull/20522 +easyconfigs: + - GROMACS-2024.1-foss-2023b.eb: + options: + from-pr: 20522 From fb329a4bfe535cffc8d70958fc65fa0072180416 Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Wed, 15 May 2024 12:57:36 +0200 Subject: [PATCH 091/203] Also add new dependency on scikit-build-core --- .../20240515-eb-4.9.1-GROMACS-correct-gmxapi-version.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/easystacks/software.eessi.io/2023.06/rebuilds/20240515-eb-4.9.1-GROMACS-correct-gmxapi-version.yml b/easystacks/software.eessi.io/2023.06/rebuilds/20240515-eb-4.9.1-GROMACS-correct-gmxapi-version.yml index e767c63f6e..4eca76fd66 100644 --- a/easystacks/software.eessi.io/2023.06/rebuilds/20240515-eb-4.9.1-GROMACS-correct-gmxapi-version.yml +++ b/easystacks/software.eessi.io/2023.06/rebuilds/20240515-eb-4.9.1-GROMACS-correct-gmxapi-version.yml @@ -4,8 +4,13 @@ # at https://gitlab.com/gromacs/gromacs/-/blob/v2024.1/python_packaging/gmxapi/src/gmxapi/version.py?ref_type=tags#L68, # the 2024.1 release includes gmxapi 0.5.0. # +# This also introduced a new build dependency on scikit-build-core for GROMACS +# # See https://github.com/easybuilders/easybuild-easyconfigs/pull/20522 easyconfigs: + - scikit-build-core-0.9.3-GCCcore-13.2.0.eb: + options: + from-pr: 20526 - GROMACS-2024.1-foss-2023b.eb: options: from-pr: 20522 From 792ea3ebdbf011665f3b673ecd974b93e961f8c1 Mon Sep 17 00:00:00 2001 From: ocaisa Date: Wed, 15 May 2024 15:01:57 +0200 Subject: [PATCH 092/203] Use from-commit for merged PRs --- .../20240515-eb-4.9.1-GROMACS-correct-gmxapi-version.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/easystacks/software.eessi.io/2023.06/rebuilds/20240515-eb-4.9.1-GROMACS-correct-gmxapi-version.yml b/easystacks/software.eessi.io/2023.06/rebuilds/20240515-eb-4.9.1-GROMACS-correct-gmxapi-version.yml index 4eca76fd66..93d87bbcf3 100644 --- a/easystacks/software.eessi.io/2023.06/rebuilds/20240515-eb-4.9.1-GROMACS-correct-gmxapi-version.yml +++ b/easystacks/software.eessi.io/2023.06/rebuilds/20240515-eb-4.9.1-GROMACS-correct-gmxapi-version.yml @@ -10,7 +10,7 @@ easyconfigs: - scikit-build-core-0.9.3-GCCcore-13.2.0.eb: options: - from-pr: 20526 + from-commit: 61d07bff09afe63cfe1ae35dc58a0c8be01eed62 - GROMACS-2024.1-foss-2023b.eb: options: - from-pr: 20522 + from-commit: a0a467a88506c765a93a96b20d7a8fcb01d46b24 From 6cf63359d04a7662ae3aa021763765bf01d5f8c7 Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Wed, 15 May 2024 16:06:35 +0200 Subject: [PATCH 093/203] Allow EESSI-extend as a loaded module when using EasyBuild --- EESSI-extend-2023.06-easybuild.eb | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/EESSI-extend-2023.06-easybuild.eb b/EESSI-extend-2023.06-easybuild.eb index 76e96766f9..42defbacc8 100644 --- a/EESSI-extend-2023.06-easybuild.eb +++ b/EESSI-extend-2023.06-easybuild.eb @@ -139,12 +139,17 @@ setenv ("EASYBUILD_SYSROOT", sysroot) setenv ("EASYBUILD_PREFIX", pathJoin(working_dir, "easybuild")) setenv ("EASYBUILD_INSTALLPATH", easybuild_installpath) setenv ("EASYBUILD_HOOKS", pathJoin(os.getenv("EESSI_PREFIX"), "init", "easybuild", "eb_hooks.py")) -setenv ("EASYBUILD_UMASK", "002") + +-- Make sure to use the general umask that allows a global read +setenv ("EASYBUILD_UMASK", "022") + +-- All this module to be loaded when running EasyBuild +setenv ("EASYBUILD_ALLOW_LOADED_MODULES", "EasyBuild,EESSI-extend") -- Set all related environment variables if we have project or user installations (including extending MODULEPATH) if (user_modulepath ~= nil) then -- Use a more restrictive umask for this case - setenv ("EASYBUILD_UMASK", "022") + setenv ("EASYBUILD_UMASK", "077") setenv ("EASYBUILD_STICKY_BIT", "1") -- configure MODULEPATH if (project_modulepath ~= nil) then @@ -155,6 +160,7 @@ elseif (project_modulepath ~= nil) then setenv ("EASYBUILD_SET_GID_BIT", "1") setenv ("EASYBUILD_GROUP_WRITABLE_INSTALLDIR", "1") setenv ("EASYBUILD_STICKY_BIT", "0") + setenv ("EASYBUILD_UMASK", "002") -- configure MODULEPATH prepend_path("MODULEPATH", project_modulepath) end From fbdb8461fca7dbb28add02b128877d5b59bb24fc Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Wed, 15 May 2024 16:11:17 +0200 Subject: [PATCH 094/203] Rebuild the module --- .../20240506--eb-4.9.1-EESSI-extend-allow-loaded.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 easystacks/software.eessi.io/2023.06/rebuilds/20240506--eb-4.9.1-EESSI-extend-allow-loaded.yml diff --git a/easystacks/software.eessi.io/2023.06/rebuilds/20240506--eb-4.9.1-EESSI-extend-allow-loaded.yml b/easystacks/software.eessi.io/2023.06/rebuilds/20240506--eb-4.9.1-EESSI-extend-allow-loaded.yml new file mode 100644 index 0000000000..5cf2bd6b9d --- /dev/null +++ b/easystacks/software.eessi.io/2023.06/rebuilds/20240506--eb-4.9.1-EESSI-extend-allow-loaded.yml @@ -0,0 +1,5 @@ +# 2024.05.15 +# The module is an EasyBuil created module and therefore needs to be an allowed +# module when running EasyBuild +easyconfigs: + - EESSI-extend-2023.06-easybuild.eb From 375bf370137a33b748ed649625e532d836a962d5 Mon Sep 17 00:00:00 2001 From: ocaisa Date: Wed, 15 May 2024 16:17:53 +0200 Subject: [PATCH 095/203] Update 20240515-eb-4.9.1-GROMACS-correct-gmxapi-version.yml Issues seen when trying to use `from-commit` in https://github.com/EESSI/software-layer/pull/577 --- .../20240515-eb-4.9.1-GROMACS-correct-gmxapi-version.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/easystacks/software.eessi.io/2023.06/rebuilds/20240515-eb-4.9.1-GROMACS-correct-gmxapi-version.yml b/easystacks/software.eessi.io/2023.06/rebuilds/20240515-eb-4.9.1-GROMACS-correct-gmxapi-version.yml index 93d87bbcf3..eacfad7079 100644 --- a/easystacks/software.eessi.io/2023.06/rebuilds/20240515-eb-4.9.1-GROMACS-correct-gmxapi-version.yml +++ b/easystacks/software.eessi.io/2023.06/rebuilds/20240515-eb-4.9.1-GROMACS-correct-gmxapi-version.yml @@ -10,7 +10,9 @@ easyconfigs: - scikit-build-core-0.9.3-GCCcore-13.2.0.eb: options: - from-commit: 61d07bff09afe63cfe1ae35dc58a0c8be01eed62 + # from-commit: 61d07bff09afe63cfe1ae35dc58a0c8be01eed62 + from-pr: 20526 - GROMACS-2024.1-foss-2023b.eb: options: - from-commit: a0a467a88506c765a93a96b20d7a8fcb01d46b24 + # from-commit: a0a467a88506c765a93a96b20d7a8fcb01d46b24 + from-pr: 20522 From 2b30e1f2cca0a60b1dbf9ee0680aa48ba3f260da Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Wed, 15 May 2024 17:09:18 +0200 Subject: [PATCH 096/203] Allow overriding the Lmod GPU driver check --- EESSI-install-software.sh | 3 +++ create_lmodsitepackage.py | 9 ++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/EESSI-install-software.sh b/EESSI-install-software.sh index 8a5789c2b2..40f0ed8c3d 100755 --- a/EESSI-install-software.sh +++ b/EESSI-install-software.sh @@ -243,6 +243,9 @@ fi # if not, an error is produced, and the bot flags the whole build as failed (even when not installing GPU software) # ${EESSI_PREFIX}/scripts/gpu_support/nvidia/link_nvidia_host_libraries.sh +# Don't run the Lmod GPU driver check when doing builds (may not have a GPU, and it's not relevant for vanilla builds anyway) +export EESSI_OVERRIDE_GPU_CHECK=1 + # use PR patch file to determine in which easystack files stuff was added changed_easystacks=$(cat ${pr_diff} | grep '^+++' | cut -f2 -d' ' | sed 's@^[a-z]/@@g' | grep '^easystacks/.*yml$' | egrep -v 'known-issues|missing') if [ -z "${changed_easystacks}" ]; then diff --git a/create_lmodsitepackage.py b/create_lmodsitepackage.py index 47aa20e51e..816302f7fc 100755 --- a/create_lmodsitepackage.py +++ b/create_lmodsitepackage.py @@ -131,8 +131,9 @@ end -- when loading CUDA enabled modules check if the necessary driver libraries are accessible to the EESSI linker, -- otherwise, refuse to load the requested module and print error message - local haveGpu = mt:haveProperty(simpleName,"arch","gpu") - if haveGpu then + local checkGpu = mt:haveProperty(simpleName,"arch","gpu") + local overrideGpuCheck = os.getenv("EESSI_OVERRIDE_GPU_CHECK") + if checkGpu and (overrideGpuCheck == nil) then local arch = os.getenv("EESSI_CPU_FAMILY") or "" local cudaVersionFile = "/cvmfs/software.eessi.io/host_injections/nvidia/" .. arch .. "/latest/cuda_version.txt" local cudaDriverFile = "/cvmfs/software.eessi.io/host_injections/nvidia/" .. arch .. "/latest/libcuda.so" @@ -141,7 +142,9 @@ if not (cudaDriverExists or singularityCudaExists) then local advice = "which relies on the CUDA runtime environment and driver libraries. " advice = advice .. "In order to be able to use the module, you will need " - advice = advice .. "to make sure EESSI can find the GPU driver libraries on your host system.\\n" + advice = advice .. "to make sure EESSI can find the GPU driver libraries on your host system. You can " + advice = advice .. "override this check by setting the environment variable EESSI_OVERRIDE_GPU_CHECK but " + advice = advice .. "the loaded application will not be able to execute on your system.\\n" advice = advice .. refer_to_docs LmodError("\\nYou requested to load ", simpleName, " ", advice) else From 705030d6aca132df57e5432aa6ada663f04d682d Mon Sep 17 00:00:00 2001 From: Thomas Roeblitz Date: Thu, 16 May 2024 12:48:25 +0200 Subject: [PATCH 097/203] use directory of called script as base dir for other scripts --- bot/inspect.sh | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/bot/inspect.sh b/bot/inspect.sh index 9d1fa87e1f..f0589cd827 100755 --- a/bot/inspect.sh +++ b/bot/inspect.sh @@ -27,6 +27,8 @@ # stop as soon as something fails set -e +SCRIPT_DIR=$(dirname $(realpath $BASH_SOURCE)) + display_help() { echo "usage: $0 [OPTIONS]" echo " -h | --help - display this usage information" @@ -81,8 +83,8 @@ done set -- "${POSITIONAL_ARGS[@]}" # source utils.sh and cfg_files.sh -source scripts/utils.sh -source scripts/cfg_files.sh +source ${SCRIPT_DIR}/../scripts/utils.sh +source ${SCRIPT_DIR}/../scripts/cfg_files.sh if [[ -z ${resume_tgz} ]]; then echo_red "path to tarball for resuming build job is missing" @@ -432,14 +434,14 @@ echo "Executing command to start interactive session to inspect build job:" # These initializations are combined into a single script that is executed when # the shell in startprefix is started. We set the env variable BASH_ENV here. if [[ -z ${run_in_prefix} ]]; then - echo "./eessi_container.sh ${CMDLINE_ARGS[@]}" + echo "${SCRIPT_DIR}/../eessi_container.sh ${CMDLINE_ARGS[@]}" echo " -- ${EESSI_COMPAT_LAYER_DIR}/startprefix" - ./eessi_container.sh "${CMDLINE_ARGS[@]}" \ + ${SCRIPT_DIR}/../eessi_container.sh "${CMDLINE_ARGS[@]}" \ -- ${EESSI_COMPAT_LAYER_DIR}/startprefix else - echo "./eessi_container.sh ${CMDLINE_ARGS[@]}" + echo "${SCRIPT_DIR}/../eessi_container.sh ${CMDLINE_ARGS[@]}" echo " -- ${EESSI_COMPAT_LAYER_DIR}/startprefix <<< ${run_in_prefix}" - ./eessi_container.sh "${CMDLINE_ARGS[@]}" \ + ${SCRIPT_DIR}/../eessi_container.sh "${CMDLINE_ARGS[@]}" \ -- ${EESSI_COMPAT_LAYER_DIR}/startprefix <<< ${run_in_prefix} fi From 082722eb6cb9028567f2b5af3bbb1c12d9fc5c15 Mon Sep 17 00:00:00 2001 From: Thomas Roeblitz Date: Thu, 16 May 2024 17:17:01 +0200 Subject: [PATCH 098/203] use single variable for directory containing script; use lowercase var name --- bot/inspect.sh | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/bot/inspect.sh b/bot/inspect.sh index f0589cd827..533968bffc 100755 --- a/bot/inspect.sh +++ b/bot/inspect.sh @@ -27,7 +27,9 @@ # stop as soon as something fails set -e -SCRIPT_DIR=$(dirname $(realpath $BASH_SOURCE)) +# script_dir is the directory that contains THIS (inspect.sh) script, usually +# stored in the directory '.../bot' +script_dir=$(dirname $(realpath $BASH_SOURCE)) display_help() { echo "usage: $0 [OPTIONS]" @@ -83,8 +85,8 @@ done set -- "${POSITIONAL_ARGS[@]}" # source utils.sh and cfg_files.sh -source ${SCRIPT_DIR}/../scripts/utils.sh -source ${SCRIPT_DIR}/../scripts/cfg_files.sh +source ${script_dir}/../scripts/utils.sh +source ${script_dir}/../scripts/cfg_files.sh if [[ -z ${resume_tgz} ]]; then echo_red "path to tarball for resuming build job is missing" @@ -257,10 +259,8 @@ CMDLINE_ARGS+=("--storage" "${JOB_STORAGE}") # make sure some environment settings are available inside the shell started via # startprefix -base_dir=$(dirname $(realpath $0)) -# base_dir of inspect.sh script is '.../bot', 'init' dir is at the same level # TODO better use script from tarball??? -source ${base_dir}/../init/eessi_defaults +source ${script_dir}/../init/eessi_defaults if [ -z $EESSI_VERSION ]; then echo "ERROR: \$EESSI_VERSION must be set!" >&2 @@ -434,14 +434,14 @@ echo "Executing command to start interactive session to inspect build job:" # These initializations are combined into a single script that is executed when # the shell in startprefix is started. We set the env variable BASH_ENV here. if [[ -z ${run_in_prefix} ]]; then - echo "${SCRIPT_DIR}/../eessi_container.sh ${CMDLINE_ARGS[@]}" + echo "${script_dir}/../eessi_container.sh ${CMDLINE_ARGS[@]}" echo " -- ${EESSI_COMPAT_LAYER_DIR}/startprefix" - ${SCRIPT_DIR}/../eessi_container.sh "${CMDLINE_ARGS[@]}" \ + ${script_dir}/../eessi_container.sh "${CMDLINE_ARGS[@]}" \ -- ${EESSI_COMPAT_LAYER_DIR}/startprefix else - echo "${SCRIPT_DIR}/../eessi_container.sh ${CMDLINE_ARGS[@]}" + echo "${script_dir}/../eessi_container.sh ${CMDLINE_ARGS[@]}" echo " -- ${EESSI_COMPAT_LAYER_DIR}/startprefix <<< ${run_in_prefix}" - ${SCRIPT_DIR}/../eessi_container.sh "${CMDLINE_ARGS[@]}" \ + ${script_dir}/../eessi_container.sh "${CMDLINE_ARGS[@]}" \ -- ${EESSI_COMPAT_LAYER_DIR}/startprefix <<< ${run_in_prefix} fi From 9fd84f95e19477a75d781cbf1590fd0068ee7587 Mon Sep 17 00:00:00 2001 From: Neves-P Date: Fri, 17 May 2024 20:15:44 +0200 Subject: [PATCH 099/203] Fix syntax errors --- create_lmodsitepackage.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/create_lmodsitepackage.py b/create_lmodsitepackage.py index 61b40c4252..4817f14181 100755 --- a/create_lmodsitepackage.py +++ b/create_lmodsitepackage.py @@ -155,12 +155,12 @@ local mt = frameStk:mt() local simpleName = string.match(t.modFullName, "(.-)/") local version = string.match(t.modFullName, "%d.%d.%d") - if simpleName == 'ESPResSo' and version == '4.2.1' + if simpleName == 'ESPResSo' and version == '4.2.1' then local advice = 'Prefer versions >= 4.2.2 which include important bugfixes.\\n' advice = advice .. 'For details see https://github.com/espressomd/espresso/issues/4856\\n' advice = advice .. 'Use version 4.2.1 at your own risk!\\nn' LmodWarning("\\nESPReSso v4.2.1 has known issues and has been deprecated. ", advice) - end + end end -- Combine both functions into a single one, as we can only register one function as load hook in lmod From 9d8dbb9e105b8c325a267cb3e7f1504dccc82d94 Mon Sep 17 00:00:00 2001 From: Bob Droge Date: Tue, 21 May 2024 14:09:04 +0000 Subject: [PATCH 100/203] add (empty) RISC-V spec file --- init/arch_specs/eessi_arch_riscv.spec | 1 + 1 file changed, 1 insertion(+) create mode 100644 init/arch_specs/eessi_arch_riscv.spec diff --git a/init/arch_specs/eessi_arch_riscv.spec b/init/arch_specs/eessi_arch_riscv.spec new file mode 100644 index 0000000000..430dd2e72d --- /dev/null +++ b/init/arch_specs/eessi_arch_riscv.spec @@ -0,0 +1 @@ +# Software path in EESSI | Vendor ID | List of defining CPU features From 19d14eeb913fedd61604e1fc44675dbcc2a11799 Mon Sep 17 00:00:00 2001 From: Bob Droge Date: Tue, 21 May 2024 14:09:35 +0000 Subject: [PATCH 101/203] add initial riscv64 support --- init/eessi_archdetect.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/init/eessi_archdetect.sh b/init/eessi_archdetect.sh index 58b79b0f2a..e89bc75e13 100755 --- a/init/eessi_archdetect.sh +++ b/init/eessi_archdetect.sh @@ -85,6 +85,7 @@ cpupath(){ "x86_64") local spec_file="eessi_arch_x86.spec";; "aarch64") local spec_file="eessi_arch_arm.spec";; "ppc64le") local spec_file="eessi_arch_ppc.spec";; + "riscv64") local spec_file="eessi_arch_riscv.spec";; *) log "ERROR" "cpupath: Unsupported CPU architecture $machine_type" esac # spec files are located in a subfolder with this script From 02683fb5325fc7c599e4bd847a927a4447894e0c Mon Sep 17 00:00:00 2001 From: Bob Droge Date: Tue, 21 May 2024 14:09:56 +0000 Subject: [PATCH 102/203] use different defaults for RISC-V --- init/eessi_defaults | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/init/eessi_defaults b/init/eessi_defaults index d1779a36ae..c1ce82d1ce 100644 --- a/init/eessi_defaults +++ b/init/eessi_defaults @@ -8,8 +8,20 @@ # license: GPLv2 # -export EESSI_CVMFS_REPO="${EESSI_CVMFS_REPO_OVERRIDE:=/cvmfs/software.eessi.io}" -export EESSI_VERSION="${EESSI_VERSION_OVERRIDE:=2023.06}" +# use different defaults for RISC-V, as we want to redirect to the riscv.eessi.io repo +if [[ $(uname -m) == "riscv64" ]]; then + export EESSI_CVMFS_REPO="${EESSI_CVMFS_REPO_OVERRIDE:=/cvmfs/riscv.eessi.io}" + export EESSI_VERSION="${EESSI_VERSION_OVERRIDE:=20240402}" + if [[ ! -v EESSI_SILENT ]]; then + echo "RISC-V architecture detected, but there is no RISC-V support yet in the production repository." + echo "Automatically switching to version ${EESSI_VERSION} of the RISC-V development repository ${EESSI_CVMFS_REPO}." + echo "For more details about this repository, see https://www.eessi.io/docs/repositories/riscv.eessi.io/." + echo "" + fi +else + export EESSI_CVMFS_REPO="${EESSI_CVMFS_REPO_OVERRIDE:=/cvmfs/software.eessi.io}" + export EESSI_VERSION="${EESSI_VERSION_OVERRIDE:=2023.06}" +fi # use archdetect by default, unless otherwise specified export EESSI_USE_ARCHDETECT="${EESSI_USE_ARCHDETECT:=1}" export EESSI_USE_ARCHSPEC="${EESSI_USE_ARCHSPEC:=0}" From 243620e734d1514d9104c85d8c0b835007c9dfd7 Mon Sep 17 00:00:00 2001 From: Bob Droge Date: Tue, 21 May 2024 14:10:23 +0000 Subject: [PATCH 103/203] update comment about CPU families: add RISC-V, remove POWER --- init/minimal_eessi_env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init/minimal_eessi_env b/init/minimal_eessi_env index 5b3562068d..03b337ccf7 100644 --- a/init/minimal_eessi_env +++ b/init/minimal_eessi_env @@ -16,7 +16,7 @@ else export EESSI_OS_TYPE='macos' fi -# aarch64 (Arm 64-bit), ppc64le (POWER 64-bit), x86_64 (x86 64-bit) +# aarch64 (Arm 64-bit), riscv64 (RISC-V 64-bit), x86_64 (x86 64-bit) export EESSI_CPU_FAMILY=$(uname -m) # set $EPREFIX since that is basically a standard in Gentoo Prefix From 84036fa5a262712ccde2bd0bdb9ee5b701e87e20 Mon Sep 17 00:00:00 2001 From: Bob Droge Date: Tue, 21 May 2024 21:06:19 +0000 Subject: [PATCH 104/203] also install RISC-V spec file --- install_scripts.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install_scripts.sh b/install_scripts.sh index 17f0b81008..ab06e47997 100755 --- a/install_scripts.sh +++ b/install_scripts.sh @@ -92,7 +92,7 @@ copy_files_by_list ${TOPDIR}/init ${INSTALL_PREFIX}/init "${init_files[@]}" # Copy for the init/arch_specs directory arch_specs_files=( - eessi_arch_arm.spec eessi_arch_ppc.spec eessi_arch_x86.spec + eessi_arch_arm.spec eessi_arch_ppc.spec eessi_arch_riscv.spec eessi_arch_x86.spec ) copy_files_by_list ${TOPDIR}/init/arch_specs ${INSTALL_PREFIX}/init/arch_specs "${arch_specs_files[@]}" From 9a185ea42e8d96282f43fc9a90652347da9afb28 Mon Sep 17 00:00:00 2001 From: Pedro Santos Neves <10762799+Neves-P@users.noreply.github.com> Date: Wed, 22 May 2024 17:51:15 +0200 Subject: [PATCH 105/203] Add ESPResSo v.4.2.2 to foss/2023a 4.9.1 stack --- .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml index e65747e4a5..2fdc40e284 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml @@ -4,3 +4,6 @@ easyconfigs: - R-bundle-Bioconductor-3.18-foss-2023a-R-4.3.2.eb: options: from-pr: 20379 + - ESPResSo-4.2.2-foss-2023a.eb: + options: + from-pr: 20595 From 20ccd475f61f664fd55cc17b857c750f0821ad19 Mon Sep 17 00:00:00 2001 From: Pedro Santos Neves <10762799+Neves-P@users.noreply.github.com> Date: Thu, 23 May 2024 14:14:18 +0200 Subject: [PATCH 106/203] Advice refers to release notes, not single issue ESPResSo Lmod warning <= v4.2.1 points users to v4.2.2 release notes instead of only one of the bugs fixed --- create_lmodsitepackage.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/create_lmodsitepackage.py b/create_lmodsitepackage.py index e0d7b31f9e..84b18d499b 100755 --- a/create_lmodsitepackage.py +++ b/create_lmodsitepackage.py @@ -179,7 +179,7 @@ local version = string.match(t.modFullName, "%d.%d.%d") if simpleName == 'ESPResSo' and version == '4.2.1' then local advice = 'Prefer versions >= 4.2.2 which include important bugfixes.\\n' - advice = advice .. 'For details see https://github.com/espressomd/espresso/issues/4856\\n' + advice = advice .. 'For details see https://github.com/espressomd/espresso/releases/tag/4.2.2\\n' advice = advice .. 'Use version 4.2.1 at your own risk!\\nn' LmodWarning("\\nESPReSso v4.2.1 has known issues and has been deprecated. ", advice) end From 7f328675deec19f88969eee91945f44617f68ab6 Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Thu, 23 May 2024 15:51:36 +0200 Subject: [PATCH 107/203] Use EESSI_OVERRIDE_GPU_CHECK everywhere --- eessi_container.sh | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/eessi_container.sh b/eessi_container.sh index 7d00d1400c..a95a2c87c9 100755 --- a/eessi_container.sh +++ b/eessi_container.sh @@ -464,10 +464,9 @@ if [[ ${SETUP_NVIDIA} -eq 1 ]]; then BIND_PATHS="${BIND_PATHS},${EESSI_VAR_LOG}:/var/log,${EESSI_USR_LOCAL_CUDA}:/usr/local/cuda" [[ ${VERBOSE} -eq 1 ]] && echo "BIND_PATHS=${BIND_PATHS}" if [[ "${NVIDIA_MODE}" == "install" ]] ; then - # We need to "trick" our LMOD_RC file to allow us to load CUDA modules even without a CUDA driver - # (this works because we build within a container and the LMOD_RC recognises that) - touch ${EESSI_TMPDIR}/libcuda.so - export SINGULARITY_CONTAINLIBS="${EESSI_TMPDIR}/libcuda.so" + # No GPU so we need to "trick" Lmod to allow us to load CUDA modules even without a CUDA driver + # (this variable means EESSI_OVERRIDE_GPU_CHECK=1 will be set inside the container) + export SINGULARITYENV_EESSI_OVERRIDE_GPU_CHECK=1 fi fi fi From df4ac260e209e9ccc2578562845ceb2a328dbbb0 Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Thu, 23 May 2024 16:05:27 +0200 Subject: [PATCH 108/203] Restrict overridding the GPU driver check to when we know it is valid --- EESSI-install-software.sh | 3 --- 1 file changed, 3 deletions(-) diff --git a/EESSI-install-software.sh b/EESSI-install-software.sh index 40f0ed8c3d..8a5789c2b2 100755 --- a/EESSI-install-software.sh +++ b/EESSI-install-software.sh @@ -243,9 +243,6 @@ fi # if not, an error is produced, and the bot flags the whole build as failed (even when not installing GPU software) # ${EESSI_PREFIX}/scripts/gpu_support/nvidia/link_nvidia_host_libraries.sh -# Don't run the Lmod GPU driver check when doing builds (may not have a GPU, and it's not relevant for vanilla builds anyway) -export EESSI_OVERRIDE_GPU_CHECK=1 - # use PR patch file to determine in which easystack files stuff was added changed_easystacks=$(cat ${pr_diff} | grep '^+++' | cut -f2 -d' ' | sed 's@^[a-z]/@@g' | grep '^easystacks/.*yml$' | egrep -v 'known-issues|missing') if [ -z "${changed_easystacks}" ]; then From bee4b001322a0d22c79642b5b1427f2c397a9f3b Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Fri, 24 May 2024 10:47:45 +0200 Subject: [PATCH 109/203] Make sure EESSI_OVERRIDE_GPU_CHECK is still set when in prefix shell --- run_in_compat_layer_env.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/run_in_compat_layer_env.sh b/run_in_compat_layer_env.sh index f57c4d0749..b8e9cf979b 100755 --- a/run_in_compat_layer_env.sh +++ b/run_in_compat_layer_env.sh @@ -26,6 +26,9 @@ fi if [ ! -z ${EESSI_VERSION_OVERRIDE} ]; then INPUT="export EESSI_VERSION_OVERRIDE=${EESSI_VERSION_OVERRIDE}; ${INPUT}" fi +if [ ! -z ${EESSI_OVERRIDE_GPU_CHECK} ]; then + INPUT="export EESSI_OVERRIDE_GPU_CHECK=${EESSI_OVERRIDE_GPU_CHECK}; ${INPUT}" +fi if [ ! -z ${http_proxy} ]; then INPUT="export http_proxy=${http_proxy}; ${INPUT}" fi From f788ca3ab94ab384ee2e4a98e5b76e2a9317102f Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Fri, 24 May 2024 11:18:04 +0200 Subject: [PATCH 110/203] Only install NVIDIA drivers if nvidia-smi command exists --- EESSI-install-software.sh | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/EESSI-install-software.sh b/EESSI-install-software.sh index 8a5789c2b2..7d358e205a 100755 --- a/EESSI-install-software.sh +++ b/EESSI-install-software.sh @@ -17,6 +17,11 @@ display_help() { echo " --skip-cuda-install - disable installing a full CUDA SDK in the host_injections prefix (e.g. in CI)" } +# Function to check if a command exists +function command_exists() { + command -v "$1" >/dev/null 2>&1 +} + function copy_build_log() { # copy specified build log to specified directory, with some context added build_log=${1} @@ -238,10 +243,11 @@ else echo "Skipping installation of CUDA SDK in host_injections, since the --skip-cuda-install flag was passed OR no EasyBuild module was found" fi -# Install drivers in host_injections -# TODO: this is commented out for now, because the script assumes that nvidia-smi is available and works; -# if not, an error is produced, and the bot flags the whole build as failed (even when not installing GPU software) -# ${EESSI_PREFIX}/scripts/gpu_support/nvidia/link_nvidia_host_libraries.sh +# Install NVIDIA drivers in host_injections (if they exist) +if command_exists "nvidia-smi"; then + echo "Command 'nvidia-smi' found. Installing NVIDIA drivers for use in prefix shell..." + ${EESSI_PREFIX}/scripts/gpu_support/nvidia/link_nvidia_host_libraries.sh +fi # use PR patch file to determine in which easystack files stuff was added changed_easystacks=$(cat ${pr_diff} | grep '^+++' | cut -f2 -d' ' | sed 's@^[a-z]/@@g' | grep '^easystacks/.*yml$' | egrep -v 'known-issues|missing') From f974c34a85b3fb322906b974b7fcf084fa6398df Mon Sep 17 00:00:00 2001 From: Pedro Santos Neves <10762799+Neves-P@users.noreply.github.com> Date: Mon, 27 May 2024 09:49:10 +0200 Subject: [PATCH 111/203] Fix typo in create_lmodsitepackage.py ESPReSso warning --- create_lmodsitepackage.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/create_lmodsitepackage.py b/create_lmodsitepackage.py index 84b18d499b..31c040718d 100755 --- a/create_lmodsitepackage.py +++ b/create_lmodsitepackage.py @@ -180,7 +180,7 @@ if simpleName == 'ESPResSo' and version == '4.2.1' then local advice = 'Prefer versions >= 4.2.2 which include important bugfixes.\\n' advice = advice .. 'For details see https://github.com/espressomd/espresso/releases/tag/4.2.2\\n' - advice = advice .. 'Use version 4.2.1 at your own risk!\\nn' + advice = advice .. 'Use version 4.2.1 at your own risk!\\n' LmodWarning("\\nESPReSso v4.2.1 has known issues and has been deprecated. ", advice) end end From 39c8abac220d428dc60f0fcf016dbcf6e0a2d049 Mon Sep 17 00:00:00 2001 From: Pedro Santos Neves <10762799+Neves-P@users.noreply.github.com> Date: Mon, 27 May 2024 09:59:09 +0200 Subject: [PATCH 112/203] ESPReSso -> ESPResSo --- create_lmodsitepackage.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/create_lmodsitepackage.py b/create_lmodsitepackage.py index 31c040718d..bca2970e39 100755 --- a/create_lmodsitepackage.py +++ b/create_lmodsitepackage.py @@ -181,7 +181,7 @@ local advice = 'Prefer versions >= 4.2.2 which include important bugfixes.\\n' advice = advice .. 'For details see https://github.com/espressomd/espresso/releases/tag/4.2.2\\n' advice = advice .. 'Use version 4.2.1 at your own risk!\\n' - LmodWarning("\\nESPReSso v4.2.1 has known issues and has been deprecated. ", advice) + LmodWarning("\\nESPResSo v4.2.1 has known issues and has been deprecated. ", advice) end end From b15fc3d58c270ad3e28727f30e92c78744cbeee9 Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Mon, 27 May 2024 10:54:00 +0200 Subject: [PATCH 113/203] Update bot build script to support whether GPU is available or not --- bot/build.sh | 10 +++++++++- scripts/utils.sh | 5 +++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/bot/build.sh b/bot/build.sh index dcc61c19d4..c9a362fdca 100755 --- a/bot/build.sh +++ b/bot/build.sh @@ -223,7 +223,15 @@ mkdir -p ${TARBALL_TMP_BUILD_STEP_DIR} BUILD_STEP_ARGS+=("--save" "${TARBALL_TMP_BUILD_STEP_DIR}") BUILD_STEP_ARGS+=("--storage" "${STORAGE}") # add options required to handle NVIDIA support -BUILD_STEP_ARGS+=("--nvidia" "all") +if command_exists "nvidia-smi"; then + echo "Command 'nvidia-smi' found, using available GPU" + BUILD_STEP_ARGS+=("--nvidia" "all") +else + echo "No 'nvidia-smi' found, no available GPU but allowing overriding this check" + BUILD_STEP_ARGS+=("--nvidia" "install") +fi +# Retain location for host injections so we don't reinstall CUDA +# (Always need to run the driver installation as available driver may change) if [[ ! -z ${SHARED_FS_PATH} ]]; then BUILD_STEP_ARGS+=("--host-injections" "${SHARED_FS_PATH}/host-injections") fi diff --git a/scripts/utils.sh b/scripts/utils.sh index b2be3f6221..962decd20e 100644 --- a/scripts/utils.sh +++ b/scripts/utils.sh @@ -78,6 +78,11 @@ function create_directory_structure() { return $return_code } +# Function to check if a command exists +function command_exists() { + command -v "$1" >/dev/null 2>&1 +} + function get_path_for_tool { tool_name=$1 tool_envvar_name=$2 From bb4b3c1b17e9eb6ca588a64690445a505353c1c9 Mon Sep 17 00:00:00 2001 From: Thomas Roeblitz Date: Tue, 28 May 2024 20:31:11 +0200 Subject: [PATCH 114/203] {2023.06}[gfbf/2023a] ipympl v0.9.3 --- .../2023.06/eessi-2023.06-eb-4.9.0-2023a.yml | 10 +++++++--- .../2023.06/eessi-2023.06-eb-4.9.1-2023a.yml | 8 ++++++++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml index 8f5608d881..4b58cb6106 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml @@ -48,9 +48,13 @@ easyconfigs: - PyOpenGL-3.1.7-GCCcore-12.3.0.eb: options: from-pr: 20007 - - ipympl-0.9.3-foss-2023a.eb: - options: - from-pr: 20126 + # removed by https://github.com/easybuilders/easybuild-easyconfigs/pull/20586 + # adding ipympl-0.9.3-gfbf-2023a.eb as a replacement in + # easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml + # comment the below out here or CI will fail + # - ipympl-0.9.3-foss-2023a.eb: + # options: + # from-pr: 20126 - OpenJPEG-2.5.0-GCCcore-12.3.0.eb - OpenFOAM-10-foss-2023a.eb - Highway-1.0.4-GCCcore-12.3.0.eb diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml index e65747e4a5..32b388854d 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml @@ -4,3 +4,11 @@ easyconfigs: - R-bundle-Bioconductor-3.18-foss-2023a-R-4.3.2.eb: options: from-pr: 20379 + # replacement for ipympl-0.9.3-foss-2023a.eb which has been built via + # easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml and was + # later removed in https://github.com/easybuilders/easybuild-easyconfigs/pull/20586 + # below we use the replacement ec file which is provided by + # https://github.com/easybuilders/easybuild-easyconfigs/pull/18852 + - ipympl-0.9.3-gfbf-2023a.eb: + options: + from-pr: 18852 From 9a036d8c9059c4eda163279322dda915e601b7e3 Mon Sep 17 00:00:00 2001 From: Thomas Roeblitz Date: Wed, 29 May 2024 06:34:05 +0200 Subject: [PATCH 115/203] {2023.06}[foss/2023a] GATK v4.5.0.0 --- .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml index 8238b379f9..3e5c09090e 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml @@ -15,3 +15,4 @@ easyconfigs: - ESPResSo-4.2.2-foss-2023a.eb: options: from-pr: 20595 + - GATK-4.5.0.0-GCCcore-12.3.0-Java-17.eb From 7c48321761b291bb68046722f628360837a134e0 Mon Sep 17 00:00:00 2001 From: Pedro Santos Neves <10762799+Neves-P@users.noreply.github.com> Date: Fri, 31 May 2024 11:52:11 +0200 Subject: [PATCH 116/203] Print message, not warning On ESPResSo version 4.2.1 message, don't use `LmodWarning` but use `LmodMessage` instead --- create_lmodsitepackage.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/create_lmodsitepackage.py b/create_lmodsitepackage.py index ed98d1f0f0..f159f186eb 100755 --- a/create_lmodsitepackage.py +++ b/create_lmodsitepackage.py @@ -175,16 +175,18 @@ end end -local function eessi_espresso_deprecated_warning(t) +local function eessi_espresso_deprecated_message(t) local frameStk = require("FrameStk"):singleton() local mt = frameStk:mt() local simpleName = string.match(t.modFullName, "(.-)/") local version = string.match(t.modFullName, "%d.%d.%d") if simpleName == 'ESPResSo' and version == '4.2.1' then + -- Print a message on loading ESPreSso v <= 4.2.1 recommending using v 4.2.2 and above. + -- A message and not a warning as the exit code would break CI runs otherwise. local advice = 'Prefer versions >= 4.2.2 which include important bugfixes.\\n' advice = advice .. 'For details see https://github.com/espressomd/espresso/releases/tag/4.2.2\\n' advice = advice .. 'Use version 4.2.1 at your own risk!\\n' - LmodWarning("\\nESPResSo v4.2.1 has known issues and has been deprecated. ", advice) + LmodMessage("\\nESPResSo v4.2.1 has known issues and has been deprecated. ", advice) end end From 76babe873669777a79a30e6abc33517873fa31a3 Mon Sep 17 00:00:00 2001 From: Pedro Santos Neves <10762799+Neves-P@users.noreply.github.com> Date: Fri, 31 May 2024 13:57:20 +0200 Subject: [PATCH 117/203] Correctly use `eessi_espresso_deprecated_message()` --- create_lmodsitepackage.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/create_lmodsitepackage.py b/create_lmodsitepackage.py index f159f186eb..7e55bce2a5 100755 --- a/create_lmodsitepackage.py +++ b/create_lmodsitepackage.py @@ -193,7 +193,7 @@ -- Combine both functions into a single one, as we can only register one function as load hook in lmod -- Also: make it non-local, so it can be imported and extended by other lmodrc files if needed function eessi_load_hook(t) - eessi_espresso_deprecated_warning(t) + eessi_espresso_deprecated_message(t) -- Only apply CUDA hooks if the loaded module is in the EESSI prefix -- This avoids getting an Lmod Error when trying to load a CUDA module from a local software stack if from_eessi_prefix(t) then From 22578c43328a6e6257b5023e0cac52d21c5f637b Mon Sep 17 00:00:00 2001 From: Richard Top Date: Mon, 3 Jun 2024 09:43:04 +0000 Subject: [PATCH 118/203] {2023.06}[foss/2022b] ParaView v5.11.1 --- .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2022b.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2022b.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2022b.yml index e547e45f2b..d023fbbaf1 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2022b.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2022b.yml @@ -2,3 +2,4 @@ easyconfigs: - R-bundle-Bioconductor-3.16-foss-2022b-R-4.2.2.eb: options: from-pr: 20379 + - ParaView-5.11.1-foss-2022b.eb From c77c2676ce98260b88fc9b23130f82cf693168f3 Mon Sep 17 00:00:00 2001 From: Richard Top Date: Tue, 4 Jun 2024 06:37:24 +0000 Subject: [PATCH 119/203] {2023.06}[foss/2023a] WhatsHap v2.2 --- .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml index 3e5c09090e..49a7191121 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml @@ -16,3 +16,4 @@ easyconfigs: options: from-pr: 20595 - GATK-4.5.0.0-GCCcore-12.3.0-Java-17.eb + - WhatsHap-2.2-foss-2023a.eb From 3d3019db4be7ecda681ae862ab33962cc1d61e37 Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Tue, 4 Jun 2024 10:48:27 +0200 Subject: [PATCH 120/203] Update scorecards to latest version --- .github/workflows/scorecards.yml | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 7eff557094..5b482763f2 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -4,24 +4,20 @@ name: Scorecards supply-chain security on: - # For Branch-Protection check. Only the default branch is supported. See - # https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection - branch_protection_rule: # To guarantee Maintained check is occasionally updated. See # https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained schedule: - cron: '25 15 * * 3' push: - branches: [ "main" ] - pull_request: - branches: - - main + branches: + - '2023.06-software.eessi.io' # Declare default permissions as read only. permissions: read-all jobs: analysis: + if: github.repository_owner == 'EESSI' # Prevent running on forks name: Scorecards analysis runs-on: ubuntu-latest permissions: @@ -35,12 +31,12 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 with: persist-credentials: false - name: "Run analysis" - uses: ossf/scorecard-action@0864cf19026789058feabb7e87baa5f140aac736 # v2.3.1 + uses: ossf/scorecard-action@dc50aa9510b46c811795eb24b2f1ba02a914e534 # v2.3.3 with: results_file: results.sarif results_format: sarif @@ -62,7 +58,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0 + uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 with: name: SARIF file path: results.sarif @@ -70,6 +66,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@807578363a7869ca324a79039e6db9c843e0e100 # v2.1.27 + uses: github/codeql-action/upload-sarif@9fdb3e49720b44c48891d036bb502feb25684276 # v3.25.6 with: sarif_file: results.sarif From a111b6db76a816e030b40d9d4e60e93686f80709 Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Thu, 6 Jun 2024 07:53:55 +0200 Subject: [PATCH 121/203] {2023.06,2023b,zen4} SciPy-bundle v2023.11 --- .../2023.06/zen4/eessi-2023.06-eb-4.9.1-2023b.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.1-2023b.yml b/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.1-2023b.yml index 75dc4e6602..bc736c4056 100644 --- a/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.1-2023b.yml +++ b/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.1-2023b.yml @@ -1,2 +1,3 @@ easyconfigs: - foss-2023b.eb + - SciPy-bundle-2023.11-gfbf-2023b.eb From fe809a5228a05c699169fd1280de89ce15a753b8 Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Thu, 6 Jun 2024 07:54:28 +0200 Subject: [PATCH 122/203] {2023.06,2023b,zen4} SciPy-bundle v2023.07 --- .../2023.06/zen4/eessi-2023.06-eb-4.9.1-2023a.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.1-2023a.yml b/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.1-2023a.yml index c821df1afb..b3afe2b368 100644 --- a/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.1-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.1-2023a.yml @@ -1,2 +1,3 @@ easyconfigs: - foss-2023a.eb + - SciPy-bundle-2023.07-gfbf-2023a.eb From fa2fd59c37432395ac45dceffdd99c8a4ea08948 Mon Sep 17 00:00:00 2001 From: Richard Top Date: Thu, 6 Jun 2024 06:36:30 +0000 Subject: [PATCH 123/203] {2023.06}[gfbf/2022b] ASE v3.22.1 --- .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2022b.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2022b.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2022b.yml index d023fbbaf1..385f33b5cb 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2022b.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2022b.yml @@ -3,3 +3,4 @@ easyconfigs: options: from-pr: 20379 - ParaView-5.11.1-foss-2022b.eb + - ASE-3.22.1-gfbf-2022b.eb From 08e09ca1655348b7e08e11a4cca710522509f291 Mon Sep 17 00:00:00 2001 From: Richard Top Date: Fri, 7 Jun 2024 06:14:03 +0000 Subject: [PATCH 124/203] {2023.06}[foss/2023b] NLTK v3.8.1 --- .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023b.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023b.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023b.yml index 1392fa2f5a..b06cb2788e 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023b.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023b.yml @@ -2,3 +2,4 @@ easyconfigs: - GROMACS-2024.1-foss-2023b.eb: options: from-pr: 20439 + - NLTK-3.8.1-foss-2023b.eb From 9b3f02da7e8c1279cf20cb9a37356b7c430e32f7 Mon Sep 17 00:00:00 2001 From: Richard Top Date: Fri, 7 Jun 2024 08:07:14 +0000 Subject: [PATCH 125/203] {2023.06}[foss/2022b] SEPP v4.5.1 --- .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2022b.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2022b.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2022b.yml index 385f33b5cb..57c985b020 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2022b.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2022b.yml @@ -4,3 +4,4 @@ easyconfigs: from-pr: 20379 - ParaView-5.11.1-foss-2022b.eb - ASE-3.22.1-gfbf-2022b.eb + - SEPP-4.5.1-foss-2022b.eb From 46d9018f40db4ca174f60746102335ba87ad53b5 Mon Sep 17 00:00:00 2001 From: ocaisa Date: Fri, 7 Jun 2024 12:03:50 +0200 Subject: [PATCH 126/203] Apply suggestions from code review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Bob Dröge --- EESSI-extend-2023.06-easybuild.eb | 2 +- .../rebuilds/20240506--eb-4.9.1-EESSI-extend-allow-loaded.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/EESSI-extend-2023.06-easybuild.eb b/EESSI-extend-2023.06-easybuild.eb index 42defbacc8..b525ee462d 100644 --- a/EESSI-extend-2023.06-easybuild.eb +++ b/EESSI-extend-2023.06-easybuild.eb @@ -143,7 +143,7 @@ setenv ("EASYBUILD_HOOKS", pathJoin(os.getenv("EESSI_PREFIX"), "init", "easybuil -- Make sure to use the general umask that allows a global read setenv ("EASYBUILD_UMASK", "022") --- All this module to be loaded when running EasyBuild +-- Allow this module to be loaded when running EasyBuild setenv ("EASYBUILD_ALLOW_LOADED_MODULES", "EasyBuild,EESSI-extend") -- Set all related environment variables if we have project or user installations (including extending MODULEPATH) diff --git a/easystacks/software.eessi.io/2023.06/rebuilds/20240506--eb-4.9.1-EESSI-extend-allow-loaded.yml b/easystacks/software.eessi.io/2023.06/rebuilds/20240506--eb-4.9.1-EESSI-extend-allow-loaded.yml index 5cf2bd6b9d..93c4950fc8 100644 --- a/easystacks/software.eessi.io/2023.06/rebuilds/20240506--eb-4.9.1-EESSI-extend-allow-loaded.yml +++ b/easystacks/software.eessi.io/2023.06/rebuilds/20240506--eb-4.9.1-EESSI-extend-allow-loaded.yml @@ -1,5 +1,5 @@ # 2024.05.15 -# The module is an EasyBuil created module and therefore needs to be an allowed +# The module is an EasyBuild created module and therefore needs to be an allowed # module when running EasyBuild easyconfigs: - EESSI-extend-2023.06-easybuild.eb From 51118efbea0730b820493ff27dab231f256fb53f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 7 Jun 2024 12:08:09 +0200 Subject: [PATCH 127/203] remove double hyphen in filename --- ...loaded.yml => 20240506-eb-4.9.1-EESSI-extend-allow-loaded.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename easystacks/software.eessi.io/2023.06/rebuilds/{20240506--eb-4.9.1-EESSI-extend-allow-loaded.yml => 20240506-eb-4.9.1-EESSI-extend-allow-loaded.yml} (100%) diff --git a/easystacks/software.eessi.io/2023.06/rebuilds/20240506--eb-4.9.1-EESSI-extend-allow-loaded.yml b/easystacks/software.eessi.io/2023.06/rebuilds/20240506-eb-4.9.1-EESSI-extend-allow-loaded.yml similarity index 100% rename from easystacks/software.eessi.io/2023.06/rebuilds/20240506--eb-4.9.1-EESSI-extend-allow-loaded.yml rename to easystacks/software.eessi.io/2023.06/rebuilds/20240506-eb-4.9.1-EESSI-extend-allow-loaded.yml From 3bdfff7a7fe360b066a971a0c29f67414470c12f Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Sat, 8 Jun 2024 14:33:46 +0200 Subject: [PATCH 128/203] {2023.06,zen4}[foss/2023a] ESPResSo 4.2.1 --- .../2023.06/zen4/eessi-2023.06-eb-4.9.1-2023a.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.1-2023a.yml b/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.1-2023a.yml index b3afe2b368..a529746676 100644 --- a/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.1-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.1-2023a.yml @@ -1,3 +1,4 @@ easyconfigs: - foss-2023a.eb - SciPy-bundle-2023.07-gfbf-2023a.eb + - ESPResSo-4.2.1-foss-2023a.eb From 0b715d73f2fb7c157a28953de233cf71703b6136 Mon Sep 17 00:00:00 2001 From: Richard Top Date: Mon, 10 Jun 2024 05:52:26 +0000 Subject: [PATCH 129/203] {2023.06}[gompi/2023a] BLAST+ v2.14.1 --- .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml index 49a7191121..f53ad9235c 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml @@ -17,3 +17,6 @@ easyconfigs: from-pr: 20595 - GATK-4.5.0.0-GCCcore-12.3.0-Java-17.eb - WhatsHap-2.2-foss-2023a.eb + - BLAST+-2.14.1-gompi-2023a.eb: + options: + from-pr: 20751 From c7a2e6e348e99a2ac7ca170c4c2d7b1eddc46a94 Mon Sep 17 00:00:00 2001 From: Caspar van Leeuwen Date: Mon, 10 Jun 2024 11:06:39 +0200 Subject: [PATCH 130/203] Change smile for failed test runs --- bot/check-test.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bot/check-test.sh b/bot/check-test.sh index f045b9500a..3b16e5c415 100755 --- a/bot/check-test.sh +++ b/bot/check-test.sh @@ -101,7 +101,7 @@ elif [[ ${ERROR} -eq 1 ]]; then reason="EESSI test suite was not run, test step itself failed to execute." status="FAILURE" else - summary=":grin: FAILURE" + summary=":cry: FAILURE" reason="Failed for unknown reason" status="FAILURE" fi From ad17f4384c1e9500c9c34aa71ae6b0d51e3c446e Mon Sep 17 00:00:00 2001 From: Caspar van Leeuwen Date: Mon, 10 Jun 2024 11:43:55 +0200 Subject: [PATCH 131/203] Fix emoticon --- bot/check-test.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bot/check-test.sh b/bot/check-test.sh index f045b9500a..3b16e5c415 100755 --- a/bot/check-test.sh +++ b/bot/check-test.sh @@ -101,7 +101,7 @@ elif [[ ${ERROR} -eq 1 ]]; then reason="EESSI test suite was not run, test step itself failed to execute." status="FAILURE" else - summary=":grin: FAILURE" + summary=":cry: FAILURE" reason="Failed for unknown reason" status="FAILURE" fi From 596c70299d3f73098f0e6b711e5b246ffd54766e Mon Sep 17 00:00:00 2001 From: TopRichard <121792457+TopRichard@users.noreply.github.com> Date: Mon, 10 Jun 2024 15:24:13 +0200 Subject: [PATCH 132/203] Update easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Bob Dröge --- .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml index f53ad9235c..be3b9c1bbf 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml @@ -19,4 +19,4 @@ easyconfigs: - WhatsHap-2.2-foss-2023a.eb - BLAST+-2.14.1-gompi-2023a.eb: options: - from-pr: 20751 + from-pr: 20784 From f288436f8193c70e87485bce1e3866915525720a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Mon, 10 Jun 2024 20:42:07 +0200 Subject: [PATCH 133/203] add Valgrind --- .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2022b.yml | 1 + .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml | 1 + .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023b.yml | 1 + 3 files changed, 3 insertions(+) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2022b.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2022b.yml index 57c985b020..1805c581c3 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2022b.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2022b.yml @@ -5,3 +5,4 @@ easyconfigs: - ParaView-5.11.1-foss-2022b.eb - ASE-3.22.1-gfbf-2022b.eb - SEPP-4.5.1-foss-2022b.eb + - Valgrind-3.21.0-gompi-2022b.eb diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml index 49a7191121..db9a6d7e36 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml @@ -17,3 +17,4 @@ easyconfigs: from-pr: 20595 - GATK-4.5.0.0-GCCcore-12.3.0-Java-17.eb - WhatsHap-2.2-foss-2023a.eb + - Valgrind-3.21.0-gompi-2023a.eb diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023b.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023b.yml index b06cb2788e..c071f220cf 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023b.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023b.yml @@ -3,3 +3,4 @@ easyconfigs: options: from-pr: 20439 - NLTK-3.8.1-foss-2023b.eb + - Valgrind-3.23.0-gompi-2023b.eb From c9287ed954484034e94fed5a8b6292d8c135bb1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Mon, 10 Jun 2024 20:44:35 +0200 Subject: [PATCH 134/203] add --from-pr to Valgrind --- .../2023.06/eessi-2023.06-eb-4.9.1-2023b.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023b.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023b.yml index c071f220cf..888bddace3 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023b.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023b.yml @@ -3,4 +3,6 @@ easyconfigs: options: from-pr: 20439 - NLTK-3.8.1-foss-2023b.eb - - Valgrind-3.23.0-gompi-2023b.eb + - Valgrind-3.23.0-gompi-2023b.eb: + options: + from-pr: 20792 From c4af3895e61781cba2dbb3d5982e024d95a15d77 Mon Sep 17 00:00:00 2001 From: Richard Top Date: Tue, 11 Jun 2024 09:19:04 +0000 Subject: [PATCH 135/203] {2023.06}[foss/2023a] OrthoFinder v2.5.5 --- .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml index be3b9c1bbf..1d74452e45 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-2023a.yml @@ -20,3 +20,4 @@ easyconfigs: - BLAST+-2.14.1-gompi-2023a.eb: options: from-pr: 20784 + - OrthoFinder-2.5.5-foss-2023a.eb From 525b23e9af30453137617ce27f456279151bc1e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Thu, 13 Jun 2024 10:26:49 +0200 Subject: [PATCH 136/203] add easystack for EB 4.9.2 and install it --- .../2023.06/eessi-2023.06-eb-4.9.2-001-system.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-001-system.yml diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-001-system.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-001-system.yml new file mode 100644 index 0000000000..cd87626494 --- /dev/null +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-001-system.yml @@ -0,0 +1,5 @@ +easyconfigs: + - EasyBuild-4.9.2.eb: + options: + from-pr: 20801 + include-easyblocks-from-pr: 3358 From 460da691db015a88e00a0df8548f3f0721b0c6ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Thu, 13 Jun 2024 13:03:30 +0200 Subject: [PATCH 137/203] add EB 4.9.2 --- .../2023.06/eessi-2023.06-eb-4.9.1-001-system.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-001-system.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-001-system.yml index 46ac979719..8f96cf9450 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-001-system.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-001-system.yml @@ -3,3 +3,7 @@ easyconfigs: options: from-pr: 20299 - EESSI-extend-2023.06-easybuild.eb + - EasyBuild-4.9.2.eb: + options: + from-pr: 20801 + include-easyblocks-from-pr: 3358 From 911737d2bea6cea92c09262bcfa605e18ba553eb Mon Sep 17 00:00:00 2001 From: Caspar van Leeuwen Date: Thu, 13 Jun 2024 14:05:46 +0200 Subject: [PATCH 138/203] Add template field for mem per node --- reframe_config_bot.py.tmpl | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/reframe_config_bot.py.tmpl b/reframe_config_bot.py.tmpl index 0cc3e9f530..607373767a 100644 --- a/reframe_config_bot.py.tmpl +++ b/reframe_config_bot.py.tmpl @@ -34,6 +34,11 @@ site_configuration = { 'options': ['--mem={size}'], } ], + 'extras': { + # Make sure to round down, otherwise a job might ask for more mem than is available + # per node + 'mem_per_node': __MEM_PER_NODE__, + }, 'max_jobs': 1 } ] From e10b227d3299a0945edd5ecede13b9784c4fd748 Mon Sep 17 00:00:00 2001 From: Caspar van Leeuwen Date: Thu, 13 Jun 2024 14:14:36 +0200 Subject: [PATCH 139/203] Get memory limit for cgroup of current job / UID and put this into the ReFrame config file --- test_suite.sh | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/test_suite.sh b/test_suite.sh index 95eb9daa2a..5c157f7a47 100755 --- a/test_suite.sh +++ b/test_suite.sh @@ -135,7 +135,7 @@ export RFM_PREFIX=$PWD/reframe_runs echo "Configured reframe with the following environment variables:" env | grep "RFM_" -# Inject correct CPU properties into the ReFrame config file +# Inject correct CPU/memory properties into the ReFrame config file cpuinfo=$(lscpu) if [[ "${cpuinfo}" =~ CPU\(s\):[^0-9]*([0-9]+) ]]; then cpu_count=${BASH_REMATCH[1]} @@ -157,11 +157,19 @@ if [[ "${cpuinfo}" =~ (Core\(s\) per socket:[^0-9]*([0-9]+)) ]]; then else fatal_error "Failed to get the number of cores per socket for the current test hardware with lscpu." fi +cgroup_mem_bytes=$(cat /sys/fs/cgroup/memory/slurm/uid_${UID}/job_${SLURM_JOB_ID}/memory.limit_in_bytes) +if [[ $? -eq 0 ]] + # Convert to MiB + cgroup_mem_mib=$((cgroup_mem_bytes/(1024*1024))) +else + fatal_error "Failed to get the memory limit in bytes from the current cgroup" +fi cp ${RFM_CONFIG_FILE_TEMPLATE} ${RFM_CONFIG_FILES} sed -i "s/__NUM_CPUS__/${cpu_count}/g" $RFM_CONFIG_FILES sed -i "s/__NUM_SOCKETS__/${socket_count}/g" $RFM_CONFIG_FILES sed -i "s/__NUM_CPUS_PER_CORE__/${threads_per_core}/g" $RFM_CONFIG_FILES sed -i "s/__NUM_CPUS_PER_SOCKET__/${cores_per_socket}/g" $RFM_CONFIG_FILES +sed -i "s/__MEM_PER_NODE__/${cgroup_mem_mib/g" $RFM_CONFIG_FILES # Workaround for https://github.com/EESSI/software-layer/pull/467#issuecomment-1973341966 export PSM3_DEVICES='self,shm' # this is enough, since we only run single node for now From 644eddcb66a46871cdfe93ef54ca70954169f548 Mon Sep 17 00:00:00 2001 From: Caspar van Leeuwen Date: Thu, 13 Jun 2024 14:16:02 +0200 Subject: [PATCH 140/203] Missing bracket --- test_suite.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test_suite.sh b/test_suite.sh index 5c157f7a47..2d072d3d95 100755 --- a/test_suite.sh +++ b/test_suite.sh @@ -169,7 +169,7 @@ sed -i "s/__NUM_CPUS__/${cpu_count}/g" $RFM_CONFIG_FILES sed -i "s/__NUM_SOCKETS__/${socket_count}/g" $RFM_CONFIG_FILES sed -i "s/__NUM_CPUS_PER_CORE__/${threads_per_core}/g" $RFM_CONFIG_FILES sed -i "s/__NUM_CPUS_PER_SOCKET__/${cores_per_socket}/g" $RFM_CONFIG_FILES -sed -i "s/__MEM_PER_NODE__/${cgroup_mem_mib/g" $RFM_CONFIG_FILES +sed -i "s/__MEM_PER_NODE__/${cgroup_mem_mib}/g" $RFM_CONFIG_FILES # Workaround for https://github.com/EESSI/software-layer/pull/467#issuecomment-1973341966 export PSM3_DEVICES='self,shm' # this is enough, since we only run single node for now From bcba10e3553806f4f1dda6d27412f4756464f13c Mon Sep 17 00:00:00 2001 From: Caspar van Leeuwen Date: Thu, 13 Jun 2024 14:16:48 +0200 Subject: [PATCH 141/203] Fix if-else syntax --- test_suite.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test_suite.sh b/test_suite.sh index 2d072d3d95..46b43ee78a 100755 --- a/test_suite.sh +++ b/test_suite.sh @@ -158,7 +158,7 @@ else fatal_error "Failed to get the number of cores per socket for the current test hardware with lscpu." fi cgroup_mem_bytes=$(cat /sys/fs/cgroup/memory/slurm/uid_${UID}/job_${SLURM_JOB_ID}/memory.limit_in_bytes) -if [[ $? -eq 0 ]] +if [[ $? -eq 0 ]]; then # Convert to MiB cgroup_mem_mib=$((cgroup_mem_bytes/(1024*1024))) else From 70c1b146789d3d0c4d92f0a368ab078c724b898a Mon Sep 17 00:00:00 2001 From: Caspar van Leeuwen Date: Thu, 13 Jun 2024 15:18:17 +0200 Subject: [PATCH 142/203] Make sure we bind-mount /sys/fs/cgroup into the container, so that we can use it to determine available memory for dynamically configuring ReFrame in the test step --- bot/test.sh | 3 ++ eessi_container.sh | 78 ++++++++++++++++++++++++++-------------------- test_suite.sh | 2 +- 3 files changed, 48 insertions(+), 35 deletions(-) diff --git a/bot/test.sh b/bot/test.sh index 4984340e6e..b3f6acf0ea 100755 --- a/bot/test.sh +++ b/bot/test.sh @@ -204,6 +204,9 @@ if [[ -z ${RESUME_DIR} ]]; then else TEST_STEP_ARGS+=("--resume" "${RESUME_DIR}") fi +# Bind mount /sys/fs/cgroup so that we can determine the amount of memory available in our cgroup for +# Reframe configuration +TEST_STEP_ARGS+=("--extra-bind-paths /sys/fs/cgroup:/hostsys/fs/cgroup:ro") # prepare arguments to test_suite.sh (specific to test step) declare -a TEST_SUITE_ARGS=() diff --git a/eessi_container.sh b/eessi_container.sh index a95a2c87c9..eac8e74c83 100755 --- a/eessi_container.sh +++ b/eessi_container.sh @@ -70,40 +70,43 @@ export EESSI_REPOS_CFG_FILE="${EESSI_REPOS_CFG_DIR}/repos.cfg" display_help() { echo "usage: $0 [OPTIONS] [[--] SCRIPT or COMMAND]" echo " OPTIONS:" - echo " -a | --access {ro,rw} - ro (read-only), rw (read & write) [default: ro]" - echo " -c | --container IMG - image file or URL defining the container to use" - echo " [default: docker://ghcr.io/eessi/build-node:debian11]" - echo " -f | --fakeroot - run the container with --fakeroot [default: false]" - echo " -g | --storage DIR - directory space on host machine (used for" - echo " temporary data) [default: 1. TMPDIR, 2. /tmp]" - echo " -h | --help - display this usage information [default: false]" - echo " -i | --host-injections - directory to link to for host_injections " - echo " [default: /..storage../opt-eessi]" - echo " -l | --list-repos - list available repository identifiers [default: false]" - echo " -m | --mode MODE - with MODE==shell (launch interactive shell) or" - echo " MODE==run (run a script or command) [default: shell]" - echo " -n | --nvidia MODE - configure the container to work with NVIDIA GPUs," - echo " MODE==install for a CUDA installation, MODE==run to" - echo " attach a GPU, MODE==all for both [default: false]" - echo " -r | --repository CFG - configuration file or identifier defining the" - echo " repository to use [default: EESSI via" - echo " default container, see --container]" - echo " -u | --resume DIR/TGZ - resume a previous run from a directory or tarball," - echo " where DIR points to a previously used tmp directory" - echo " (check for output 'Using DIR as tmp ...' of a previous" - echo " run) and TGZ is the path to a tarball which is" - echo " unpacked the tmp dir stored on the local storage space" - echo " (see option --storage above) [default: not set]" - echo " -s | --save DIR/TGZ - save contents of tmp directory to a tarball in" - echo " directory DIR or provided with the fixed full path TGZ" - echo " when a directory is provided, the format of the" - echo " tarball's name will be {REPO_ID}-{TIMESTAMP}.tgz" - echo " [default: not set]" - echo " -v | --verbose - display more information [default: false]" - echo " -x | --http-proxy URL - provides URL for the env variable http_proxy" - echo " [default: not set]; uses env var \$http_proxy if set" - echo " -y | --https-proxy URL - provides URL for the env variable https_proxy" - echo " [default: not set]; uses env var \$https_proxy if set" + echo " -a | --access {ro,rw} - ro (read-only), rw (read & write) [default: ro]" + echo " -c | --container IMG - image file or URL defining the container to use" + echo " [default: docker://ghcr.io/eessi/build-node:debian11]" + echo " -f | --fakeroot - run the container with --fakeroot [default: false]" + echo " -g | --storage DIR - directory space on host machine (used for" + echo " temporary data) [default: 1. TMPDIR, 2. /tmp]" + echo " -h | --help - display this usage information [default: false]" + echo " -i | --host-injections - directory to link to for host_injections " + echo " [default: /..storage../opt-eessi]" + echo " -l | --list-repos - list available repository identifiers [default: false]" + echo " -m | --mode MODE - with MODE==shell (launch interactive shell) or" + echo " MODE==run (run a script or command) [default: shell]" + echo " -n | --nvidia MODE - configure the container to work with NVIDIA GPUs," + echo " MODE==install for a CUDA installation, MODE==run to" + echo " attach a GPU, MODE==all for both [default: false]" + echo " -r | --repository CFG - configuration file or identifier defining the" + echo " repository to use [default: EESSI via" + echo " default container, see --container]" + echo " -u | --resume DIR/TGZ - resume a previous run from a directory or tarball," + echo " where DIR points to a previously used tmp directory" + echo " (check for output 'Using DIR as tmp ...' of a previous" + echo " run) and TGZ is the path to a tarball which is" + echo " unpacked the tmp dir stored on the local storage space" + echo " (see option --storage above) [default: not set]" + echo " -s | --save DIR/TGZ - save contents of tmp directory to a tarball in" + echo " directory DIR or provided with the fixed full path TGZ" + echo " when a directory is provided, the format of the" + echo " tarball's name will be {REPO_ID}-{TIMESTAMP}.tgz" + echo " [default: not set]" + echo " -v | --verbose - display more information [default: false]" + echo " -x | --http-proxy URL - provides URL for the env variable http_proxy" + echo " [default: not set]; uses env var \$http_proxy if set" + echo " -y | --https-proxy URL - provides URL for the env variable https_proxy" + echo " [default: not set]; uses env var \$https_proxy if set" + echo " -b | --extra-bind-paths - specify extra paths to be bound into the container." + echo " To specify multiple bind paths, seperate by comma." + echo " Example: '/src:/dest:ro,/src2:/dest2:rw'" echo echo " If value for --mode is 'run', the SCRIPT/COMMAND provided is executed. If" echo " arguments to the script/command start with '-' or '--', use the flag terminator" @@ -197,6 +200,10 @@ while [[ $# -gt 0 ]]; do export https_proxy=${HTTPS_PROXY} shift 2 ;; + -b|--extra-bind-paths) + EXTRA_BIND_PATHS="$2" + shift 2 + ;; --) shift POSITIONAL_ARGS+=("$@") # save positional args @@ -439,6 +446,9 @@ fi BIND_PATHS="${EESSI_CVMFS_VAR_LIB}:/var/lib/cvmfs,${EESSI_CVMFS_VAR_RUN}:/var/run/cvmfs,${HOST_INJECTIONS}:/opt/eessi" # provide a '/tmp' inside the container BIND_PATHS="${BIND_PATHS},${EESSI_TMPDIR}:${TMP_IN_CONTAINER}" +if [[ ! -z ${EXTRA_BIND_PATHS} ]]; then + BIND_PATHS="${BIND_PATHS},${EXTRA_BIND_PATHS}" +fi [[ ${VERBOSE} -eq 1 ]] && echo "BIND_PATHS=${BIND_PATHS}" diff --git a/test_suite.sh b/test_suite.sh index 46b43ee78a..6e73fbd87c 100755 --- a/test_suite.sh +++ b/test_suite.sh @@ -157,7 +157,7 @@ if [[ "${cpuinfo}" =~ (Core\(s\) per socket:[^0-9]*([0-9]+)) ]]; then else fatal_error "Failed to get the number of cores per socket for the current test hardware with lscpu." fi -cgroup_mem_bytes=$(cat /sys/fs/cgroup/memory/slurm/uid_${UID}/job_${SLURM_JOB_ID}/memory.limit_in_bytes) +cgroup_mem_bytes=$(cat /hostsys/fs/cgroup/memory/slurm/uid_${UID}/job_${SLURM_JOB_ID}/memory.limit_in_bytes) if [[ $? -eq 0 ]]; then # Convert to MiB cgroup_mem_mib=$((cgroup_mem_bytes/(1024*1024))) From 5bfd7c1c0898ee268530295f794438cd1fd29836 Mon Sep 17 00:00:00 2001 From: Caspar van Leeuwen <33718780+casparvl@users.noreply.github.com> Date: Thu, 13 Jun 2024 16:45:32 +0200 Subject: [PATCH 143/203] Update eessi_container.sh MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Bob Dröge --- eessi_container.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/eessi_container.sh b/eessi_container.sh index eac8e74c83..55b0aa4c63 100755 --- a/eessi_container.sh +++ b/eessi_container.sh @@ -71,6 +71,9 @@ display_help() { echo "usage: $0 [OPTIONS] [[--] SCRIPT or COMMAND]" echo " OPTIONS:" echo " -a | --access {ro,rw} - ro (read-only), rw (read & write) [default: ro]" + echo " -b | --extra-bind-paths - specify extra paths to be bound into the container." + echo " To specify multiple bind paths, seperate by comma." + echo " Example: '/src:/dest:ro,/src2:/dest2:rw'" echo " -c | --container IMG - image file or URL defining the container to use" echo " [default: docker://ghcr.io/eessi/build-node:debian11]" echo " -f | --fakeroot - run the container with --fakeroot [default: false]" @@ -104,9 +107,6 @@ display_help() { echo " [default: not set]; uses env var \$http_proxy if set" echo " -y | --https-proxy URL - provides URL for the env variable https_proxy" echo " [default: not set]; uses env var \$https_proxy if set" - echo " -b | --extra-bind-paths - specify extra paths to be bound into the container." - echo " To specify multiple bind paths, seperate by comma." - echo " Example: '/src:/dest:ro,/src2:/dest2:rw'" echo echo " If value for --mode is 'run', the SCRIPT/COMMAND provided is executed. If" echo " arguments to the script/command start with '-' or '--', use the flag terminator" From a7fca5155a4e9c145d73c416c85e4c1e6f2c2c12 Mon Sep 17 00:00:00 2001 From: Caspar van Leeuwen Date: Thu, 13 Jun 2024 16:46:33 +0200 Subject: [PATCH 144/203] Sort alphabetically --- eessi_container.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/eessi_container.sh b/eessi_container.sh index eac8e74c83..aa5df50af6 100755 --- a/eessi_container.sh +++ b/eessi_container.sh @@ -137,6 +137,10 @@ while [[ $# -gt 0 ]]; do ACCESS="$2" shift 2 ;; + -b|--extra-bind-paths) + EXTRA_BIND_PATHS="$2" + shift 2 + ;; -c|--container) CONTAINER="$2" shift 2 @@ -200,10 +204,6 @@ while [[ $# -gt 0 ]]; do export https_proxy=${HTTPS_PROXY} shift 2 ;; - -b|--extra-bind-paths) - EXTRA_BIND_PATHS="$2" - shift 2 - ;; --) shift POSITIONAL_ARGS+=("$@") # save positional args From 13366e7c3f3c1aa59192f70e8a26e451611a15d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Thu, 13 Jun 2024 16:48:42 +0200 Subject: [PATCH 145/203] fix typo --- eessi_container.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eessi_container.sh b/eessi_container.sh index 891b793f9d..fb14e2118f 100755 --- a/eessi_container.sh +++ b/eessi_container.sh @@ -72,7 +72,7 @@ display_help() { echo " OPTIONS:" echo " -a | --access {ro,rw} - ro (read-only), rw (read & write) [default: ro]" echo " -b | --extra-bind-paths - specify extra paths to be bound into the container." - echo " To specify multiple bind paths, seperate by comma." + echo " To specify multiple bind paths, separate by comma." echo " Example: '/src:/dest:ro,/src2:/dest2:rw'" echo " -c | --container IMG - image file or URL defining the container to use" echo " [default: docker://ghcr.io/eessi/build-node:debian11]" From 63c1abfb8d03fbceb23914d3143abef68dd23bdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Thu, 13 Jun 2024 16:55:06 +0200 Subject: [PATCH 146/203] remove EB 4.9.2 from 4.9.1 easystack --- .../2023.06/eessi-2023.06-eb-4.9.1-001-system.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-001-system.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-001-system.yml index 8f96cf9450..46ac979719 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-001-system.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-001-system.yml @@ -3,7 +3,3 @@ easyconfigs: options: from-pr: 20299 - EESSI-extend-2023.06-easybuild.eb - - EasyBuild-4.9.2.eb: - options: - from-pr: 20801 - include-easyblocks-from-pr: 3358 From 7f6cb8d740ef9761cabd65eb221d9cdc52a84f63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Thu, 13 Jun 2024 17:04:18 +0200 Subject: [PATCH 147/203] remove include-easyblocks-from-pr for EB 4.9.2 --- .../2023.06/eessi-2023.06-eb-4.9.2-001-system.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-001-system.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-001-system.yml index cd87626494..a90f565412 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-001-system.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-001-system.yml @@ -2,4 +2,3 @@ easyconfigs: - EasyBuild-4.9.2.eb: options: from-pr: 20801 - include-easyblocks-from-pr: 3358 From 1d56c7239aec4a4521f1114c482b95b7b1f8f2c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Thu, 13 Jun 2024 17:21:47 +0200 Subject: [PATCH 148/203] use separate quotes for option and argument --- bot/test.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bot/test.sh b/bot/test.sh index b3f6acf0ea..04bff346cd 100755 --- a/bot/test.sh +++ b/bot/test.sh @@ -206,7 +206,7 @@ else fi # Bind mount /sys/fs/cgroup so that we can determine the amount of memory available in our cgroup for # Reframe configuration -TEST_STEP_ARGS+=("--extra-bind-paths /sys/fs/cgroup:/hostsys/fs/cgroup:ro") +TEST_STEP_ARGS+=("--extra-bind-paths" "/sys/fs/cgroup:/hostsys/fs/cgroup:ro") # prepare arguments to test_suite.sh (specific to test step) declare -a TEST_SUITE_ARGS=() From 158f0eb96d2027a51bb8d5ad8ae347405790c8d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Thu, 13 Jun 2024 20:17:44 +0200 Subject: [PATCH 149/203] add EB 4.9.2 --- .../2023.06/eessi-2023.06-eb-4.9.1-001-system.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-001-system.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-001-system.yml index 46ac979719..9e6f4ddb1a 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-001-system.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-001-system.yml @@ -3,3 +3,7 @@ easyconfigs: options: from-pr: 20299 - EESSI-extend-2023.06-easybuild.eb +easyconfigs: + - EasyBuild-4.9.2.eb: + options: + from-pr: 20818 From 4c5cc45627041da2526ad9d9f8ca11b8be10580e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Thu, 13 Jun 2024 20:19:45 +0200 Subject: [PATCH 150/203] remove 4.9.2 easystack --- .../2023.06/eessi-2023.06-eb-4.9.2-001-system.yml | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-001-system.yml diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-001-system.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-001-system.yml deleted file mode 100644 index a90f565412..0000000000 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-001-system.yml +++ /dev/null @@ -1,4 +0,0 @@ -easyconfigs: - - EasyBuild-4.9.2.eb: - options: - from-pr: 20801 From 8581d3f53f5dde36c46152faecb7de2d88521236 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Thu, 13 Jun 2024 22:27:29 +0200 Subject: [PATCH 151/203] Remove line --- .../2023.06/eessi-2023.06-eb-4.9.1-001-system.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-001-system.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-001-system.yml index 9e6f4ddb1a..866766a36b 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-001-system.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.1-001-system.yml @@ -3,7 +3,6 @@ easyconfigs: options: from-pr: 20299 - EESSI-extend-2023.06-easybuild.eb -easyconfigs: - EasyBuild-4.9.2.eb: options: from-pr: 20818 From 39cf7a0395e67e341808f96dbea812576bef5eb1 Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Fri, 14 Jun 2024 13:24:55 +0200 Subject: [PATCH 152/203] {2023.06,zen4}[foss/2023a] ESPResSo 4.2.2 --- .../2023.06/zen4/eessi-2023.06-eb-4.9.2-2023a.yml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-2023a.yml diff --git a/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-2023a.yml b/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-2023a.yml new file mode 100644 index 0000000000..f148a7fdf9 --- /dev/null +++ b/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-2023a.yml @@ -0,0 +1,2 @@ +easyconfigs: + - ESPResSo-4.2.2-foss-2023a.eb From eb363eddaccdde1d70a622d77123d480e6b226c9 Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Fri, 14 Jun 2024 15:49:49 +0200 Subject: [PATCH 153/203] {2023.06,zen4}[foss/2023a] TensorFlow 2.13.0 --- .../2023.06/zen4/eessi-2023.06-eb-4.9.2-2023a.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-2023a.yml b/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-2023a.yml index f148a7fdf9..f2f4c9d1f5 100644 --- a/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-2023a.yml @@ -1,2 +1,3 @@ easyconfigs: - ESPResSo-4.2.2-foss-2023a.eb + - TensorFlow-2.13.0-foss-2023a.eb From c810b4e3cf420b4c9f0285211da7f83a5a8e8f7b Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Fri, 14 Jun 2024 21:47:31 +0200 Subject: [PATCH 154/203] {2023.06,zen4}[foss/2023a] R 4.3.2 --- .../2023.06/zen4/eessi-2023.06-eb-4.9.2-2023a.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-2023a.yml b/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-2023a.yml index f2f4c9d1f5..09f525364f 100644 --- a/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-2023a.yml @@ -1,3 +1,4 @@ easyconfigs: - ESPResSo-4.2.2-foss-2023a.eb - TensorFlow-2.13.0-foss-2023a.eb + - R-4.3.2-gfbf-2023a.eb From c92f941875f91696e305232fdca1e4d13bd2b091 Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Fri, 14 Jun 2024 23:22:14 +0200 Subject: [PATCH 155/203] {2023.06,zen4}[foss/2023b] GROMACS 2024.1 --- .../2023.06/zen4/eessi-2023.06-eb-4.9.2-2023b.yml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-2023b.yml diff --git a/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-2023b.yml b/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-2023b.yml new file mode 100644 index 0000000000..af2c3bfca6 --- /dev/null +++ b/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-2023b.yml @@ -0,0 +1,2 @@ +easyconfigs: + - GROMACS-2024.1-foss-2023b.eb From ce370806de21ad95fd6825dcad24262bc8d28ec5 Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Sat, 15 Jun 2024 09:35:29 +0200 Subject: [PATCH 156/203] {2023.06,zen4} add missing installations with foss/2023b --- .../zen4/eessi-2023.06-eb-4.9.2-2023b.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-2023b.yml b/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-2023b.yml index af2c3bfca6..30a6745ccc 100644 --- a/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-2023b.yml +++ b/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-2023b.yml @@ -1,2 +1,18 @@ easyconfigs: - GROMACS-2024.1-foss-2023b.eb + - netCDF-4.9.2-gompi-2023b.eb + - matplotlib-3.8.2-gfbf-2023b.eb + - DP3-6.0-foss-2023b.eb + - WSClean-3.4-foss-2023b.eb + - CDO-2.2.2-gompi-2023b.eb + - python-casacore-3.5.2-foss-2023b.eb + - libspatialindex-1.9.3-GCCcore-13.2.0.eb + - LittleCMS-2.15-GCCcore-13.2.0.eb + - giflib-5.2.1-GCCcore-13.2.0.eb + - OpenJPEG-2.5.0-GCCcore-13.2.0.eb + - libwebp-1.3.2-GCCcore-13.2.0.eb + - Wayland-1.22.0-GCCcore-13.2.0.eb + - Qt5-5.15.13-GCCcore-13.2.0.eb + - OSU-Micro-Benchmarks-7.2-gompi-2023b.eb + - NLTK-3.8.1-foss-2023b.eb + - Valgrind-3.23.0-gompi-2023b.eb From 1183ae9cc174af34792363048f18cd7086c4666c Mon Sep 17 00:00:00 2001 From: Richard Top Date: Mon, 17 Jun 2024 11:33:11 +0000 Subject: [PATCH 157/203] {2023.06}[GCCcore/13.2.0] IPython v8.17.2 --- .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml new file mode 100644 index 0000000000..c23b5b001d --- /dev/null +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml @@ -0,0 +1,2 @@ +easyconfigs: + - IPython-8.17.2-GCCcore-13.2.0.eb From e8c2d0636e087d4e565d5d5993d2894fa21da6b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20R=C3=B6blitz?= Date: Mon, 17 Jun 2024 15:10:28 +0200 Subject: [PATCH 158/203] first steps to support multiple CVMFS repositories --- eessi_container.sh | 99 +++++++++++++++++++++++++++++++++++----------- 1 file changed, 77 insertions(+), 22 deletions(-) diff --git a/eessi_container.sh b/eessi_container.sh index fb14e2118f..9b1ab69a3b 100755 --- a/eessi_container.sh +++ b/eessi_container.sh @@ -48,7 +48,11 @@ HTTPS_PROXY_ERROR_EXITCODE=$((${ANY_ERROR_EXITCODE} << 10)) RUN_SCRIPT_MISSING_EXITCODE=$((${ANY_ERROR_EXITCODE} << 11)) NVIDIA_MODE_UNKNOWN_EXITCODE=$((${ANY_ERROR_EXITCODE} << 12)) +# we use an associative array for storing sets of settings per CVMFS repository +declare -A cvmfs_repo_settings + # CernVM-FS settings +# TODO may need to put them into repository specific map CVMFS_VAR_LIB="var-lib-cvmfs" CVMFS_VAR_RUN="var-run-cvmfs" @@ -89,8 +93,9 @@ display_help() { echo " MODE==install for a CUDA installation, MODE==run to" echo " attach a GPU, MODE==all for both [default: false]" echo " -r | --repository CFG - configuration file or identifier defining the" - echo " repository to use [default: EESSI via" - echo " default container, see --container]" + echo " repository to use; can be given multiple times" + echo " [default: software.eessi.io via CVMFS config available" + echo " via default container, see --container]" echo " -u | --resume DIR/TGZ - resume a previous run from a directory or tarball," echo " where DIR points to a previously used tmp directory" echo " (check for output 'Using DIR as tmp ...' of a previous" @@ -123,7 +128,7 @@ STORAGE= LIST_REPOS=0 MODE="shell" SETUP_NVIDIA=0 -REPOSITORY="EESSI" +REPOSITORIES=() RESUME= SAVE= HTTP_PROXY=${http_proxy:-} @@ -179,7 +184,7 @@ while [[ $# -gt 0 ]]; do shift 2 ;; -r|--repository) - REPOSITORY="$2" + REPOSITORIES+=("$2") shift 2 ;; -s|--save) @@ -221,22 +226,50 @@ done set -- "${POSITIONAL_ARGS[@]}" +# define a list of CVMFS repositories that are accessible via the +# CVMFS config repository which is always mounted +declare -A eessi_cvmfs_repos=(["dev.eessi.io"]="extra", ["riscv.eessi.io"]="extra", ["software.eessi.io"]="default") +eessi_default_cvmfs_repo="software.eessi.io" + +# if REPOSITORIES is empty add default repository given above +if [[ ${#REPOSITORIES[@]} -eq 0 ]]; then + REPOSITORIES+=(${eessi_default_cvmfs_repo}) +fi + +# define a list of CVMFS repositories that are accessible via the +# configuration file provided via $EESSI_REPOS_CFG_FILE +declare -A cfg_cvmfs_repos=() +if [[ -r ${EESSI_REPOS_CFG_FILE} ]]; then + cfg_load ${EESSI_REPOS_CFG_FILE} + sections=$(cfg_sections) + while IFS= read -r repo_id + do + cfg_cvmfs_repos[${repo_id}]=${EESSI_REPOS_CFG_FILE} + done <<< "${sections}" +fi + if [[ ${LIST_REPOS} -eq 1 ]]; then - echo "Listing available repositories with format 'name [source]':" - echo " EESSI [default]" - if [[ -r ${EESSI_REPOS_CFG_FILE} ]]; then - cfg_load ${EESSI_REPOS_CFG_FILE} - sections=$(cfg_sections) - while IFS= read -r repo_id - do - echo " ${repo_id} [${EESSI_REPOS_CFG_FILE}]" - done <<< "${sections}" - fi + echo "Listing available repositories with format 'name [source[, 'default']]'." + echo "Note, without argument '--repository' the one labeled 'default' will be mounted." + for cvmfs_repo in "${!eessi_cvmfs_repos[@]}" + do + if [[ ${eessi_cvmfs_repos[${cvmfs_repo}]} == "default" ]] ; then + default_label=", default" + else + default_label="" + fi + echo " ${cvmfs_repo} [CVMFS config repo${default_label}]" + done + for cfg_repo in "${!cfg_cvmfs_repos[@]}" + do + echo " ${cfg_repo} [${cfg_cvmfs_repos[$cfg_repo]}]" + done exit 0 fi # 1. check if argument values are valid # (arg -a|--access) check if ACCESS is supported +# TODO use the value as global setting, suffix to --repository can specify an access mode per repository if [[ "${ACCESS}" != "ro" && "${ACCESS}" != "rw" ]]; then fatal_error "unknown access method '${ACCESS}'" "${ACCESS_UNKNOWN_EXITCODE}" fi @@ -260,10 +293,16 @@ if [[ ${SETUP_NVIDIA} -eq 1 ]]; then fi fi -# TODO (arg -r|--repository) check if repository is known +# TODO (arg -r|--repository) check if all explicitly listed repositories are known # REPOSITORY_ERROR_EXITCODE -if [[ ! -z "${REPOSITORY}" && "${REPOSITORY}" != "EESSI" && ! -r ${EESSI_REPOS_CFG_FILE} ]]; then - fatal_error "arg '--repository ${REPOSITORY}' requires a cfg file at '${EESSI_REPOS_CFG_FILE}'" "${REPOSITORY_ERROR_EXITCODE}" +if [[ ${#REPOSITORIES[@]} -ne 0 ]] ; then + # iterate over entries in REPOSITORIES and check if they are known + for cvmfs_repo in "${REPOSITORIES[@]}" + do + if [[ ! -n "${eessi_cvmfs_repos[${cvmfs_repo}]}" && ! -n ${cfg_cvmfs_repos[${cvmfs_repo}]} ]]; then + fatal_error "The repository '${cvmfs_repo}' is not an EESSI CVMFS repository or it is not known how to mount it (could be due to a typo or missing configuration). Run '$0 -l' to obtain a list of available repositories." "${REPOSITORY_ERROR_EXITCODE}" + fi + done fi # TODO (arg -u|--resume) check if it exists, if user has read permission, @@ -337,22 +376,36 @@ if [[ ! -z ${RESUME} && -f ${RESUME} ]]; then fi # 3. set up common vars and directories +# TODO change to be able to support multiple CVMFS repositories # directory structure should be: # ${EESSI_HOST_STORAGE} # |-singularity_cache -# |-${CVMFS_VAR_LIB} -# |-${CVMFS_VAR_RUN} -# |-overlay-upper -# |-overlay-work # |-home # |-repos_cfg -# |-opt-eessi (unless otherwise specificed for host_injections) +# |-CVMFS_REPO_1 +# | |-repo_settings (name, access_mode, host_injections) +# | |-${CVMFS_VAR_LIB} +# | |-${CVMFS_VAR_RUN} +# | |-overlay-upper +# | |-overlay-work +# | |-opt-eessi (unless otherwise specificed for host_injections) +# |-CVMFS_REPO_n +# |-repo_settings (name, access_mode, host_injections) +# |-${CVMFS_VAR_LIB} +# |-${CVMFS_VAR_RUN} +# |-overlay-upper +# |-overlay-work +# |-opt-eessi (unless otherwise specificed for host_injections) # tmp dir for EESSI EESSI_TMPDIR=${EESSI_HOST_STORAGE} mkdir -p ${EESSI_TMPDIR} [[ ${VERBOSE} -eq 1 ]] && echo "EESSI_TMPDIR=${EESSI_TMPDIR}" +# TODO make this specific to repository +# TODO move this code to when we already know which repositories we want to access +# actually we should know this already here, but we should rather move this to +# where repository args are being processed # Set host_injections directory and ensure it is a writable directory (if user provided) if [ -z ${USER_HOST_INJECTIONS+x} ]; then # Not set, so use our default @@ -486,6 +539,8 @@ if [[ ${FAKEROOT} -eq 1 ]]; then ADDITIONAL_CONTAINER_OPTIONS+=("--fakeroot") fi +exit 0; # CONTINUE HERE +# TODO iterate over repositories in array REPOSITORIES # set up repository config (always create directory repos_cfg and populate it with info when # arg -r|--repository is used) mkdir -p ${EESSI_TMPDIR}/repos_cfg From 4057496eabede14e228fe08d2fec670870411a1b Mon Sep 17 00:00:00 2001 From: julianmorillo Date: Tue, 18 Jun 2024 12:00:19 +0200 Subject: [PATCH 159/203] Update eessi-2023.06-eb-4.9.2-2023b.yml including DLB --- .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml index c23b5b001d..38bfa81142 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml @@ -1,2 +1,3 @@ easyconfigs: - IPython-8.17.2-GCCcore-13.2.0.eb + - dlb-3.4-gompi-2023b.eb From c7a1ca2fbbb736b3eea2242c7143aaa3be063fca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20R=C3=B6blitz?= Date: Tue, 18 Jun 2024 15:05:17 +0200 Subject: [PATCH 160/203] further changes to support multiple repositories --- eessi_container.sh | 248 +++++++++++++++++++++++++++------------------ 1 file changed, 148 insertions(+), 100 deletions(-) diff --git a/eessi_container.sh b/eessi_container.sh index 9b1ab69a3b..d561d37792 100755 --- a/eessi_container.sh +++ b/eessi_container.sh @@ -228,16 +228,14 @@ set -- "${POSITIONAL_ARGS[@]}" # define a list of CVMFS repositories that are accessible via the # CVMFS config repository which is always mounted +# TODO instead of hard-coding the 'extra' and 'default' repositories here one +# could have another script in the GitHub and/or CVMFS repository which +# provides this "configuration" declare -A eessi_cvmfs_repos=(["dev.eessi.io"]="extra", ["riscv.eessi.io"]="extra", ["software.eessi.io"]="default") -eessi_default_cvmfs_repo="software.eessi.io" - -# if REPOSITORIES is empty add default repository given above -if [[ ${#REPOSITORIES[@]} -eq 0 ]]; then - REPOSITORIES+=(${eessi_default_cvmfs_repo}) -fi +eessi_default_cvmfs_repo="software.eessi.io,access=${ACCESS}" # define a list of CVMFS repositories that are accessible via the -# configuration file provided via $EESSI_REPOS_CFG_FILE +# configuration file provided via $EESSI_REPOS_CFG_FILE declare -A cfg_cvmfs_repos=() if [[ -r ${EESSI_REPOS_CFG_FILE} ]]; then cfg_load ${EESSI_REPOS_CFG_FILE} @@ -267,6 +265,11 @@ if [[ ${LIST_REPOS} -eq 1 ]]; then exit 0 fi +# if REPOSITORIES is empty add default repository given above +if [[ ${#REPOSITORIES[@]} -eq 0 ]]; then + REPOSITORIES+=(${eessi_default_cvmfs_repo}) +fi + # 1. check if argument values are valid # (arg -a|--access) check if ACCESS is supported # TODO use the value as global setting, suffix to --repository can specify an access mode per repository @@ -295,15 +298,45 @@ fi # TODO (arg -r|--repository) check if all explicitly listed repositories are known # REPOSITORY_ERROR_EXITCODE -if [[ ${#REPOSITORIES[@]} -ne 0 ]] ; then - # iterate over entries in REPOSITORIES and check if they are known - for cvmfs_repo in "${REPOSITORIES[@]}" - do - if [[ ! -n "${eessi_cvmfs_repos[${cvmfs_repo}]}" && ! -n ${cfg_cvmfs_repos[${cvmfs_repo}]} ]]; then - fatal_error "The repository '${cvmfs_repo}' is not an EESSI CVMFS repository or it is not known how to mount it (could be due to a typo or missing configuration). Run '$0 -l' to obtain a list of available repositories." "${REPOSITORY_ERROR_EXITCODE}" +# iterate over entries in REPOSITORIES and check if they are known +for cvmfs_repo in "${REPOSITORIES[@]}" +do + # split into name and access mode if ',access=' in $cvmfs_repo + if [[ ${cvmfs_repo} == *",access="* ]] ; then + cvmfs_repo_name=${cvmfs_repo/,access=*/} # remove access mode specification + else + cvmfs_repo_name="${cvmfs_repo}" + fi + if [[ ! -n "${eessi_cvmfs_repos[${cvmfs_repo_name}]}" && ! -n ${cfg_cvmfs_repos[${cvmfs_repo_name}]} ]]; then + fatal_error "The repository '${cvmfs_repo_name}' is not an EESSI CVMFS repository or it is not known how to mount it (could be due to a typo or missing configuration). Run '$0 -l' to obtain a list of available repositories." "${REPOSITORY_ERROR_EXITCODE}" + fi +done + +# make sure each repository is only listed once +declare -A listed_repos=() +for cvmfs_repo in "${REPOSITORIES[@]}" +do + cvmfs_repo_name=${cvmfs_repo/,access=*/} # remove access mode + echo "checking for duplicates: '${cvmfs_repo}' and '${cvmfs_repo_name}'" + # if cvmfs_repo_name is not in eessi_cvmfs_repos, assume it's in cfg_cvmfs_repos + # and obtain actual repo_name from config + cfg_repo_id='' + if [[ ! -n "${eessi_cvmfs_repos[${cvmfs_repo_name}]}" ]] ; then + [[ ${VERBOSE} -eq 1 ]] && echo "repo '${cvmfs_repo_name}' is not an EESSI CVMFS repository..." + # cvmfs_repo_name is actually a repository ID, use that to obtain + # the actual name from the EESSI_REPOS_CFG_FILE + cfg_repo_id=${cvmfs_repo_name} + cvmfs_repo_name=$(cfg_get_value ${cfg_repo_id} "repo_name") + fi + if [[ -n "${listed_repos[${cvmfs_repo_name}]}" ]] ; then + via_cfg="" + if [[ -n "${cfg_repo_id}" ]] ; then + via_cfg=" (via repository ID '${cfg_repo_id}')" fi - done -fi + fatal_error "CVMFS repository '${cvmfs_repo_name}'${via_cfg} listed multiple times" + fi + listed_repos+=([${cvmfs_repo_name}]=true) +done # TODO (arg -u|--resume) check if it exists, if user has read permission, # if it contains data from a previous run @@ -382,17 +415,15 @@ fi # |-singularity_cache # |-home # |-repos_cfg +# |-${CVMFS_VAR_LIB} +# |-${CVMFS_VAR_RUN} # |-CVMFS_REPO_1 # | |-repo_settings (name, access_mode, host_injections) -# | |-${CVMFS_VAR_LIB} -# | |-${CVMFS_VAR_RUN} # | |-overlay-upper # | |-overlay-work # | |-opt-eessi (unless otherwise specificed for host_injections) # |-CVMFS_REPO_n # |-repo_settings (name, access_mode, host_injections) -# |-${CVMFS_VAR_LIB} -# |-${CVMFS_VAR_RUN} # |-overlay-upper # |-overlay-work # |-opt-eessi (unless otherwise specificed for host_injections) @@ -402,7 +433,7 @@ EESSI_TMPDIR=${EESSI_HOST_STORAGE} mkdir -p ${EESSI_TMPDIR} [[ ${VERBOSE} -eq 1 ]] && echo "EESSI_TMPDIR=${EESSI_TMPDIR}" -# TODO make this specific to repository +# TODO make this specific to repository? # TODO move this code to when we already know which repositories we want to access # actually we should know this already here, but we should rather move this to # where repository args are being processed @@ -481,6 +512,7 @@ fi [[ ${VERBOSE} -eq 1 ]] && echo "CONTAINER=${CONTAINER}" # set env vars and create directories for CernVM-FS +# TODO need to use separate values for separate repos? EESSI_CVMFS_VAR_LIB=${EESSI_TMPDIR}/${CVMFS_VAR_LIB} EESSI_CVMFS_VAR_RUN=${EESSI_TMPDIR}/${CVMFS_VAR_RUN} mkdir -p ${EESSI_CVMFS_VAR_LIB} @@ -539,92 +571,106 @@ if [[ ${FAKEROOT} -eq 1 ]]; then ADDITIONAL_CONTAINER_OPTIONS+=("--fakeroot") fi -exit 0; # CONTINUE HERE # TODO iterate over repositories in array REPOSITORIES # set up repository config (always create directory repos_cfg and populate it with info when # arg -r|--repository is used) mkdir -p ${EESSI_TMPDIR}/repos_cfg -if [[ "${REPOSITORY}" == "EESSI" ]]; then - # need to source defaults as late as possible (see other sourcing below) - source ${TOPDIR}/init/eessi_defaults - - # strip "/cvmfs/" from default setting - repo_name=${EESSI_CVMFS_REPO/\/cvmfs\//} -else - # TODO implement more flexible specification of repo cfgs - # REPOSITORY => repo-id OR repo-cfg-file (with a single section) OR - # repo-cfg-file:repo-id (repo-id defined in repo-cfg-file) - # - # for now, assuming repo-id is defined in config file pointed to - # EESSI_REPOS_CFG_FILE, which is to be copied into the working directory - # (could also become part of the software layer to define multiple - # standard EESSI repositories) - cfg_load ${EESSI_REPOS_CFG_FILE} - - # copy repos.cfg to job directory --> makes it easier to inspect the job - cp -a ${EESSI_REPOS_CFG_FILE} ${EESSI_TMPDIR}/repos_cfg/. - - # cfg file should include: repo_name, repo_version, config_bundle, - # map { local_filepath -> container_filepath } - # - # repo_name_domain is the domain part of the repo_name, e.g., - # eessi.io for software.eessi.io - # - # where config bundle includes the files (-> target location in container) - # - default.local -> /etc/cvmfs/default.local - # contains CVMFS settings, e.g., CVMFS_HTTP_PROXY, CVMFS_QUOTA_LIMIT, ... - # - ${repo_name_domain}.conf -> /etc/cvmfs/domain.d/${repo_name_domain}.conf - # contains CVMFS settings, e.g., CVMFS_SERVER_URL (Stratum 1s), - # CVMFS_KEYS_DIR, CVMFS_USE_GEOAPI, ... - # - ${repo_name_domain}/ -> /etc/cvmfs/keys/${repo_name_domain} - # a directory that contains the public key to access the repository, key - # itself then doesn't need to be BIND mounted - # - ${repo_name_domain}/${repo_name}.pub - # (-> /etc/cvmfs/keys/${repo_name_domain}/${repo_name}.pub - # the public key to access the repository, key itself is BIND mounted - # via directory ${repo_name_domain} - repo_name=$(cfg_get_value ${REPOSITORY} "repo_name") - # derive domain part from repo_name (everything after first '.') - repo_name_domain=${repo_name#*.} - repo_version=$(cfg_get_value ${REPOSITORY} "repo_version") - config_bundle=$(cfg_get_value ${REPOSITORY} "config_bundle") - config_map=$(cfg_get_value ${REPOSITORY} "config_map") - - # convert config_map into associative array cfg_file_map - cfg_init_file_map "${config_map}" - [[ ${VERBOSE} -eq 1 ]] && cfg_print_map - - # use information to set up dir ${EESSI_TMPDIR}/repos_cfg, - # define BIND mounts and override repo name and version - # check if config_bundle exists, if so, unpack it into ${EESSI_TMPDIR}/repos_cfg - # if config_bundle is relative path (no '/' at start) prepend it with - # EESSI_REPOS_CFG_DIR - config_bundle_path= - if [[ ! "${config_bundle}" =~ ^/ ]]; then - config_bundle_path=${EESSI_REPOS_CFG_DIR}/${config_bundle} - else - config_bundle_path=${config_bundle} - fi +[[ ${VERBOSE} -eq 1 ]] && echo +[[ ${VERBOSE} -eq 1 ]] && echo -e "BIND_PATHS before processing REPOSITORIES\n BIND_PATHS=${BIND_PATHS}" +[[ ${VERBOSE} -eq 1 ]] && echo +for cvmfs_repo in "${REPOSITORIES[@]}" +do + echo "process CVMFS repo spec '${cvmfs_repo}'" + # split into name and access mode if ',access=' in $cvmfs_repo + if [[ ${cvmfs_repo} == *",access="* ]] ; then + cvmfs_repo_name=${cvmfs_repo/,access=*/} # remove access mode specification + cvmfs_repo_access=${cvmfs_repo/*,access=/} # remove repo name part + else + cvmfs_repo_name="${cvmfs_repo}" + cvmfs_repo_access="${ACCESS}" # use globally defined access mode + fi + # if cvmfs_repo_name is in cfg_cvmfs_repos, it is a "repository ID" and was + # derived from information in EESSI_REPOS_CFG_FILE, namely the section + # names in that .ini-type file + # in the if-block below, we'll use cfg_repo_id to refer to that ID + # we need to process/provide the config from EESSI_REPOS_CFG_FILE, such + # that the necessary information for accessing a CVMFS repository is made + # available inside the container + if [[ -n "${cfg_cvmfs_repos[${cvmfs_repo_name}]}" ]] ; then + cfg_repo_id=${cvmfs_repo_name} + + # obtain CVMFS repository name from section for the given ID + cfg_repo_name=$(cfg_get_value ${cfg_repo_id} "repo_name") + # derive domain part from (cfg_)repo_name (everything after first '.') + repo_name_domain=${repo_name#*.} + + # cfg_cvmfs_repos is populated through reading the file pointed to by + # EESSI_REPOS_CFG_FILE. We need to copy that file and data it needs + # into the job's working directory. + + # copy repos.cfg to job directory --> makes it easier to inspect the job + cp -a ${EESSI_REPOS_CFG_FILE} ${EESSI_TMPDIR}/repos_cfg/. + + # cfg file should include sections (one per CVMFS repository to be mounted) + # with each section containing the settings: + # - repo_name, + # - repo_version, + # - config_bundle, and + # - a map { filepath_in_bundle -> container_filepath } + # + # The config_bundle includes the files which are mapped ('->') to a target + # location in container: + # - default.local -> /etc/cvmfs/default.local + # contains CVMFS settings, e.g., CVMFS_HTTP_PROXY, CVMFS_QUOTA_LIMIT, ... + # - ${repo_name_domain}.conf -> /etc/cvmfs/domain.d/${repo_name_domain}.conf + # contains CVMFS settings, e.g., CVMFS_SERVER_URL (Stratum 1s), + # CVMFS_KEYS_DIR, CVMFS_USE_GEOAPI, ... + # - ${repo_name_domain}/ -> /etc/cvmfs/keys/${repo_name_domain} + # a directory that contains the public key to access the repository, key + # itself then doesn't need to be BIND mounted + # - ${repo_name_domain}/${cfg_repo_name}.pub + # (-> /etc/cvmfs/keys/${repo_name_domain}/${cfg_repo_name}.pub + # the public key to access the repository, key itself is BIND mounted + # via directory ${repo_name_domain} + cfg_repo_version=$(cfg_get_value ${cfg_repo_id} "repo_version") + cfg_config_bundle=$(cfg_get_value ${cfg_repo_id} "config_bundle") + cfg_config_map=$(cfg_get_value ${cfg_repo_id} "config_map") + + # convert cfg_config_map into associative array cfg_file_map + cfg_init_file_map "${cfg_config_map}" + [[ ${VERBOSE} -eq 1 ]] && cfg_print_map + + # use information to set up dir ${EESSI_TMPDIR}/repos_cfg and define + # BIND mounts + # check if config_bundle exists, if so, unpack it into + # ${EESSI_TMPDIR}/repos_cfg; if it doesn't, exit with an error + # if config_bundle is relative path (no '/' at start) prepend it with + # EESSI_REPOS_CFG_DIR + config_bundle_path= + if [[ ! "${cfg_config_bundle}" =~ ^/ ]]; then + config_bundle_path=${EESSI_REPOS_CFG_DIR}/${cfg_config_bundle} + else + config_bundle_path=${cfg_config_bundle} + fi - if [[ ! -r ${config_bundle_path} ]]; then - fatal_error "config bundle '${config_bundle_path}' is not readable" ${REPOSITORY_ERROR_EXITCODE} - fi + if [[ ! -r ${config_bundle_path} ]]; then + fatal_error "config bundle '${config_bundle_path}' is not readable" ${REPOSITORY_ERROR_EXITCODE} + fi - # only unpack config_bundle if we're not resuming from a previous run - if [[ -z ${RESUME} ]]; then - tar xf ${config_bundle_path} -C ${EESSI_TMPDIR}/repos_cfg - fi + # only unpack cfg_config_bundle if we're not resuming from a previous run + if [[ -z ${RESUME} ]]; then + tar xf ${config_bundle_path} -C ${EESSI_TMPDIR}/repos_cfg + fi - for src in "${!cfg_file_map[@]}" - do - target=${cfg_file_map[${src}]} - BIND_PATHS="${BIND_PATHS},${EESSI_TMPDIR}/repos_cfg/${src}:${target}" - done - export EESSI_VERSION_OVERRIDE=${repo_version} - export EESSI_CVMFS_REPO_OVERRIDE="/cvmfs/${repo_name}" - # need to source defaults as late as possible (after *_OVERRIDEs) - source ${TOPDIR}/init/eessi_defaults -fi + for src in "${!cfg_file_map[@]}" + do + target=${cfg_file_map[${src}]} + BIND_PATHS="${BIND_PATHS},${EESSI_TMPDIR}/repos_cfg/${src}:${target}" + done + fi + [[ ${VERBOSE} -eq 1 ]] && echo -e "BIND_PATHS after processing '${cvmfs_repo}'\n BIND_PATHS=${BIND_PATHS}" + [[ ${VERBOSE} -eq 1 ]] && echo +done # if http_proxy is not empty, we assume that the machine accesses internet # via a proxy. then we need to add CVMFS_HTTP_PROXY to @@ -650,14 +696,16 @@ if [[ ! -z ${http_proxy} ]]; then export BIND_PATHS="${BIND_PATHS},${EESSI_TMPDIR}/repos_cfg/default.local:/etc/cvmfs/default.local" fi fi +exit 0; # CONTINUE HERE # 4. set up vars and dirs specific to a scenario declare -a EESSI_FUSE_MOUNTS=() -# always mount cvmfs-config repo (to get access to software.eessi.io) +# always mount cvmfs-config repo (to get access to EESSI repositories such as software.eessi.io) EESSI_FUSE_MOUNTS+=("--fusemount" "container:cvmfs2 cvmfs-config.cern.ch /cvmfs/cvmfs-config.cern.ch") +# TODO iterate over REPOSITORIES and either use repository-specific access mode or global setting (possibly a global default) if [[ "${ACCESS}" == "ro" ]]; then export EESSI_READONLY="container:cvmfs2 ${repo_name} /cvmfs/${repo_name}" From 934059a731f55d5a11cc10b6e3719abf65b1d478 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20R=C3=B6blitz?= Date: Wed, 19 Jun 2024 15:21:27 +0200 Subject: [PATCH 161/203] configure multiple fusemounts --- eessi_container.sh | 123 +++++++++++++++++++++++++++------------------ 1 file changed, 74 insertions(+), 49 deletions(-) diff --git a/eessi_container.sh b/eessi_container.sh index d561d37792..c549d04d8c 100755 --- a/eessi_container.sh +++ b/eessi_container.sh @@ -52,7 +52,6 @@ NVIDIA_MODE_UNKNOWN_EXITCODE=$((${ANY_ERROR_EXITCODE} << 12)) declare -A cvmfs_repo_settings # CernVM-FS settings -# TODO may need to put them into repository specific map CVMFS_VAR_LIB="var-lib-cvmfs" CVMFS_VAR_RUN="var-run-cvmfs" @@ -272,7 +271,7 @@ fi # 1. check if argument values are valid # (arg -a|--access) check if ACCESS is supported -# TODO use the value as global setting, suffix to --repository can specify an access mode per repository +# use the value as global setting, suffix to --repository can specify an access mode per repository if [[ "${ACCESS}" != "ro" && "${ACCESS}" != "rw" ]]; then fatal_error "unknown access method '${ACCESS}'" "${ACCESS_UNKNOWN_EXITCODE}" fi @@ -317,7 +316,7 @@ declare -A listed_repos=() for cvmfs_repo in "${REPOSITORIES[@]}" do cvmfs_repo_name=${cvmfs_repo/,access=*/} # remove access mode - echo "checking for duplicates: '${cvmfs_repo}' and '${cvmfs_repo_name}'" + [[ ${VERBOSE} -eq 1 ]] && echo "checking for duplicates: '${cvmfs_repo}' and '${cvmfs_repo_name}'" # if cvmfs_repo_name is not in eessi_cvmfs_repos, assume it's in cfg_cvmfs_repos # and obtain actual repo_name from config cfg_repo_id='' @@ -409,7 +408,6 @@ if [[ ! -z ${RESUME} && -f ${RESUME} ]]; then fi # 3. set up common vars and directories -# TODO change to be able to support multiple CVMFS repositories # directory structure should be: # ${EESSI_HOST_STORAGE} # |-singularity_cache @@ -528,14 +526,18 @@ fi [[ ${VERBOSE} -eq 1 ]] && echo "SINGULARITY_HOME=${SINGULARITY_HOME}" # define paths to add to SINGULARITY_BIND (added later when all BIND mounts are defined) -BIND_PATHS="${EESSI_CVMFS_VAR_LIB}:/var/lib/cvmfs,${EESSI_CVMFS_VAR_RUN}:/var/run/cvmfs,${HOST_INJECTIONS}:/opt/eessi" +if [[ -z ${SINGULARITY_BIND} ]] ; then + SINGULARITY_BIND="${EESSI_CVMFS_VAR_LIB}:/var/lib/cvmfs,${EESSI_CVMFS_VAR_RUN}:/var/run/cvmfs,${HOST_INJECTIONS}:/opt/eessi" +else + SINGULARITY_BIND="${EESSI_CVMFS_VAR_LIB}:/var/lib/cvmfs,${EESSI_CVMFS_VAR_RUN}:/var/run/cvmfs,${HOST_INJECTIONS}:/opt/eessi,${SINGULARITY_BIND}" +fi # provide a '/tmp' inside the container -BIND_PATHS="${BIND_PATHS},${EESSI_TMPDIR}:${TMP_IN_CONTAINER}" +SINGULARITY_BIND="${SINGULARITY_BIND},${EESSI_TMPDIR}:${TMP_IN_CONTAINER}" if [[ ! -z ${EXTRA_BIND_PATHS} ]]; then - BIND_PATHS="${BIND_PATHS},${EXTRA_BIND_PATHS}" + SINGULARITY_BIND="${SINGULARITY_BIND},${EXTRA_BIND_PATHS}" fi -[[ ${VERBOSE} -eq 1 ]] && echo "BIND_PATHS=${BIND_PATHS}" +[[ ${VERBOSE} -eq 1 ]] && echo "SINGULARITY_BIND=${SINGULARITY_BIND}" declare -a ADDITIONAL_CONTAINER_OPTIONS=() @@ -556,8 +558,8 @@ if [[ ${SETUP_NVIDIA} -eq 1 ]]; then EESSI_USR_LOCAL_CUDA=${EESSI_TMPDIR}/usr-local-cuda mkdir -p ${EESSI_VAR_LOG} mkdir -p ${EESSI_USR_LOCAL_CUDA} - BIND_PATHS="${BIND_PATHS},${EESSI_VAR_LOG}:/var/log,${EESSI_USR_LOCAL_CUDA}:/usr/local/cuda" - [[ ${VERBOSE} -eq 1 ]] && echo "BIND_PATHS=${BIND_PATHS}" + SINGULARITY_BIND="${SINGULARITY_BIND},${EESSI_VAR_LOG}:/var/log,${EESSI_USR_LOCAL_CUDA}:/usr/local/cuda" + [[ ${VERBOSE} -eq 1 ]] && echo "SINGULARITY_BIND=${SINGULARITY_BIND}" if [[ "${NVIDIA_MODE}" == "install" ]] ; then # No GPU so we need to "trick" Lmod to allow us to load CUDA modules even without a CUDA driver # (this variable means EESSI_OVERRIDE_GPU_CHECK=1 will be set inside the container) @@ -571,16 +573,16 @@ if [[ ${FAKEROOT} -eq 1 ]]; then ADDITIONAL_CONTAINER_OPTIONS+=("--fakeroot") fi -# TODO iterate over repositories in array REPOSITORIES # set up repository config (always create directory repos_cfg and populate it with info when # arg -r|--repository is used) mkdir -p ${EESSI_TMPDIR}/repos_cfg [[ ${VERBOSE} -eq 1 ]] && echo -[[ ${VERBOSE} -eq 1 ]] && echo -e "BIND_PATHS before processing REPOSITORIES\n BIND_PATHS=${BIND_PATHS}" +[[ ${VERBOSE} -eq 1 ]] && echo -e "SINGULARITY_BIND before processing REPOSITORIES\n SINGULARITY_BIND=${SINGULARITY_BIND}" [[ ${VERBOSE} -eq 1 ]] && echo +# iterate over repositories in array REPOSITORIES for cvmfs_repo in "${REPOSITORIES[@]}" do - echo "process CVMFS repo spec '${cvmfs_repo}'" + [[ ${VERBOSE} -eq 1 ]] && echo "process CVMFS repo spec '${cvmfs_repo}'" # split into name and access mode if ',access=' in $cvmfs_repo if [[ ${cvmfs_repo} == *",access="* ]] ; then cvmfs_repo_name=${cvmfs_repo/,access=*/} # remove access mode specification @@ -665,17 +667,21 @@ do for src in "${!cfg_file_map[@]}" do target=${cfg_file_map[${src}]} - BIND_PATHS="${BIND_PATHS},${EESSI_TMPDIR}/repos_cfg/${src}:${target}" + # if target is alreay BIND mounted, exit with an error + if [[ ${SINGULARITY_BIND} =~ "${target}" ]]; then + fatal_error "target '${target}' is already listed in paths to bind mount into the container ('${SINGULARITY_BIND}')" ${REPOSITORY_ERROR_EXITCODE} + fi + export SINGULARITY_BIND="${SINGULARITY_BIND},${EESSI_TMPDIR}/repos_cfg/${src}:${target}" done fi - [[ ${VERBOSE} -eq 1 ]] && echo -e "BIND_PATHS after processing '${cvmfs_repo}'\n BIND_PATHS=${BIND_PATHS}" + [[ ${VERBOSE} -eq 1 ]] && echo -e "SINGULARITY_BIND after processing '${cvmfs_repo}'\n SINGULARITY_BIND=${SINGULARITY_BIND}" [[ ${VERBOSE} -eq 1 ]] && echo done # if http_proxy is not empty, we assume that the machine accesses internet # via a proxy. then we need to add CVMFS_HTTP_PROXY to -# ${EESSI_TMPDIR}/repos_cfg/default.local on host (and possibly add a BIND -# MOUNT if it was not yet in BIND_PATHS) +# ${EESSI_TMPDIR}/repos_cfg/default.local on the host (and possibly add a BIND +# MOUNT if it was not yet in SINGULARITY_BIND) if [[ ! -z ${http_proxy} ]]; then # TODO tolerate other formats for proxy URLs, for now assume format is # http://SOME_HOSTNAME:SOME_PORT/ @@ -691,12 +697,14 @@ if [[ ! -z ${http_proxy} ]]; then [[ ${VERBOSE} -eq 1 ]] && echo "contents of default.local" [[ ${VERBOSE} -eq 1 ]] && cat ${EESSI_TMPDIR}/repos_cfg/default.local - # if default.local is not BIND mounted into container, add it to BIND_PATHS - if [[ ! ${BIND_PATHS} =~ "${EESSI_TMPDIR}/repos_cfg/default.local:/etc/cvmfs/default.local" ]]; then - export BIND_PATHS="${BIND_PATHS},${EESSI_TMPDIR}/repos_cfg/default.local:/etc/cvmfs/default.local" + # if default.local is not BIND mounted into container, add it to SINGULARITY_BIND + src=${EESSI_TMPDIR}/repos_cfg/default.local + target=/etc/cvmfs/default.local + if [[ ${SINGULARITY_BIND} =~ "${target}" ]]; then + fatal_error "BIND target in '${src}:${target}' is already in paths to be bind mounted into the container ('${SINGULARITY_BIND}')" ${REPOSITORY_ERROR_EXITCODE} fi + export SINGULARITY_BIND="${SINGULARITY_BIND},${src}:${target}" fi -exit 0; # CONTINUE HERE # 4. set up vars and dirs specific to a scenario @@ -705,42 +713,59 @@ declare -a EESSI_FUSE_MOUNTS=() # always mount cvmfs-config repo (to get access to EESSI repositories such as software.eessi.io) EESSI_FUSE_MOUNTS+=("--fusemount" "container:cvmfs2 cvmfs-config.cern.ch /cvmfs/cvmfs-config.cern.ch") -# TODO iterate over REPOSITORIES and either use repository-specific access mode or global setting (possibly a global default) -if [[ "${ACCESS}" == "ro" ]]; then - export EESSI_READONLY="container:cvmfs2 ${repo_name} /cvmfs/${repo_name}" - - EESSI_FUSE_MOUNTS+=("--fusemount" "${EESSI_READONLY}") - export EESSI_FUSE_MOUNTS -fi +# iterate over REPOSITORIES and either use repository-specific access mode or global setting (possibly a global default) +for cvmfs_repo in "${REPOSITORIES[@]}" +do + [[ ${VERBOSE} -eq 1 ]] && echo "add fusemount options for CVMFS repo '${cvmfs_repo}'" + # split into name and access mode if ',access=' in $cvmfs_repo + if [[ ${cvmfs_repo} == *",access="* ]] ; then + cvmfs_repo_name=${cvmfs_repo/,access=*/} # remove access mode specification + cvmfs_repo_access=${cvmfs_repo/*,access=/} # remove repo name part + else + cvmfs_repo_name="${cvmfs_repo}" + cvmfs_repo_access="${ACCESS}" # use globally defined access mode + fi + # obtain cvmfs_repo_name from EESSI_REPOS_CFG_FILE if cvmfs_repo is in cfg_cvmfs_repos + if [[ ${cfg_cvmfs_repos[${cvmfs_repo_name}]} ]]; then + [[ ${VERBOSE} -eq 1 ]] && echo "repo '${cvmfs_repo_name}' is not an EESSI CVMFS repository..." + # cvmfs_repo_name is actually a repository ID, use that to obtain + # the actual name from the EESSI_REPOS_CFG_FILE + cfg_repo_id=${cvmfs_repo_name} + cvmfs_repo_name=$(cfg_get_value ${cfg_repo_id} "repo_name") + fi -if [[ "${ACCESS}" == "rw" ]]; then - mkdir -p ${EESSI_TMPDIR}/overlay-upper - mkdir -p ${EESSI_TMPDIR}/overlay-work + # add fusemount options depending on requested access mode ('ro' - read-only; 'rw' - read & write) + if [[ ${cvmfs_repo_access} == "ro" ]] ; then + export EESSI_READONLY="container:cvmfs2 ${cvmfs_repo_name} /cvmfs/${cvmfs_repo_name}" - # set environment variables for fuse mounts in Singularity container - export EESSI_READONLY="container:cvmfs2 ${repo_name} /cvmfs_ro/${repo_name}" + EESSI_FUSE_MOUNTS+=("--fusemount" "${EESSI_READONLY}") + export EESSI_FUSE_MOUNTS + elif [[ ${cvmfs_repo_access} == "rw" ]] ; then + # use repo-specific overlay directories + mkdir -p ${EESSI_TMPDIR}/${cvmfs_repo_name}/overlay-upper + mkdir -p ${EESSI_TMPDIR}/${cvmfs_repo_name}/overlay-work - EESSI_FUSE_MOUNTS+=("--fusemount" "${EESSI_READONLY}") + # set environment variables for fuse mounts in Singularity container + export EESSI_READONLY="container:cvmfs2 ${cvmfs_repo_name} /cvmfs_ro/${cvmfs_repo_name}" - EESSI_WRITABLE_OVERLAY="container:fuse-overlayfs" - EESSI_WRITABLE_OVERLAY+=" -o lowerdir=/cvmfs_ro/${repo_name}" - EESSI_WRITABLE_OVERLAY+=" -o upperdir=${TMP_IN_CONTAINER}/overlay-upper" - EESSI_WRITABLE_OVERLAY+=" -o workdir=${TMP_IN_CONTAINER}/overlay-work" - EESSI_WRITABLE_OVERLAY+=" ${EESSI_CVMFS_REPO}" - export EESSI_WRITABLE_OVERLAY + EESSI_FUSE_MOUNTS+=("--fusemount" "${EESSI_READONLY}") - EESSI_FUSE_MOUNTS+=("--fusemount" "${EESSI_WRITABLE_OVERLAY}") - export EESSI_FUSE_MOUNTS -fi + EESSI_WRITABLE_OVERLAY="container:fuse-overlayfs" + EESSI_WRITABLE_OVERLAY+=" -o lowerdir=/cvmfs_ro/${cvmfs_repo_name}" + EESSI_WRITABLE_OVERLAY+=" -o upperdir=${TMP_IN_CONTAINER}/${cvmfs_repo_name}/overlay-upper" + EESSI_WRITABLE_OVERLAY+=" -o workdir=${TMP_IN_CONTAINER}/${cvmfs_repo_name}/overlay-work" + EESSI_WRITABLE_OVERLAY+=" /cvmfs/${cvmfs_repo_name}" + export EESSI_WRITABLE_OVERLAY + EESSI_FUSE_MOUNTS+=("--fusemount" "${EESSI_WRITABLE_OVERLAY}") + export EESSI_FUSE_MOUNTS + else + echo -e "ERROR: access mode '${cvmfs_repo_access}' for CVMFS repository\n '${cvmfs_repo_name}' is not known" + exit ${REPOSITORY_ERROR_EXITCODE} + fi +done # 5. run container -# final settings -if [[ -z ${SINGULARITY_BIND} ]]; then - export SINGULARITY_BIND="${BIND_PATHS}" -else - export SINGULARITY_BIND="${SINGULARITY_BIND},${BIND_PATHS}" -fi [[ ${VERBOSE} -eq 1 ]] && echo "SINGULARITY_BIND=${SINGULARITY_BIND}" # pass $EESSI_SOFTWARE_SUBDIR_OVERRIDE into build container (if set) From 32f413328cd3b8f1da7ea7521f7458c20cd7232b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20R=C3=B6blitz?= Date: Wed, 19 Jun 2024 16:02:40 +0200 Subject: [PATCH 162/203] revert back changes related to BIND_PATHS and SINGULARITY_BIND + some polishing --- eessi_container.sh | 46 ++++++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/eessi_container.sh b/eessi_container.sh index c549d04d8c..163792f622 100755 --- a/eessi_container.sh +++ b/eessi_container.sh @@ -416,12 +416,10 @@ fi # |-${CVMFS_VAR_LIB} # |-${CVMFS_VAR_RUN} # |-CVMFS_REPO_1 -# | |-repo_settings (name, access_mode, host_injections) # | |-overlay-upper # | |-overlay-work # | |-opt-eessi (unless otherwise specificed for host_injections) # |-CVMFS_REPO_n -# |-repo_settings (name, access_mode, host_injections) # |-overlay-upper # |-overlay-work # |-opt-eessi (unless otherwise specificed for host_injections) @@ -526,18 +524,15 @@ fi [[ ${VERBOSE} -eq 1 ]] && echo "SINGULARITY_HOME=${SINGULARITY_HOME}" # define paths to add to SINGULARITY_BIND (added later when all BIND mounts are defined) -if [[ -z ${SINGULARITY_BIND} ]] ; then - SINGULARITY_BIND="${EESSI_CVMFS_VAR_LIB}:/var/lib/cvmfs,${EESSI_CVMFS_VAR_RUN}:/var/run/cvmfs,${HOST_INJECTIONS}:/opt/eessi" -else - SINGULARITY_BIND="${EESSI_CVMFS_VAR_LIB}:/var/lib/cvmfs,${EESSI_CVMFS_VAR_RUN}:/var/run/cvmfs,${HOST_INJECTIONS}:/opt/eessi,${SINGULARITY_BIND}" -fi +BIND_PATHS="${EESSI_CVMFS_VAR_LIB}:/var/lib/cvmfs,${EESSI_CVMFS_VAR_RUN}:/var/run/cvmfs,${HOST_INJECTIONS}:/opt/eessi" + # provide a '/tmp' inside the container -SINGULARITY_BIND="${SINGULARITY_BIND},${EESSI_TMPDIR}:${TMP_IN_CONTAINER}" +BIND_PATHS="${BIND_PATHS},${EESSI_TMPDIR}:${TMP_IN_CONTAINER}" if [[ ! -z ${EXTRA_BIND_PATHS} ]]; then - SINGULARITY_BIND="${SINGULARITY_BIND},${EXTRA_BIND_PATHS}" + BIND_PATHS="${BIND_PATHS},${EXTRA_BIND_PATHS}" fi -[[ ${VERBOSE} -eq 1 ]] && echo "SINGULARITY_BIND=${SINGULARITY_BIND}" +[[ ${VERBOSE} -eq 1 ]] && echo "BIND_PATHS=${BIND_PATHS}" declare -a ADDITIONAL_CONTAINER_OPTIONS=() @@ -558,8 +553,8 @@ if [[ ${SETUP_NVIDIA} -eq 1 ]]; then EESSI_USR_LOCAL_CUDA=${EESSI_TMPDIR}/usr-local-cuda mkdir -p ${EESSI_VAR_LOG} mkdir -p ${EESSI_USR_LOCAL_CUDA} - SINGULARITY_BIND="${SINGULARITY_BIND},${EESSI_VAR_LOG}:/var/log,${EESSI_USR_LOCAL_CUDA}:/usr/local/cuda" - [[ ${VERBOSE} -eq 1 ]] && echo "SINGULARITY_BIND=${SINGULARITY_BIND}" + BIND_PATHS="${BIND_PATHS},${EESSI_VAR_LOG}:/var/log,${EESSI_USR_LOCAL_CUDA}:/usr/local/cuda" + [[ ${VERBOSE} -eq 1 ]] && echo "BIND_PATHS=${BIND_PATHS}" if [[ "${NVIDIA_MODE}" == "install" ]] ; then # No GPU so we need to "trick" Lmod to allow us to load CUDA modules even without a CUDA driver # (this variable means EESSI_OVERRIDE_GPU_CHECK=1 will be set inside the container) @@ -577,7 +572,7 @@ fi # arg -r|--repository is used) mkdir -p ${EESSI_TMPDIR}/repos_cfg [[ ${VERBOSE} -eq 1 ]] && echo -[[ ${VERBOSE} -eq 1 ]] && echo -e "SINGULARITY_BIND before processing REPOSITORIES\n SINGULARITY_BIND=${SINGULARITY_BIND}" +[[ ${VERBOSE} -eq 1 ]] && echo -e "BIND_PATHS before processing REPOSITORIES\n BIND_PATHS=${BIND_PATHS}" [[ ${VERBOSE} -eq 1 ]] && echo # iterate over repositories in array REPOSITORIES for cvmfs_repo in "${REPOSITORIES[@]}" @@ -668,20 +663,20 @@ do do target=${cfg_file_map[${src}]} # if target is alreay BIND mounted, exit with an error - if [[ ${SINGULARITY_BIND} =~ "${target}" ]]; then - fatal_error "target '${target}' is already listed in paths to bind mount into the container ('${SINGULARITY_BIND}')" ${REPOSITORY_ERROR_EXITCODE} + if [[ ${BIND_PATHS} =~ "${target}" ]]; then + fatal_error "target '${target}' is already listed in paths to bind mount into the container ('${BIND_PATHS}')" ${REPOSITORY_ERROR_EXITCODE} fi - export SINGULARITY_BIND="${SINGULARITY_BIND},${EESSI_TMPDIR}/repos_cfg/${src}:${target}" + BIND_PATHS="${BIND_PATHS},${EESSI_TMPDIR}/repos_cfg/${src}:${target}" done fi - [[ ${VERBOSE} -eq 1 ]] && echo -e "SINGULARITY_BIND after processing '${cvmfs_repo}'\n SINGULARITY_BIND=${SINGULARITY_BIND}" + [[ ${VERBOSE} -eq 1 ]] && echo -e "BIND_PATHS after processing '${cvmfs_repo}'\n BIND_PATHS=${BIND_PATHS}" [[ ${VERBOSE} -eq 1 ]] && echo done # if http_proxy is not empty, we assume that the machine accesses internet # via a proxy. then we need to add CVMFS_HTTP_PROXY to # ${EESSI_TMPDIR}/repos_cfg/default.local on the host (and possibly add a BIND -# MOUNT if it was not yet in SINGULARITY_BIND) +# MOUNT if it was not yet in BIND_PATHS) if [[ ! -z ${http_proxy} ]]; then # TODO tolerate other formats for proxy URLs, for now assume format is # http://SOME_HOSTNAME:SOME_PORT/ @@ -697,13 +692,13 @@ if [[ ! -z ${http_proxy} ]]; then [[ ${VERBOSE} -eq 1 ]] && echo "contents of default.local" [[ ${VERBOSE} -eq 1 ]] && cat ${EESSI_TMPDIR}/repos_cfg/default.local - # if default.local is not BIND mounted into container, add it to SINGULARITY_BIND + # if default.local is not BIND mounted into container, add it to BIND_PATHS src=${EESSI_TMPDIR}/repos_cfg/default.local target=/etc/cvmfs/default.local - if [[ ${SINGULARITY_BIND} =~ "${target}" ]]; then - fatal_error "BIND target in '${src}:${target}' is already in paths to be bind mounted into the container ('${SINGULARITY_BIND}')" ${REPOSITORY_ERROR_EXITCODE} + if [[ ${BIND_PATHS} =~ "${target}" ]]; then + fatal_error "BIND target in '${src}:${target}' is already in paths to be bind mounted into the container ('${BIND_PATHS}')" ${REPOSITORY_ERROR_EXITCODE} fi - export SINGULARITY_BIND="${SINGULARITY_BIND},${src}:${target}" + BIND_PATHS="${BIND_PATHS},${src}:${target}" fi # 4. set up vars and dirs specific to a scenario @@ -744,6 +739,7 @@ do # use repo-specific overlay directories mkdir -p ${EESSI_TMPDIR}/${cvmfs_repo_name}/overlay-upper mkdir -p ${EESSI_TMPDIR}/${cvmfs_repo_name}/overlay-work + [[ ${VERBOSE} -eq 1 ]] && echo -e "TMP directory contents:\n$(ls -l ${EESSI_TMPDIR})" # set environment variables for fuse mounts in Singularity container export EESSI_READONLY="container:cvmfs2 ${cvmfs_repo_name} /cvmfs_ro/${cvmfs_repo_name}" @@ -766,6 +762,12 @@ do done # 5. run container +# final settings +if [[ -z ${SINGULARITY_BIND} ]]; then + export SINGULARITY_BIND="${BIND_PATHS}" +else + export SINGULARITY_BIND="${SINGULARITY_BIND},${BIND_PATHS}" +fi [[ ${VERBOSE} -eq 1 ]] && echo "SINGULARITY_BIND=${SINGULARITY_BIND}" # pass $EESSI_SOFTWARE_SUBDIR_OVERRIDE into build container (if set) From 07de7008e60586d146cd4986de9d0a4f7e505731 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20R=C3=B6blitz?= Date: Thu, 20 Jun 2024 09:07:24 +0200 Subject: [PATCH 163/203] store repository settings under tmp --- eessi_container.sh | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/eessi_container.sh b/eessi_container.sh index 163792f622..eaa4f59af9 100755 --- a/eessi_container.sh +++ b/eessi_container.sh @@ -416,10 +416,12 @@ fi # |-${CVMFS_VAR_LIB} # |-${CVMFS_VAR_RUN} # |-CVMFS_REPO_1 +# | |-repo_settings.sh (name, id, access, host_injections) # | |-overlay-upper # | |-overlay-work # | |-opt-eessi (unless otherwise specificed for host_injections) # |-CVMFS_REPO_n +# |-repo_settings.sh (name, id, access, host_injections) # |-overlay-upper # |-overlay-work # |-opt-eessi (unless otherwise specificed for host_injections) @@ -711,6 +713,7 @@ EESSI_FUSE_MOUNTS+=("--fusemount" "container:cvmfs2 cvmfs-config.cern.ch /cvmfs/ # iterate over REPOSITORIES and either use repository-specific access mode or global setting (possibly a global default) for cvmfs_repo in "${REPOSITORIES[@]}" do + unset cfg_repo_id [[ ${VERBOSE} -eq 1 ]] && echo "add fusemount options for CVMFS repo '${cvmfs_repo}'" # split into name and access mode if ',access=' in $cvmfs_repo if [[ ${cvmfs_repo} == *",access="* ]] ; then @@ -729,6 +732,9 @@ do cvmfs_repo_name=$(cfg_get_value ${cfg_repo_id} "repo_name") fi + # always create a directory for the repository (e.g., to store settings, ...) + mkdir -p ${EESSI_TMPDIR}/${cvmfs_repo_name} + # add fusemount options depending on requested access mode ('ro' - read-only; 'rw' - read & write) if [[ ${cvmfs_repo_access} == "ro" ]] ; then export EESSI_READONLY="container:cvmfs2 ${cvmfs_repo_name} /cvmfs/${cvmfs_repo_name}" @@ -759,6 +765,20 @@ do echo -e "ERROR: access mode '${cvmfs_repo_access}' for CVMFS repository\n '${cvmfs_repo_name}' is not known" exit ${REPOSITORY_ERROR_EXITCODE} fi + # create repo_settings.sh file in ${EESSI_TMPDIR}/${cvmfs_repo_name} to store + # (intention is that the file could be just sourced to obtain the settings) + # repo_name = ${cvmfs_repo_name} + # repo_id = ${cfg_repo_id} # empty if not an EESSI repo + # repo_access = ${cvmfs_repo_access} + # repo_host_injections = [ {"src_path":"target_path"}... ] # TODO + settings= + #[[ -n ${cfg_repo_id} ]] && settings="[${cvmfs_repo_name}]\n" || settings="[${cfg_repo_id}]\n" + settings="${settings}repo_name = ${cvmfs_repo_name}\n" + settings="${settings}repo_id = ${cfg_repo_id}\n" + settings="${settings}repo_access = ${cvmfs_repo_access}\n" + # TODO iterate over host_injections (first need means to define them (globally and/or per repository) + # settings="${settings}repo_host_injections = ${host_injections}\n" + echo -e "${settings}" > ${EESSI_TMPDIR}/${cvmfs_repo_name}/repo_settings.sh done # 5. run container From 3da63162f66480d4c4430e6725800fc0769e90f1 Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Mon, 24 Jun 2024 18:18:49 +0200 Subject: [PATCH 164/203] {2023.06,a64fx}[2023a] OpenMPI 4.1.5 --- .../2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023a.yml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 easystacks/software.eessi.io/2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023a.yml diff --git a/easystacks/software.eessi.io/2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023a.yml b/easystacks/software.eessi.io/2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023a.yml new file mode 100644 index 0000000000..1475ad0866 --- /dev/null +++ b/easystacks/software.eessi.io/2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023a.yml @@ -0,0 +1,2 @@ +easyconfigs: + - OpenMPI-4.1.5-GCC-12.3.0.eb From 871586fbb055a07ad7250a48a3a06c3ffec1d8b2 Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Mon, 24 Jun 2024 18:49:22 +0200 Subject: [PATCH 165/203] use latest Ubuntu in CI workflows --- .github/workflows/test-software.eessi.io.yml | 2 +- .github/workflows/test_eessi_container_script.yml | 2 +- .github/workflows/test_licenses.yml | 2 +- .github/workflows/tests.yml | 2 +- .github/workflows/tests_archdetect.yml | 2 +- .github/workflows/tests_init.yml | 2 +- .github/workflows/tests_readme.yml | 2 +- .github/workflows/tests_scripts.yml | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/test-software.eessi.io.yml b/.github/workflows/test-software.eessi.io.yml index 8cfb023bc6..06c02c8834 100644 --- a/.github/workflows/test-software.eessi.io.yml +++ b/.github/workflows/test-software.eessi.io.yml @@ -5,7 +5,7 @@ permissions: contents: read # to fetch code (actions/checkout) jobs: check_missing: - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest strategy: fail-fast: false matrix: diff --git a/.github/workflows/test_eessi_container_script.yml b/.github/workflows/test_eessi_container_script.yml index 32120d0087..d31feb23fe 100644 --- a/.github/workflows/test_eessi_container_script.yml +++ b/.github/workflows/test_eessi_container_script.yml @@ -5,7 +5,7 @@ permissions: contents: read # to fetch code (actions/checkout) jobs: eessi_container_script: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest strategy: fail-fast: false matrix: diff --git a/.github/workflows/test_licenses.yml b/.github/workflows/test_licenses.yml index 3b9675d523..6b6387d47d 100644 --- a/.github/workflows/test_licenses.yml +++ b/.github/workflows/test_licenses.yml @@ -5,7 +5,7 @@ permissions: contents: read # to fetch code (actions/checkout) jobs: build: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - name: Check out software-layer repository uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index faa7eb82ff..6af6a83e96 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -5,7 +5,7 @@ permissions: contents: read # to fetch code (actions/checkout) jobs: build: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest strategy: matrix: python: [3.6, 3.7, 3.8, 3.9, '3.10'] diff --git a/.github/workflows/tests_archdetect.yml b/.github/workflows/tests_archdetect.yml index bee348995d..4f5d3d174d 100644 --- a/.github/workflows/tests_archdetect.yml +++ b/.github/workflows/tests_archdetect.yml @@ -5,7 +5,7 @@ permissions: contents: read # to fetch code (actions/checkout) jobs: build: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest strategy: matrix: proc_cpuinfo: diff --git a/.github/workflows/tests_init.yml b/.github/workflows/tests_init.yml index 053acb9730..aabe37de44 100644 --- a/.github/workflows/tests_init.yml +++ b/.github/workflows/tests_init.yml @@ -5,7 +5,7 @@ permissions: contents: read # to fetch code (actions/checkout) jobs: build: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest strategy: matrix: python: [3.6, 3.7, 3.8, 3.9, '3.10'] diff --git a/.github/workflows/tests_readme.yml b/.github/workflows/tests_readme.yml index efdb796e5e..76f46a8abe 100644 --- a/.github/workflows/tests_readme.yml +++ b/.github/workflows/tests_readme.yml @@ -14,7 +14,7 @@ permissions: contents: read # to fetch code (actions/checkout) jobs: build: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - name: Check out software-layer repository uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 diff --git a/.github/workflows/tests_scripts.yml b/.github/workflows/tests_scripts.yml index 76d19d29fe..6413fcf86f 100644 --- a/.github/workflows/tests_scripts.yml +++ b/.github/workflows/tests_scripts.yml @@ -28,7 +28,7 @@ permissions: contents: read # to fetch code (actions/checkout) jobs: build: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - name: checkout uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 From 70878f66586c49b0a2412754a7937482f7910803 Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Mon, 24 Jun 2024 18:58:42 +0200 Subject: [PATCH 166/203] only run CI workflows with Python >= 3.7 Co-authored-by: ocaisa --- .github/workflows/tests.yml | 2 +- .github/workflows/tests_init.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 6af6a83e96..8249e50d9b 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python: [3.6, 3.7, 3.8, 3.9, '3.10'] + python: [3.7, 3.8, 3.9, '3.10'] fail-fast: false steps: - name: checkout diff --git a/.github/workflows/tests_init.yml b/.github/workflows/tests_init.yml index aabe37de44..6c356a9184 100644 --- a/.github/workflows/tests_init.yml +++ b/.github/workflows/tests_init.yml @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python: [3.6, 3.7, 3.8, 3.9, '3.10'] + python: [3.7, 3.8, 3.9, '3.10'] fail-fast: false steps: - name: checkout From 0cb1d2af5ad9ad8f2ccdb7e9da9d2614c61781d0 Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Tue, 25 Jun 2024 09:29:21 +0200 Subject: [PATCH 167/203] implement hook to inject -DCACHE_SECTOR_SIZE_READONLY in $CFLAGS when building BLIS 0.9.0 on A64FX --- eb_hooks.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/eb_hooks.py b/eb_hooks.py index 8b0a11b0ed..fd3e0830ee 100644 --- a/eb_hooks.py +++ b/eb_hooks.py @@ -23,6 +23,7 @@ CPU_TARGET_NEOVERSE_N1 = 'aarch64/neoverse_n1' CPU_TARGET_NEOVERSE_V1 = 'aarch64/neoverse_v1' CPU_TARGET_AARCH64_GENERIC = 'aarch64/generic' +CPU_TARGET_A64FX = 'aarch64/a64fx' EESSI_RPATH_OVERRIDE_ATTR = 'orig_rpath_override_dirs' @@ -335,6 +336,19 @@ def pre_configure_hook(self, *args, **kwargs): PRE_CONFIGURE_HOOKS[self.name](self, *args, **kwargs) +def pre_configure_hook_BLIS_a64fx(self, *args, **kwargs): + """ + Pre-configure hook for BLIS when building for A64FX: + - add -DCACHE_SECTOR_SIZE_READONLY to $CFLAGS for BLIS 0.9.0, cfr. https://github.com/flame/blis/issues/800 + """ + if self.name == 'BLIS': + cpu_target = get_eessi_envvar('EESSI_SOFTWARE_SUBDIR') + if self.version == '0.9.0' and cpu_target == CPU_TARGET_A64FX: + self.cfg.update('configopts', 'CFLAGS="$CFLAGS -DCACHE_SECTOR_SIZE_READONLY"') + else: + raise EasyBuildError("BLIS-specific hook triggered for non-BLIS easyconfig?!") + + def pre_configure_hook_gromacs(self, *args, **kwargs): """ Pre-configure hook for GROMACS: @@ -680,12 +694,13 @@ def inject_gpu_property(ec): } PRE_CONFIGURE_HOOKS = { + 'at-spi2-core': pre_configure_hook_atspi2core_filter_ld_library_path, + 'BLIS': pre_configure_hook_BLIS_a64fx, 'GROMACS': pre_configure_hook_gromacs, 'libfabric': pre_configure_hook_libfabric_disable_psm3_x86_64_generic, 'MetaBAT': pre_configure_hook_metabat_filtered_zlib_dep, 'OpenBLAS': pre_configure_hook_openblas_optarch_generic, 'WRF': pre_configure_hook_wrf_aarch64, - 'at-spi2-core': pre_configure_hook_atspi2core_filter_ld_library_path, } PRE_TEST_HOOKS = { From 3aac7ea854e8f4613ad89fc8e15e2ca26df0af6f Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Tue, 25 Jun 2024 09:29:38 +0200 Subject: [PATCH 168/203] {2023.06,a64fx} foss/2023a --- .../2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023a.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/easystacks/software.eessi.io/2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023a.yml b/easystacks/software.eessi.io/2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023a.yml index 1475ad0866..3a060e30a7 100644 --- a/easystacks/software.eessi.io/2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023a.yml @@ -1,2 +1,3 @@ easyconfigs: - OpenMPI-4.1.5-GCC-12.3.0.eb + - foss-2023a.eb From d9c1fb1104f19e741b8ac2a5a652eb22e07bf241 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20R=C3=B6blitz?= Date: Tue, 25 Jun 2024 10:17:51 +0200 Subject: [PATCH 169/203] removed unnecessary variable --- eessi_container.sh | 3 --- 1 file changed, 3 deletions(-) diff --git a/eessi_container.sh b/eessi_container.sh index eaa4f59af9..4b7b4eb719 100755 --- a/eessi_container.sh +++ b/eessi_container.sh @@ -48,9 +48,6 @@ HTTPS_PROXY_ERROR_EXITCODE=$((${ANY_ERROR_EXITCODE} << 10)) RUN_SCRIPT_MISSING_EXITCODE=$((${ANY_ERROR_EXITCODE} << 11)) NVIDIA_MODE_UNKNOWN_EXITCODE=$((${ANY_ERROR_EXITCODE} << 12)) -# we use an associative array for storing sets of settings per CVMFS repository -declare -A cvmfs_repo_settings - # CernVM-FS settings CVMFS_VAR_LIB="var-lib-cvmfs" CVMFS_VAR_RUN="var-run-cvmfs" From e25cd1e720a3a0e787409093d561d5892929d10a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20R=C3=B6blitz?= Date: Tue, 25 Jun 2024 10:23:18 +0200 Subject: [PATCH 170/203] add more information about repository-specific access modes --- eessi_container.sh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/eessi_container.sh b/eessi_container.sh index 4b7b4eb719..9d2ce6c25f 100755 --- a/eessi_container.sh +++ b/eessi_container.sh @@ -70,7 +70,8 @@ export EESSI_REPOS_CFG_FILE="${EESSI_REPOS_CFG_DIR}/repos.cfg" display_help() { echo "usage: $0 [OPTIONS] [[--] SCRIPT or COMMAND]" echo " OPTIONS:" - echo " -a | --access {ro,rw} - ro (read-only), rw (read & write) [default: ro]" + echo " -a | --access {ro,rw} - sets access globally for all CVMFS repositories:" + echo " ro (read-only), rw (read & write) [default: ro]" echo " -b | --extra-bind-paths - specify extra paths to be bound into the container." echo " To specify multiple bind paths, separate by comma." echo " Example: '/src:/dest:ro,/src2:/dest2:rw'" @@ -89,7 +90,9 @@ display_help() { echo " MODE==install for a CUDA installation, MODE==run to" echo " attach a GPU, MODE==all for both [default: false]" echo " -r | --repository CFG - configuration file or identifier defining the" - echo " repository to use; can be given multiple times" + echo " repository to use; can be given multiple times;" + echo " CFG may include a suffix ';access={ro,rw}' to" + echo " overwrite the global access mode for this repository" echo " [default: software.eessi.io via CVMFS config available" echo " via default container, see --container]" echo " -u | --resume DIR/TGZ - resume a previous run from a directory or tarball," From da1b6710152dcf912db34147e88c739914e0290d Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Tue, 25 Jun 2024 18:16:24 +0200 Subject: [PATCH 171/203] fix hook to tweak BLIS configure command when building for A64FX --- eb_hooks.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/eb_hooks.py b/eb_hooks.py index fd3e0830ee..b14c799eae 100644 --- a/eb_hooks.py +++ b/eb_hooks.py @@ -344,7 +344,12 @@ def pre_configure_hook_BLIS_a64fx(self, *args, **kwargs): if self.name == 'BLIS': cpu_target = get_eessi_envvar('EESSI_SOFTWARE_SUBDIR') if self.version == '0.9.0' and cpu_target == CPU_TARGET_A64FX: - self.cfg.update('configopts', 'CFLAGS="$CFLAGS -DCACHE_SECTOR_SIZE_READONLY"') + # last argument of BLIS' configure command is configuration target (usually 'auto' for auto-detect), + # specifying of variables should be done before that + config_opts = self.cfg['configopts'].split(' ') + cflags_var = 'CFLAGS="$CFLAGS -DCACHE_SECTOR_SIZE_READONLY"' + config_target = config_opts[-1] + self.cfg['configopts'] = ' '.join(config_opts[:-1] + [cflags_var, config_target]) else: raise EasyBuildError("BLIS-specific hook triggered for non-BLIS easyconfig?!") From 80d8d6e5789a972342fd57532e84d8df3a39bb88 Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Wed, 26 Jun 2024 11:46:11 +0200 Subject: [PATCH 172/203] ignore scipy test failures when installing SciPy-bundle for A64FX --- eb_hooks.py | 22 ++++++++++++++++------ eessi-2023.06-known-issues.yml | 7 +++++++ 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/eb_hooks.py b/eb_hooks.py index b14c799eae..e6f0cf0dd2 100644 --- a/eb_hooks.py +++ b/eb_hooks.py @@ -488,20 +488,30 @@ def pre_test_hook_ignore_failing_tests_FFTWMPI(self, *args, **kwargs): def pre_test_hook_ignore_failing_tests_SciPybundle(self, *args, **kwargs): """ Pre-test hook for SciPy-bundle: skip failing tests for selected SciPy-bundle versions - In version 2021.10, 2 failing tests in scipy 1.6.3: + In version 2021.10 on neoverse_v1, 2 failing tests in scipy 1.6.3: FAILED optimize/tests/test_linprog.py::TestLinprogIPSparse::test_bug_6139 - A... FAILED optimize/tests/test_linprog.py::TestLinprogIPSparsePresolve::test_bug_6139 = 2 failed, 30554 passed, 2064 skipped, 10992 deselected, 76 xfailed, 7 xpassed, 40 warnings in 380.27s (0:06:20) = - In versions 2023.02, 2023.07, and 2023.11, 2 failing tests in scipy (versions 1.10.1, 1.11.1, 1.11.4): + In versions 2023.02 + 2023.07 + 2023.11 on neoverse_v1, 2 failing tests in scipy (versions 1.10.1, 1.11.1, 1.11.4): FAILED scipy/spatial/tests/test_distance.py::TestPdist::test_pdist_correlation_iris FAILED scipy/spatial/tests/test_distance.py::TestPdist::test_pdist_correlation_iris_float32 = 2 failed, 54409 passed, 3016 skipped, 223 xfailed, 13 xpassed, 10917 warnings in 892.04s (0:14:52) = - In previous versions we were not as strict yet on the numpy/SciPy tests + In version 2023.07 on a64fx, 4 failing tests in scipy 1.11.1: + FAILED scipy/optimize/tests/test_linprog.py::TestLinprogIPSparse::test_bug_6139 + FAILED scipy/optimize/tests/test_linprog.py::TestLinprogIPSparsePresolve::test_bug_6139 + FAILED scipy/spatial/tests/test_distance.py::TestPdist::test_pdist_correlation_iris + FAILED scipy/spatial/tests/test_distance.py::TestPdist::test_pdist_correlation_iris_float32 + = 4 failed, 54407 passed, 3016 skipped, 223 xfailed, 13 xpassed, 10917 warnings in 6068.43s (1:41:08) = + (in previous versions we were not as strict yet on the numpy/SciPy tests) """ cpu_target = get_eessi_envvar('EESSI_SOFTWARE_SUBDIR') - scipy_bundle_versions = ('2021.10', '2023.02', '2023.07', '2023.11') - if self.name == 'SciPy-bundle' and self.version in scipy_bundle_versions and cpu_target == CPU_TARGET_NEOVERSE_V1: - self.cfg['testopts'] = "|| echo ignoring failing tests" + scipy_bundle_versions_nv1 = ('2021.10', '2023.02', '2023.07', '2023.11') + scipy_bundle_versions_a64fx = ('2023.07', '2023.11') + if self.name == 'SciPy-bundle': + if cpu_target == CPU_TARGET_NEOVERSE_V1 and self.version in scipy_bundle_versions_nv1: + self.cfg['testopts'] = "|| echo ignoring failing tests" + elif cpu_target == CPU_TARGET_A64FX and self.version in scipy_bundle_versions_a64fx: + self.cfg['testopts'] = "|| echo ignoring failing tests" def pre_test_hook_ignore_failing_tests_netCDF(self, *args, **kwargs): """ diff --git a/eessi-2023.06-known-issues.yml b/eessi-2023.06-known-issues.yml index 2d1256354f..c5cdc68941 100644 --- a/eessi-2023.06-known-issues.yml +++ b/eessi-2023.06-known-issues.yml @@ -1,3 +1,10 @@ +- aarch64/a64x: + - SciPy-bundle-2023.07-gfbf-2023a: + - issue: https://github.com/EESSI/software-layer/issues/318 + - info: "4 failing tests (vs 54407 passed) in scipy test suite" + - SciPy-bundle-2023.11-gfbf-2023b: + - issue: https://github.com/EESSI/software-layer/issues/318 + - info: "3 failing tests (vs 54875 passed) in scipy test suite" - aarch64/generic: - PyTorch-2.1.2-foss-2023a: - issue: https://github.com/EESSI/software-layer/issues/461 From f07fd8567f1154cb8b4f0ab338979caff4dbfcce Mon Sep 17 00:00:00 2001 From: torri Date: Wed, 26 Jun 2024 14:03:51 +0200 Subject: [PATCH 173/203] fix for broken curl installation --- init/eessi_environment_variables | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/init/eessi_environment_variables b/init/eessi_environment_variables index 78851a9c95..d6e5b75dce 100644 --- a/init/eessi_environment_variables +++ b/init/eessi_environment_variables @@ -15,6 +15,20 @@ function show_msg { fi } +function check_rhel_ca { + + os=$(grep -oP '(?<=^ID_LIKE=).+' /etc/os-release | tr -d '"') + + version_id=$(grep -oP '(?<=^VERSION_ID=).+' /etc/os-release | tr -d '"') + version_major=${version_id%\.*} + + if [[ $os =~ "rhel" ]] && [ $version_major -gt 7 ] + then + export CURL_CA_BUNDLE=/etc/pki/tls/certs/ca-bundle.crt + fi +} + + # set up minimal environment: $EESSI_PREFIX, $EESSI_VERSION, $EESSI_OS_TYPE, $EESSI_CPU_FAMILY, $EPREFIX source $EESSI_INIT_DIR_PATH/minimal_eessi_env @@ -106,6 +120,8 @@ if [ -d $EESSI_PREFIX ]; then false fi + # Fix wrong path for RHEL >=8 libcurl + check_rhel_ca else error "EESSI software layer at $EESSI_SOFTWARE_PATH not found!" From 8ed871b53b4bcca8a55f9365b7aaaf0288dc36c9 Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Wed, 26 Jun 2024 15:43:38 +0200 Subject: [PATCH 174/203] {2023.06,a64fx}[foss/2023a] SciPy-bundle 2023.07 --- .../2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023a.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/easystacks/software.eessi.io/2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023a.yml b/easystacks/software.eessi.io/2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023a.yml index 3a060e30a7..5326f6c493 100644 --- a/easystacks/software.eessi.io/2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023a.yml @@ -1,3 +1,4 @@ easyconfigs: - OpenMPI-4.1.5-GCC-12.3.0.eb - foss-2023a.eb + - SciPy-bundle-2023.07-gfbf-2023a.eb From 69c059b758c29400ac7039cf1ee03af5eba2515c Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Wed, 26 Jun 2024 22:29:52 +0200 Subject: [PATCH 175/203] {2023.06,a64fx}[foss/2023a] ESPResSo 4.2.2 --- .../2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023a.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/easystacks/software.eessi.io/2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023a.yml b/easystacks/software.eessi.io/2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023a.yml index 5326f6c493..3fe1e43d3f 100644 --- a/easystacks/software.eessi.io/2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023a.yml @@ -2,3 +2,4 @@ easyconfigs: - OpenMPI-4.1.5-GCC-12.3.0.eb - foss-2023a.eb - SciPy-bundle-2023.07-gfbf-2023a.eb + - ESPResSo-4.2.2-foss-2023a.eb From 69a812962486940fe553facc459939af8f6549fe Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Thu, 27 Jun 2024 13:27:48 +0200 Subject: [PATCH 176/203] {2023.06,a64fx} foss/2023b --- .../2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023b.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 easystacks/software.eessi.io/2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023b.yml diff --git a/easystacks/software.eessi.io/2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023b.yml b/easystacks/software.eessi.io/2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023b.yml new file mode 100644 index 0000000000..c7411ada0a --- /dev/null +++ b/easystacks/software.eessi.io/2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023b.yml @@ -0,0 +1,6 @@ +easyconfigs: + - OpenBLAS-0.3.24-GCC-13.2.0.eb: + options: + # see https://github.com/easybuilders/easybuild-easyconfigs/pull/20820 + from-commit: 1fc885b35dacdeb2feef4af207a2daa2502bae08 + - foss-2023b.eb From 36dea35585cbc86b7044ec454593a00307c130f9 Mon Sep 17 00:00:00 2001 From: Richard Top Date: Mon, 1 Jul 2024 08:45:07 +0000 Subject: [PATCH 177/203] {2023.06}[GCC/12.3.0] BCFtools v1.18 --- .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023a.yml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023a.yml diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023a.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023a.yml new file mode 100644 index 0000000000..ade226c217 --- /dev/null +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023a.yml @@ -0,0 +1,2 @@ +easyconfigs: + - BCFtools-1.18-GCC-12.3.0.eb From 9747ee497161f23dd999094e78bae6c863c5a9fb Mon Sep 17 00:00:00 2001 From: torri Date: Mon, 1 Jul 2024 16:31:37 +0200 Subject: [PATCH 178/203] simplified the implementation --- init/eessi_environment_variables | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/init/eessi_environment_variables b/init/eessi_environment_variables index d6e5b75dce..c28ddb45d9 100644 --- a/init/eessi_environment_variables +++ b/init/eessi_environment_variables @@ -15,20 +15,6 @@ function show_msg { fi } -function check_rhel_ca { - - os=$(grep -oP '(?<=^ID_LIKE=).+' /etc/os-release | tr -d '"') - - version_id=$(grep -oP '(?<=^VERSION_ID=).+' /etc/os-release | tr -d '"') - version_major=${version_id%\.*} - - if [[ $os =~ "rhel" ]] && [ $version_major -gt 7 ] - then - export CURL_CA_BUNDLE=/etc/pki/tls/certs/ca-bundle.crt - fi -} - - # set up minimal environment: $EESSI_PREFIX, $EESSI_VERSION, $EESSI_OS_TYPE, $EESSI_CPU_FAMILY, $EPREFIX source $EESSI_INIT_DIR_PATH/minimal_eessi_env @@ -121,7 +107,11 @@ if [ -d $EESSI_PREFIX ]; then fi # Fix wrong path for RHEL >=8 libcurl - check_rhel_ca + rhel_libcurl_file="/etc/pki/tls/certs/ca-bundle.crt" + if [ -f $rhel_libcurl_file ]; then + show_msg "Found libcurl CAs file at RHEL location, setting CURL_CA_BUNDLE" + export CURL_CA_BUNDLE=$rhel_libcurl_file + fi else error "EESSI software layer at $EESSI_SOFTWARE_PATH not found!" From 51c6b1c998a69d8dd4a75f4f83b101b5ba81f1b4 Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Wed, 3 Jul 2024 10:51:41 +0200 Subject: [PATCH 179/203] improve comment that explains setting of `$CURL_CA_BUNDLE` on RHEL-based systems Co-authored-by: ocaisa --- init/eessi_environment_variables | 3 +++ 1 file changed, 3 insertions(+) diff --git a/init/eessi_environment_variables b/init/eessi_environment_variables index c28ddb45d9..f5bb387955 100644 --- a/init/eessi_environment_variables +++ b/init/eessi_environment_variables @@ -107,6 +107,9 @@ if [ -d $EESSI_PREFIX ]; then fi # Fix wrong path for RHEL >=8 libcurl + # This is required here because we ship curl in our compat layer. If we only provided + # curl as a module file we could instead do this via a `modluafooter` in an EasyBuild + # hook (or via an Lmod hook) rhel_libcurl_file="/etc/pki/tls/certs/ca-bundle.crt" if [ -f $rhel_libcurl_file ]; then show_msg "Found libcurl CAs file at RHEL location, setting CURL_CA_BUNDLE" From 84de38a958417daf880c347dba0e9ae728d0e3f0 Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Wed, 3 Jul 2024 21:37:43 +0200 Subject: [PATCH 180/203] {2023.06,zen4}[foss/2023a] ParaView 5.11.2 --- .../2023.06/zen4/eessi-2023.06-eb-4.9.2-2023a.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-2023a.yml b/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-2023a.yml index 09f525364f..d4c70c562d 100644 --- a/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-2023a.yml @@ -2,3 +2,4 @@ easyconfigs: - ESPResSo-4.2.2-foss-2023a.eb - TensorFlow-2.13.0-foss-2023a.eb - R-4.3.2-gfbf-2023a.eb + - ParaView-5.11.2-foss-2023a.eb From c895bf16668c588d7eec827092849d883ce10bf2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Thu, 4 Jul 2024 13:24:12 +0200 Subject: [PATCH 181/203] remove TODO for using separate cache dirs for each repo --- eessi_container.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/eessi_container.sh b/eessi_container.sh index 9d2ce6c25f..94de82df0f 100755 --- a/eessi_container.sh +++ b/eessi_container.sh @@ -510,7 +510,6 @@ fi [[ ${VERBOSE} -eq 1 ]] && echo "CONTAINER=${CONTAINER}" # set env vars and create directories for CernVM-FS -# TODO need to use separate values for separate repos? EESSI_CVMFS_VAR_LIB=${EESSI_TMPDIR}/${CVMFS_VAR_LIB} EESSI_CVMFS_VAR_RUN=${EESSI_TMPDIR}/${CVMFS_VAR_RUN} mkdir -p ${EESSI_CVMFS_VAR_LIB} From 417f4dd9b82795520e5923a9c1532ed04f384747 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Thu, 4 Jul 2024 13:24:44 +0200 Subject: [PATCH 182/203] fix usage line for access permissions --- eessi_container.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eessi_container.sh b/eessi_container.sh index 94de82df0f..e404b7ee18 100755 --- a/eessi_container.sh +++ b/eessi_container.sh @@ -91,7 +91,7 @@ display_help() { echo " attach a GPU, MODE==all for both [default: false]" echo " -r | --repository CFG - configuration file or identifier defining the" echo " repository to use; can be given multiple times;" - echo " CFG may include a suffix ';access={ro,rw}' to" + echo " CFG may include a suffix ',access={ro,rw}' to" echo " overwrite the global access mode for this repository" echo " [default: software.eessi.io via CVMFS config available" echo " via default container, see --container]" From d8cf6a60540b36b5c3e64c687af5d1482df021a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Thu, 4 Jul 2024 13:41:40 +0200 Subject: [PATCH 183/203] check for software.eessi.io in the default --list-repos output --- .github/workflows/test_eessi_container_script.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test_eessi_container_script.yml b/.github/workflows/test_eessi_container_script.yml index d31feb23fe..c0346774cb 100644 --- a/.github/workflows/test_eessi_container_script.yml +++ b/.github/workflows/test_eessi_container_script.yml @@ -45,7 +45,8 @@ jobs: elif [[ ${{matrix.SCRIPT_TEST}} == 'listrepos_default' ]]; then outfile=out_listrepos.txt ./eessi_container.sh --verbose --list-repos | tee ${outfile} - grep "EESSI" ${outfile} + # make sure that the default EESSI software repository is available + grep "software.eessi.io" ${outfile} # test use of --list-repos with custom repos.cfg elif [[ ${{matrix.SCRIPT_TEST}} == 'listrepos_custom' ]]; then From aa9895e44ac1afd5a44524d004161f3804449a90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Thu, 4 Jul 2024 15:27:27 +0200 Subject: [PATCH 184/203] fix regex to find the custom EESSI version in the output of --list-repos --- .github/workflows/test_eessi_container_script.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test_eessi_container_script.yml b/.github/workflows/test_eessi_container_script.yml index c0346774cb..d44788927f 100644 --- a/.github/workflows/test_eessi_container_script.yml +++ b/.github/workflows/test_eessi_container_script.yml @@ -58,11 +58,12 @@ jobs: echo "[EESSI/20HT.TP]" >> cfg/repos.cfg echo "repo_version = 20HT.TP" >> cfg/repos.cfg ./eessi_container.sh --verbose --list-repos | tee ${outfile} - grep "EESSI" ${outfile} + # make sure that the default EESSI software repository is available + grep "software.eessi.io" ${outfile} export EESSI_REPOS_CFG_DIR_OVERRIDE=${PWD}/cfg ./eessi_container.sh --verbose --list-repos | tee ${outfile2} - grep "[EESSI/2023.02]" ${outfile2} + grep "EESSI/20AB.CD" ${outfile2} # test use of --mode run elif [[ ${{matrix.SCRIPT_TEST}} == 'run' ]]; then From cbedafef9f104540151ca9093bc2e95b178036b3 Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Thu, 4 Jul 2024 21:07:39 +0200 Subject: [PATCH 185/203] {2023.06,a64fx}[foss/2023a] ParaView 5.11.2 --- .../2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023a.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/easystacks/software.eessi.io/2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023a.yml b/easystacks/software.eessi.io/2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023a.yml index 3fe1e43d3f..5521b92398 100644 --- a/easystacks/software.eessi.io/2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/a64fx/eessi-2023.06-eb-4.9.2-2023a.yml @@ -3,3 +3,4 @@ easyconfigs: - foss-2023a.eb - SciPy-bundle-2023.07-gfbf-2023a.eb - ESPResSo-4.2.2-foss-2023a.eb + - ParaView-5.11.2-foss-2023a.eb From c97dd7ed8e9d7cc23436927f4dfff00fae93d623 Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Thu, 4 Jul 2024 21:58:10 +0200 Subject: [PATCH 186/203] add missing /cvmfs/ in $EESSI_CVMFS_REPO_OVERRIDE defined by bot/build.sh and bot/test.sh --- bot/build.sh | 2 +- bot/test.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bot/build.sh b/bot/build.sh index c9a362fdca..145be740d3 100755 --- a/bot/build.sh +++ b/bot/build.sh @@ -138,7 +138,7 @@ echo "bot/build.sh: EESSI_VERSION_OVERRIDE='${EESSI_VERSION_OVERRIDE}'" # determine CVMFS repo to be used from .repository.repo_name in ${JOB_CFG_FILE} # here, just set EESSI_CVMFS_REPO_OVERRIDE, a bit further down # "source init/eessi_defaults" via sourcing init/minimal_eessi_env -export EESSI_CVMFS_REPO_OVERRIDE=$(cfg_get_value "repository" "repo_name") +export EESSI_CVMFS_REPO_OVERRIDE=/cvmfs/$(cfg_get_value "repository" "repo_name") echo "bot/build.sh: EESSI_CVMFS_REPO_OVERRIDE='${EESSI_CVMFS_REPO_OVERRIDE}'" # determine architecture to be used from entry .architecture in ${JOB_CFG_FILE} diff --git a/bot/test.sh b/bot/test.sh index 04bff346cd..d3f3630ea8 100755 --- a/bot/test.sh +++ b/bot/test.sh @@ -160,7 +160,7 @@ echo "bot/test.sh: EESSI_PILOT_VERSION_OVERRIDE='${EESSI_PILOT_VERSION_OVERRIDE} # determine CVMFS repo to be used from .repository.repo_name in ${JOB_CFG_FILE} # here, just set EESSI_CVMFS_REPO_OVERRIDE, a bit further down # "source init/eessi_defaults" via sourcing init/minimal_eessi_env -export EESSI_CVMFS_REPO_OVERRIDE=$(cfg_get_value "repository" "repo_name") +export EESSI_CVMFS_REPO_OVERRIDE=/cvmfs/$(cfg_get_value "repository" "repo_name") echo "bot/test.sh: EESSI_CVMFS_REPO_OVERRIDE='${EESSI_CVMFS_REPO_OVERRIDE}'" # determine architecture to be used from entry .architecture in ${JOB_CFG_FILE} From 3bae44ca2c8ee6cf0b53f753b74f47314d532222 Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Thu, 4 Jul 2024 21:58:10 +0200 Subject: [PATCH 187/203] add missing /cvmfs/ in $EESSI_CVMFS_REPO_OVERRIDE defined by bot/build.sh and bot/test.sh --- bot/build.sh | 2 +- bot/test.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bot/build.sh b/bot/build.sh index c9a362fdca..145be740d3 100755 --- a/bot/build.sh +++ b/bot/build.sh @@ -138,7 +138,7 @@ echo "bot/build.sh: EESSI_VERSION_OVERRIDE='${EESSI_VERSION_OVERRIDE}'" # determine CVMFS repo to be used from .repository.repo_name in ${JOB_CFG_FILE} # here, just set EESSI_CVMFS_REPO_OVERRIDE, a bit further down # "source init/eessi_defaults" via sourcing init/minimal_eessi_env -export EESSI_CVMFS_REPO_OVERRIDE=$(cfg_get_value "repository" "repo_name") +export EESSI_CVMFS_REPO_OVERRIDE=/cvmfs/$(cfg_get_value "repository" "repo_name") echo "bot/build.sh: EESSI_CVMFS_REPO_OVERRIDE='${EESSI_CVMFS_REPO_OVERRIDE}'" # determine architecture to be used from entry .architecture in ${JOB_CFG_FILE} diff --git a/bot/test.sh b/bot/test.sh index 04bff346cd..d3f3630ea8 100755 --- a/bot/test.sh +++ b/bot/test.sh @@ -160,7 +160,7 @@ echo "bot/test.sh: EESSI_PILOT_VERSION_OVERRIDE='${EESSI_PILOT_VERSION_OVERRIDE} # determine CVMFS repo to be used from .repository.repo_name in ${JOB_CFG_FILE} # here, just set EESSI_CVMFS_REPO_OVERRIDE, a bit further down # "source init/eessi_defaults" via sourcing init/minimal_eessi_env -export EESSI_CVMFS_REPO_OVERRIDE=$(cfg_get_value "repository" "repo_name") +export EESSI_CVMFS_REPO_OVERRIDE=/cvmfs/$(cfg_get_value "repository" "repo_name") echo "bot/test.sh: EESSI_CVMFS_REPO_OVERRIDE='${EESSI_CVMFS_REPO_OVERRIDE}'" # determine architecture to be used from entry .architecture in ${JOB_CFG_FILE} From 3fc6cdc1558e21005470e815adeb3f8620ec53e8 Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Fri, 5 Jul 2024 08:18:27 +0200 Subject: [PATCH 188/203] reduce parallellism when building Qt5 on A64FX systems, due to scarce memory --- eb_hooks.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/eb_hooks.py b/eb_hooks.py index e6f0cf0dd2..40071ea067 100644 --- a/eb_hooks.py +++ b/eb_hooks.py @@ -81,8 +81,11 @@ def post_ready_hook(self, *args, **kwargs): """ # 'parallel' easyconfig parameter is set via EasyBlock.set_parallel in ready step based on available cores. # here we reduce parallellism to only use half of that for selected software, - # to avoid failing builds/tests due to out-of-memory problems - if self.name in ['TensorFlow', 'libxc']: + # to avoid failing builds/tests due to out-of-memory problems; + memory_hungry_build = self.name in ['libxc', 'TensorFlow'] + # on A64FX systems, (HBM) memory is typically scarce, so we need to use fewer cores for some builds + memory_hungry_build_a64fx = self.name in ['Qt5'] + if memory_hungry_build or memory_hungry_build_a64fx: parallel = self.cfg['parallel'] if parallel > 1: self.cfg['parallel'] = parallel // 2 From a74669585a742ca83e9b976d7f6854a20570460f Mon Sep 17 00:00:00 2001 From: Richard Top Date: Fri, 5 Jul 2024 12:24:01 +0000 Subject: [PATCH 189/203] {2023.06}[GCCcore/12.3.0-GCC/12.3.0-gompi/2023a] bio-packages --- .../2023.06/eessi-2023.06-eb-4.9.2-2023a.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023a.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023a.yml index ade226c217..7fc42e2e34 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023a.yml @@ -1,2 +1,17 @@ easyconfigs: - BCFtools-1.18-GCC-12.3.0.eb + - BWA-0.7.18-GCCcore-12.3.0.eb + - CapnProto-1.0.1-GCCcore-12.3.0.eb + - DendroPy-4.6.1-GCCcore-12.3.0.eb + - DIAMOND-2.1.8-GCC-12.3.0.eb + - FastME-2.1.6.3-GCC-12.3.0.eb + - fastp-0.23.4-GCC-12.3.0.eb + - HMMER-3.4-gompi-2023a.eb + - IQ-TREE-2.3.5-gompi-2023a.eb: + options: + # see https://github.com/easybuilders/easybuild-easyconfigs/pull/20955 + from-commit: 185f88b9a03d65a7fb74edc7acb4221e87e90784 + - KronaTools-2.8.1-GCCcore-12.3.0.eb + - LSD2-2.4.1-GCCcore-12.3.0.eb + - MAFFT-7.520-GCC-12.3.0-with-extensions.eb + - ncbi-vdb-3.0.10-gompi-2023a.e From 4d9390ef015f03abe54ca3f61cd84ca6b1164c07 Mon Sep 17 00:00:00 2001 From: TopRichard <121792457+TopRichard@users.noreply.github.com> Date: Fri, 5 Jul 2024 14:30:32 +0200 Subject: [PATCH 190/203] Update easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023a.yml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Bob Dröge --- .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023a.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023a.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023a.yml index 7fc42e2e34..34ec3257e8 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023a.yml @@ -14,4 +14,4 @@ easyconfigs: - KronaTools-2.8.1-GCCcore-12.3.0.eb - LSD2-2.4.1-GCCcore-12.3.0.eb - MAFFT-7.520-GCC-12.3.0-with-extensions.eb - - ncbi-vdb-3.0.10-gompi-2023a.e + - ncbi-vdb-3.0.10-gompi-2023a.eb From 868a8a8c94e932762299aabc6c6ed4eca749ef42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 5 Jul 2024 16:07:05 +0200 Subject: [PATCH 191/203] /tmp/overlay-upper should now be /tmp//overlay-upper --- create_tarball.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/create_tarball.sh b/create_tarball.sh index 0a7669f73f..ed999cde89 100755 --- a/create_tarball.sh +++ b/create_tarball.sh @@ -26,7 +26,7 @@ if [ ! -d ${software_dir} ]; then exit 2 fi -overlay_upper_dir="${eessi_tmpdir}/overlay-upper" +overlay_upper_dir="${eessi_tmpdir}/${cvmfs_repo}/overlay-upper" software_dir_overlay="${overlay_upper_dir}/versions/${eessi_version}" if [ ! -d ${software_dir_overlay} ]; then From d5ecd74837cde2feb834275632e327beb182c00f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 5 Jul 2024 21:58:23 +0200 Subject: [PATCH 192/203] remove /cvmfs/ from cvmfs_repo variable --- create_tarball.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/create_tarball.sh b/create_tarball.sh index ed999cde89..2dee665060 100755 --- a/create_tarball.sh +++ b/create_tarball.sh @@ -26,7 +26,8 @@ if [ ! -d ${software_dir} ]; then exit 2 fi -overlay_upper_dir="${eessi_tmpdir}/${cvmfs_repo}/overlay-upper" +cvmfs_repo_name=${cvmfs_repo#/cvmfs/} +overlay_upper_dir="${eessi_tmpdir}/${cvmfs_repo_name}/overlay-upper" software_dir_overlay="${overlay_upper_dir}/versions/${eessi_version}" if [ ! -d ${software_dir_overlay} ]; then From 49cbcc8de452e9cc51a3969b860932caf109a9bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Fri, 5 Jul 2024 22:02:31 +0200 Subject: [PATCH 193/203] implement changes from https://github.com/EESSI/software-layer/pull/635 and https://github.com/EESSI/software-layer/pull/636 --- create_tarball.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/create_tarball.sh b/create_tarball.sh index 0a7669f73f..2dee665060 100755 --- a/create_tarball.sh +++ b/create_tarball.sh @@ -26,7 +26,8 @@ if [ ! -d ${software_dir} ]; then exit 2 fi -overlay_upper_dir="${eessi_tmpdir}/overlay-upper" +cvmfs_repo_name=${cvmfs_repo#/cvmfs/} +overlay_upper_dir="${eessi_tmpdir}/${cvmfs_repo_name}/overlay-upper" software_dir_overlay="${overlay_upper_dir}/versions/${eessi_version}" if [ ! -d ${software_dir_overlay} ]; then From 88eebb9ee7245c56e4ad623c4055b8f4c365b59a Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Sat, 6 Jul 2024 11:26:40 +0200 Subject: [PATCH 194/203] rebuild OpenFOAM-10-foss-2023a.eb and OpenFOAM-11-foss-2023a.eb without -ftree-vectorize --- ...20240706-eb-4.9.2-OpenFOAM-no-ftree-vectorize.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 easystacks/software.eessi.io/2023.06/rebuilds/20240706-eb-4.9.2-OpenFOAM-no-ftree-vectorize.yml diff --git a/easystacks/software.eessi.io/2023.06/rebuilds/20240706-eb-4.9.2-OpenFOAM-no-ftree-vectorize.yml b/easystacks/software.eessi.io/2023.06/rebuilds/20240706-eb-4.9.2-OpenFOAM-no-ftree-vectorize.yml new file mode 100644 index 0000000000..c12d244790 --- /dev/null +++ b/easystacks/software.eessi.io/2023.06/rebuilds/20240706-eb-4.9.2-OpenFOAM-no-ftree-vectorize.yml @@ -0,0 +1,12 @@ +# 2024.07.06 +# OpenFOAM 10 and 11 built with GCC 11.3.0 or 12.3.0 and -ftree-vectorize yields incorrect results, +# see https://github.com/easybuilders/easybuild-easyconfigs/issues/20927 +easyconfigs: + - OpenFOAM-10-foss-2023a.eb: + options: + # see https://github.com/easybuilders/easybuild-easyconfigs/pull/20958 + from-commit: dbadb2074464d816740ee0e95595c2cb31b6338f + - OpenFOAM-11-foss-2023a.eb: + options: + # see https://github.com/easybuilders/easybuild-easyconfigs/pull/20958 + from-commit: dbadb2074464d816740ee0e95595c2cb31b6338f From f2507201e02ea6da362f784fad1bbb5b27caa4a7 Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Sat, 6 Jul 2024 11:29:01 +0200 Subject: [PATCH 195/203] {2023.06,zen4}[foss/2023a] OpenFOAM 10 + 11 --- .../2023.06/zen4/eessi-2023.06-eb-4.9.2-2023a.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-2023a.yml b/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-2023a.yml index d4c70c562d..65a12695e4 100644 --- a/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/zen4/eessi-2023.06-eb-4.9.2-2023a.yml @@ -3,3 +3,11 @@ easyconfigs: - TensorFlow-2.13.0-foss-2023a.eb - R-4.3.2-gfbf-2023a.eb - ParaView-5.11.2-foss-2023a.eb + - OpenFOAM-10-foss-2023a.eb: + options: + # see https://github.com/easybuilders/easybuild-easyconfigs/pull/20958 + from-commit: dbadb2074464d816740ee0e95595c2cb31b6338f + - OpenFOAM-11-foss-2023a.eb: + options: + # see https://github.com/easybuilders/easybuild-easyconfigs/pull/20958 + from-commit: dbadb2074464d816740ee0e95595c2cb31b6338f From b07445e75cb874fb87003df1d92a5ba879deac4c Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Sun, 7 Jul 2024 21:56:20 +0200 Subject: [PATCH 196/203] only use half the cores for Qt5 when building for A64FX --- eb_hooks.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/eb_hooks.py b/eb_hooks.py index 40071ea067..3b381e5963 100644 --- a/eb_hooks.py +++ b/eb_hooks.py @@ -84,7 +84,8 @@ def post_ready_hook(self, *args, **kwargs): # to avoid failing builds/tests due to out-of-memory problems; memory_hungry_build = self.name in ['libxc', 'TensorFlow'] # on A64FX systems, (HBM) memory is typically scarce, so we need to use fewer cores for some builds - memory_hungry_build_a64fx = self.name in ['Qt5'] + cpu_target = get_eessi_envvar('EESSI_SOFTWARE_SUBDIR') + memory_hungry_build_a64fx = cpu_target == CPU_TARGET_A64FX and self.name in ['Qt5'] if memory_hungry_build or memory_hungry_build_a64fx: parallel = self.cfg['parallel'] if parallel > 1: From d6d5a2bb5c2eead7cd931ea307ea4cd3b44bf9db Mon Sep 17 00:00:00 2001 From: Helena Vela Beltran <47674829+hvelab@users.noreply.github.com> Date: Mon, 8 Jul 2024 17:18:02 +0200 Subject: [PATCH 197/203] Update init/eessi_environment_variables Add bigger comment Co-authored-by: ocaisa --- init/eessi_environment_variables | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/init/eessi_environment_variables b/init/eessi_environment_variables index f5bb387955..9417d5b2a2 100644 --- a/init/eessi_environment_variables +++ b/init/eessi_environment_variables @@ -106,15 +106,15 @@ if [ -d $EESSI_PREFIX ]; then false fi - # Fix wrong path for RHEL >=8 libcurl - # This is required here because we ship curl in our compat layer. If we only provided - # curl as a module file we could instead do this via a `modluafooter` in an EasyBuild - # hook (or via an Lmod hook) - rhel_libcurl_file="/etc/pki/tls/certs/ca-bundle.crt" - if [ -f $rhel_libcurl_file ]; then - show_msg "Found libcurl CAs file at RHEL location, setting CURL_CA_BUNDLE" - export CURL_CA_BUNDLE=$rhel_libcurl_file - fi + # Fix wrong path for RHEL >=8 libcurl + # This is required here because we ship curl in our compat layer. If we only provided + # curl as a module file we could instead do this via a `modluafooter` in an EasyBuild + # hook (or via an Lmod hook) + rhel_libcurl_file="/etc/pki/tls/certs/ca-bundle.crt" + if [ -f $rhel_libcurl_file ]; then + show_msg "Found libcurl CAs file at RHEL location, setting CURL_CA_BUNDLE" + export CURL_CA_BUNDLE=$rhel_libcurl_file + fi else error "EESSI software layer at $EESSI_SOFTWARE_PATH not found!" From 28eabaaefcde5b112b60e8c94f46494ab7b0944e Mon Sep 17 00:00:00 2001 From: Xin An Date: Fri, 12 Jul 2024 12:11:19 +0200 Subject: [PATCH 198/203] {2023.06}[gfbf/2023b] Pystencils 1.3.4 --- .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023b.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023b.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023b.yml index 15c02951d7..3963f79ecd 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023b.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023b.yml @@ -58,3 +58,4 @@ easyconfigs: options: from-pr: 20201 - OSU-Micro-Benchmarks-7.2-gompi-2023b.eb + - pystencils-1.3.4-gfbf-2023b.eb From 2ca3684b845165425af638daaea27897fd1cbe7e Mon Sep 17 00:00:00 2001 From: Xin An <34663977+xinan1911@users.noreply.github.com> Date: Fri, 12 Jul 2024 14:29:19 +0200 Subject: [PATCH 199/203] Update easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023b.yml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Bob Dröge --- .../2023.06/eessi-2023.06-eb-4.9.0-2023b.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023b.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023b.yml index 3963f79ecd..8d9779c59c 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023b.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023b.yml @@ -58,4 +58,7 @@ easyconfigs: options: from-pr: 20201 - OSU-Micro-Benchmarks-7.2-gompi-2023b.eb - - pystencils-1.3.4-gfbf-2023b.eb + - pystencils-1.3.4-gfbf-2023b.eb: + options: + # see https://github.com/easybuilders/easybuild-easyconfigs/pull/20889 + from-commit: c66c4788a17f7e4f55aa23f9fdb782aad97c9ce7 From 641288af0c2bc1d1e35d411815465abdeb8a1ddc Mon Sep 17 00:00:00 2001 From: Xin An <34663977+xinan1911@users.noreply.github.com> Date: Fri, 12 Jul 2024 16:08:14 +0200 Subject: [PATCH 200/203] Update eessi-2023.06-eb-4.9.0-2023b.yml Remove pystencils --- .../2023.06/eessi-2023.06-eb-4.9.0-2023b.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023b.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023b.yml index 8d9779c59c..15c02951d7 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023b.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023b.yml @@ -58,7 +58,3 @@ easyconfigs: options: from-pr: 20201 - OSU-Micro-Benchmarks-7.2-gompi-2023b.eb - - pystencils-1.3.4-gfbf-2023b.eb: - options: - # see https://github.com/easybuilders/easybuild-easyconfigs/pull/20889 - from-commit: c66c4788a17f7e4f55aa23f9fdb782aad97c9ce7 From bb8b4aa1442c032b88d6cacc94b2d8f42cce3721 Mon Sep 17 00:00:00 2001 From: Xin An <34663977+xinan1911@users.noreply.github.com> Date: Fri, 12 Jul 2024 16:10:02 +0200 Subject: [PATCH 201/203] add pystencils update eessi-2023.06-eb-4.9.2-2023b --- .../2023.06/eessi-2023.06-eb-4.9.2-2023b.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml index 38bfa81142..e0057f18ab 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023b.yml @@ -1,3 +1,7 @@ easyconfigs: - IPython-8.17.2-GCCcore-13.2.0.eb - dlb-3.4-gompi-2023b.eb + - pystencils-1.3.4-gfbf-2023b.eb: + options: + # see https://github.com/easybuilders/easybuild-easyconfigs/pull/20889 + from-commit: c66c4788a17f7e4f55aa23f9fdb782aad97c9ce7 From f204afa5d804dee715476ac3d2a96e8e69fa6842 Mon Sep 17 00:00:00 2001 From: crivella Date: Mon, 15 Jul 2024 10:47:34 +0200 Subject: [PATCH 202/203] Add MetalWalls to easystack file --- .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml index 4b58cb6106..0cdbd4b5b3 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml @@ -74,3 +74,4 @@ easyconfigs: options: # see https://github.com/easybuilders/easybuild-easyconfigs/pull/20238 from-pr: 20238 + - MetalWalls-21.06.1-foss-2023a.eb From 58fb56f2a8f2fb11d5df2b8332388ace82eda993 Mon Sep 17 00:00:00 2001 From: crivella Date: Tue, 16 Jul 2024 14:41:39 +0200 Subject: [PATCH 203/203] Switch target to EB 4.9.2 --- .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml | 1 - .../software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023a.yml | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml index 0cdbd4b5b3..4b58cb6106 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml @@ -74,4 +74,3 @@ easyconfigs: options: # see https://github.com/easybuilders/easybuild-easyconfigs/pull/20238 from-pr: 20238 - - MetalWalls-21.06.1-foss-2023a.eb diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023a.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023a.yml index 34ec3257e8..e7730d1eb6 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.2-2023a.yml @@ -15,3 +15,4 @@ easyconfigs: - LSD2-2.4.1-GCCcore-12.3.0.eb - MAFFT-7.520-GCC-12.3.0-with-extensions.eb - ncbi-vdb-3.0.10-gompi-2023a.eb + - MetalWalls-21.06.1-foss-2023a.eb