From 5a99ee069c6bdd983688be85eff8b082889a3238 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Mon, 29 Sep 2025 09:49:35 +0200 Subject: [PATCH 1/6] forward EESSI_INIT_PREFIX variable if it's set --- 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 188420e6..5966a651 100755 --- a/run_in_compat_layer_env.sh +++ b/run_in_compat_layer_env.sh @@ -56,6 +56,9 @@ fi if [ ! -z ${EASYBUILD_ROBOT_PATHS} ]; then INPUT="export EASYBUILD_ROBOT_PATHS=${EASYBUILD_ROBOT_PATHS}; ${INPUT}" fi +if [ ! -z ${EESSI_INIT_PREFIX} ]; then + INPUT="export EESSI_INIT_PREFIX=${EESSI_INIT_PREFIX}; ${INPUT}" +fi echo "Running '${INPUT}' in EESSI (${EESSI_CVMFS_REPO}) ${EESSI_VERSION} compatibility layer environment..." ${EESSI_COMPAT_LAYER_DIR}/startprefix <<< "${INPUT}" From 5c85b38f2b8c0ca159d54aaed840defbceb61655 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Mon, 29 Sep 2025 09:50:34 +0200 Subject: [PATCH 2/6] EESSI_INIT_PREFIX for overriding location of EB hooks --- EESSI-extend-easybuild.eb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/EESSI-extend-easybuild.eb b/EESSI-extend-easybuild.eb index 85113e84..1aa8be4e 100644 --- a/EESSI-extend-easybuild.eb +++ b/EESSI-extend-easybuild.eb @@ -176,7 +176,8 @@ 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", "eb_hooks.py")) +eessi_init_prefix = os.getenv("EESSI_INIT_PREFIX") or pathJoin(os.getenv("EESSI_PREFIX"), "init") +setenv ("EASYBUILD_HOOKS", pathJoin(eessi_init_prefix, "easybuild", "eb_hooks.py")) -- Make sure to use the general umask that allows a global read setenv ("EASYBUILD_UMASK", "022") From 1ff11e3f483a6ea18b5c6cca89c969a56240f73e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Mon, 29 Sep 2025 09:59:37 +0200 Subject: [PATCH 3/6] set EESSI_INIT_PREFIX, rename eessi_archdetect_prefix to eessi_init_prefix --- init/modules/EESSI/2023.06.lua | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/init/modules/EESSI/2023.06.lua b/init/modules/EESSI/2023.06.lua index d8a83efb..2ddcf194 100644 --- a/init/modules/EESSI/2023.06.lua +++ b/init/modules/EESSI/2023.06.lua @@ -15,7 +15,7 @@ local eessi_version = myModuleVersion() local eessi_repo = "/cvmfs/software.eessi.io" local eessi_prefix = pathJoin(eessi_repo, "versions", eessi_version) local eessi_compat_prefix = pathJoin(eessi_prefix, "compat") -local eessi_archdetect_prefix = pathJoin(eessi_prefix, "init") +local eessi_init_prefix = pathJoin(eessi_prefix, "init") local eessi_os_type = "linux" -- for RISC-V clients we need to do some overrides, as things are stored in different CVMFS repositories if (subprocess("uname -m"):gsub("\n$","") == "riscv64") then @@ -53,7 +53,7 @@ function eessiDebug(text) end end function archdetect_cpu() - local script = pathJoin(eessi_archdetect_prefix, 'lmod_eessi_archdetect_wrapper.sh') + local script = pathJoin(eessi_init_prefix, 'lmod_eessi_archdetect_wrapper.sh') -- make sure that we grab the value for architecture before the module unsets the environment variable (in unload mode) local archdetect_options = os.getenv("EESSI_ARCHDETECT_OPTIONS") or (os.getenv("EESSI_ARCHDETECT_OPTIONS_OVERRIDE") or "") if not os.getenv("EESSI_ARCHDETECT_OPTIONS_OVERRIDE") then @@ -83,7 +83,7 @@ function archdetect_cpu() end end function archdetect_accel() - local script = pathJoin(eessi_archdetect_prefix, 'lmod_eessi_archdetect_wrapper_accel.sh') + local script = pathJoin(eessi_init_prefix, 'lmod_eessi_archdetect_wrapper_accel.sh') -- for unload mode, we need to grab the value before it is unset local archdetect_accel = os.getenv("EESSI_ACCEL_SUBDIR") or (os.getenv("EESSI_ACCELERATOR_TARGET_OVERRIDE") or "") if not os.getenv("EESSI_ACCELERATOR_TARGET_OVERRIDE") then @@ -131,6 +131,8 @@ setenv("EESSI_SOFTWARE_SUBDIR", eessi_software_subdir) eessiDebug("Setting EESSI_SOFTWARE_SUBDIR to " .. eessi_software_subdir) setenv("EESSI_PREFIX", eessi_prefix) eessiDebug("Setting EESSI_PREFIX to " .. eessi_prefix) +setenv("EESSI_INIT_PREFIX", eessi_init_prefix) +eessiDebug("Setting EESSI_INIT_PREFIX to " .. eessi_init_prefix) setenv("EESSI_EPREFIX", eessi_eprefix) eessiDebug("Setting EPREFIX to " .. eessi_eprefix) prepend_path("PATH", pathJoin(eessi_eprefix, "bin")) From aecc722ada144887d097e75dce71fc5694a05ad5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Mon, 29 Sep 2025 16:28:55 +0200 Subject: [PATCH 4/6] distinguish between different versions for RISC-V clients --- init/eessi_defaults | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/init/eessi_defaults b/init/eessi_defaults index 4b0c9e9d..32102eb0 100644 --- a/init/eessi_defaults +++ b/init/eessi_defaults @@ -10,15 +10,25 @@ export EESSI_VERSION_DEFAULT='__EESSI_VERSION_DEFAULT__' -# use different defaults for RISC-V, as we want to redirect to the riscv.eessi.io repo +# use different defaults for RISC-V clients 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 [[ -z ${EESSI_SILENT+x} ]]; 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 "" + export EESSI_VERSION="${EESSI_VERSION_OVERRIDE:=${EESSI_VERSION_DEFAULT}}" + if [[ "${EESSI_VERSION}" == "2023.06" ]] || [[ "${EESSI_VERSION}" == "20240402" ]]; then + export EESSI_VERSION="${EESSI_VERSION_OVERRIDE:=20240402}" + export EESSI_CVMFS_REPO="${EESSI_CVMFS_REPO_OVERRIDE:=/cvmfs/riscv.eessi.io}" + if [[ -z ${EESSI_SILENT+x} ]]; 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 + elif [[ "${EESSI_VERSION_DEFAULT}" == "2025.06" ]]; then + export EESSI_CVMFS_REPO="${EESSI_CVMFS_REPO_OVERRIDE:=/cvmfs/dev.eessi.io/riscv}" + export EESSI_COMPAT_LAYER_DIR="/cvmfs/software.eessi.io/versions/${EESSI_VERSION_DEFAULT}/compat/linux/$(uname -m)" + if [[ -z ${EESSI_SILENT+x} ]]; then + echo "This EESSI production version only provides a RISC-V compatibility layer," + echo "software installations are provided by the EESSI development repository at ${EESSI_CVMFS_REPO}." + fi fi else export EESSI_CVMFS_REPO="${EESSI_CVMFS_REPO_OVERRIDE:=/cvmfs/software.eessi.io}" From b9b06dae6c323e32c06d6f5b10dbeacc1c259b93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Mon, 29 Sep 2025 16:38:23 +0200 Subject: [PATCH 5/6] set EESSI_INIT_PREFIX --- init/eessi_defaults | 3 +++ 1 file changed, 3 insertions(+) diff --git a/init/eessi_defaults b/init/eessi_defaults index 32102eb0..4eb5ff43 100644 --- a/init/eessi_defaults +++ b/init/eessi_defaults @@ -16,6 +16,7 @@ if [[ $(uname -m) == "riscv64" ]]; then if [[ "${EESSI_VERSION}" == "2023.06" ]] || [[ "${EESSI_VERSION}" == "20240402" ]]; then export EESSI_VERSION="${EESSI_VERSION_OVERRIDE:=20240402}" export EESSI_CVMFS_REPO="${EESSI_CVMFS_REPO_OVERRIDE:=/cvmfs/riscv.eessi.io}" + export EESSI_INIT_PREFIX="${EESSI_CVMFS_REPO}/versions/${EESSI_VERSION}/init" if [[ -z ${EESSI_SILENT+x} ]]; 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}." @@ -25,6 +26,7 @@ if [[ $(uname -m) == "riscv64" ]]; then elif [[ "${EESSI_VERSION_DEFAULT}" == "2025.06" ]]; then export EESSI_CVMFS_REPO="${EESSI_CVMFS_REPO_OVERRIDE:=/cvmfs/dev.eessi.io/riscv}" export EESSI_COMPAT_LAYER_DIR="/cvmfs/software.eessi.io/versions/${EESSI_VERSION_DEFAULT}/compat/linux/$(uname -m)" + export EESSI_INIT_PREFIX="/cvmfs/software.eessi.io/versions/${EESSI_VERSION_DEFAULT}/init" if [[ -z ${EESSI_SILENT+x} ]]; then echo "This EESSI production version only provides a RISC-V compatibility layer," echo "software installations are provided by the EESSI development repository at ${EESSI_CVMFS_REPO}." @@ -33,6 +35,7 @@ if [[ $(uname -m) == "riscv64" ]]; then else export EESSI_CVMFS_REPO="${EESSI_CVMFS_REPO_OVERRIDE:=/cvmfs/software.eessi.io}" export EESSI_VERSION="${EESSI_VERSION_OVERRIDE:=${EESSI_VERSION_DEFAULT}}" + export EESSI_INIT_PREFIX="${EESSI_CVMFS_REPO}/versions/${EESSI_VERSION}/init" fi # use archdetect by default, unless otherwise specified export EESSI_USE_ARCHDETECT="${EESSI_USE_ARCHDETECT:=1}" From 2ae6dabc4df51af50058bf0f9e759649ef794fee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bob=20Dr=C3=B6ge?= Date: Mon, 29 Sep 2025 16:48:22 +0200 Subject: [PATCH 6/6] small fix in if statement, prevent override from being set by default --- init/eessi_defaults | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init/eessi_defaults b/init/eessi_defaults index 4eb5ff43..f8265347 100644 --- a/init/eessi_defaults +++ b/init/eessi_defaults @@ -12,7 +12,7 @@ export EESSI_VERSION_DEFAULT='__EESSI_VERSION_DEFAULT__' # use different defaults for RISC-V clients if [[ $(uname -m) == "riscv64" ]]; then - export EESSI_VERSION="${EESSI_VERSION_OVERRIDE:=${EESSI_VERSION_DEFAULT}}" + export EESSI_VERSION="${EESSI_VERSION_OVERRIDE:-${EESSI_VERSION_DEFAULT}}" if [[ "${EESSI_VERSION}" == "2023.06" ]] || [[ "${EESSI_VERSION}" == "20240402" ]]; then export EESSI_VERSION="${EESSI_VERSION_OVERRIDE:=20240402}" export EESSI_CVMFS_REPO="${EESSI_CVMFS_REPO_OVERRIDE:=/cvmfs/riscv.eessi.io}"