From 9166400aa2c1d18c431ea7f409e1357a0823d73b Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Fri, 20 Oct 2023 21:58:43 +0200 Subject: [PATCH 01/37] 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 02/37] 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 03/37] 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 04/37] 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 05/37] 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 3ccecf97e9008ddf98640d3a0ab970607c5b5779 Mon Sep 17 00:00:00 2001 From: Caspar van Leeuwen Date: Wed, 3 Apr 2024 12:58:22 +0200 Subject: [PATCH 06/37] 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 07/37] 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 08/37] 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 8593e595ee382a26c8f9621dd39ccb338e937259 Mon Sep 17 00:00:00 2001 From: ocaisa Date: Thu, 18 Apr 2024 23:51:24 +0200 Subject: [PATCH 09/37] 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 10/37] 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 11/37] 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 12/37] 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 13/37] 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 4ad271e4891e9c4e1c533e1a04505f16e505bf0a Mon Sep 17 00:00:00 2001 From: ocaisa Date: Fri, 19 Apr 2024 19:30:27 +0200 Subject: [PATCH 14/37] 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 bde1b728c6c39cfffcffbf0480323d5b7348346a Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Sat, 20 Apr 2024 14:16:44 +0200 Subject: [PATCH 15/37] 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 82f58b24ae4cb2ada19c79ad6c8e7cef2727ed56 Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Sat, 20 Apr 2024 14:30:57 +0200 Subject: [PATCH 16/37] 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 17/37] 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 18/37] 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 8122bbd6bd7f6c44f4db9c955dcbd0bc7d736ad4 Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Sat, 20 Apr 2024 14:56:52 +0200 Subject: [PATCH 19/37] 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 04c6f0ee56bde553968da02f7daba36cbb363d78 Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Mon, 22 Apr 2024 09:30:11 +0200 Subject: [PATCH 20/37] 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 d0229ccb3adb03eac5cdddde76858b00d20832bf Mon Sep 17 00:00:00 2001 From: ocaisa Date: Mon, 29 Apr 2024 14:40:50 +0200 Subject: [PATCH 21/37] 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 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 22/37] 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 23/37] 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 24/37] 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 298159e516db7c696b12ca57bf51a5328588ebf9 Mon Sep 17 00:00:00 2001 From: Thomas Roeblitz Date: Tue, 7 May 2024 14:27:24 +0200 Subject: [PATCH 25/37] 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 06f88dbbc5f90654fb1d48c888a9575cb768be59 Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Tue, 7 May 2024 18:15:55 +0200 Subject: [PATCH 26/37] 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 27/37] 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 28/37] 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 29/37] 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 30/37] 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 ac3e74795c735eb99acf93e0fe9c024d6d81291a Mon Sep 17 00:00:00 2001 From: ocaisa Date: Wed, 15 May 2024 11:16:49 +0200 Subject: [PATCH 31/37] 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 32/37] 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 33/37] 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 34/37] 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 35/37] 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 36/37] 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 375bf370137a33b748ed649625e532d836a962d5 Mon Sep 17 00:00:00 2001 From: ocaisa Date: Wed, 15 May 2024 16:17:53 +0200 Subject: [PATCH 37/37] 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