Skip to content

Commit 7258620

Browse files
authored
Merge branch 'main' into update_site_package_behavior_eessi_extend
2 parents 85977e3 + e2b112b commit 7258620

6 files changed

Lines changed: 123 additions & 38 deletions

File tree

.github/workflows/scripts/verify_eessi_environment.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,11 @@ def check_env_endswith(var1, var2):
3232
if not val1.endswith(val2):
3333
raise EnvVarError(f"'{var1}' must end with '{var2}':\n{var1}='{val1}'\n{var2}='{val2}'")
3434

35+
def check_env_startswith(var1, var2):
36+
val1, val2 = get_env_vars(var1, var2)
37+
if not val1.startswith(val2):
38+
raise EnvVarError(f"'{var1}' must start with '{var2}':\n{var1}='{val1}'\n{var2}='{val2}'")
39+
3540
if __name__ == "__main__":
3641
try:
3742
# accelerator stuff is not guaranteed to exist
@@ -58,6 +63,13 @@ def check_env_endswith(var1, var2):
5863
check_env_contains("EESSI_SITE_MODULEPATH_ACCEL", "EESSI_SOFTWARE_SUBDIR")
5964
check_env_contains("EESSI_MODULEPATH_ACCEL", "EESSI_ACCELERATOR_TARGET")
6065
check_env_contains("EESSI_SITE_MODULEPATH_ACCEL", "EESSI_ACCELERATOR_TARGET")
66+
# Verify that configuring an EESSI_SITE_SOFTWARE_PREFIX results in this prefix being
67+
# the first part of EESSI_SITE_SOFTWARE_PATH
68+
if os.getenv("EESSI_SITE_SOFTWARE_PREFIX"):
69+
check_env_startswith("EESSI_SITE_SOFTWARE_PATH", "EESSI_SITE_SOFTWARE_PREFIX")
70+
check_env_startswith("EESSI_SITE_MODULEPATH", "EESSI_SITE_SOFTWARE_PREFIX")
71+
if expected_eessi_accel_arch:
72+
check_env_startswith("EESSI_SITE_MODULEPATH_ACCEL", "EESSI_SITE_SOFTWARE_PREFIX")
6173
# Finally, verify that all the expected module path are included
6274
check_env_contains("MODULEPATH", "EESSI_MODULEPATH")
6375
check_env_contains("MODULEPATH", "EESSI_SITE_MODULEPATH")

.github/workflows/tests_eessi_module.yml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,9 @@ jobs:
171171
FINAL_ACCELERATOR_TARGET_EXPECTED: accel/nvidia/cc80
172172
- EESSI_ACCELERATOR_TARGET_OVERRIDE: accel/nvidia/cc77 # deliberately chose a non-existent CUDA capability
173173
FINAL_ACCELERATOR_TARGET_EXPECTED: accel/nvidia/cc70 # this reverts to the fallback case (which does exist)
174+
# Test if setting an EESSI_SITE_SOFTWARE_PREFIX works by setting that for the zen4 target
175+
- EESSI_SOFTWARE_SUBDIR_OVERRIDE: x86_64/amd/zen4
176+
EESSI_SITE_SOFTWARE_PREFIX: /tmp/site_prefix
174177

175178
steps:
176179
- name: Check out software-layer repository
@@ -218,6 +221,18 @@ jobs:
218221
# Do (and undo) loading the EESSI module
219222
CPU_ARCH=$(./init/eessi_archdetect.sh -a cpupath)
220223
module load EESSI/${{matrix.EESSI_VERSION}}
224+
# EESSI_SITE_MODULEPATH_ACCEL will only be set if this dir exists. We can most easily create it here
225+
# where we have EESSI_SITE_SOFTWARE_PATH and EESSI_ACCEL_SOFTWARE_SUBDIR available
226+
# Creating it here means the verify_eessi_environment.py can later on check that EESSI_SITE_MODULEPATH_ACCEL
227+
# is set correctly
228+
# First, we need to get the modules subdir. For this we strip EESSI_SITE_SOFTWARE_PATH from the start of
229+
# EESSI_SITE_MODULEPATH
230+
eessi_modules_subdir=${EESSI_SITE_MODULEPATH/$EESSI_SITE_SOFTWARE_PATH\//}
231+
# Then, we make sure the target of /cvmfs/software.eessi.io/host_injections exists (or the 2nd mkdir fails)
232+
mkdir -p /opt/eessi
233+
# Then, we actually create the dir. Note that we use EESSI_ACCELERATOR_TARGET, as this represents the target
234+
# _after_ any fallbacks
235+
mkdir -p -v "$EESSI_SITE_SOFTWARE_PATH/$EESSI_ACCELERATOR_TARGET/$eessi_modules_subdir"
221236
module unload EESSI/${{matrix.EESSI_VERSION}}
222237
env | grep -v _ModuleTable | sort > "${module_cycled_file}"
223238

eb_hooks.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1503,6 +1503,18 @@ def pre_test_hook_exclude_failing_test_Highway(self, *args, **kwargs):
15031503
self.cfg['runtest'] += ' ARGS="-E TestAllSumOfLanes"'
15041504

15051505

1506+
def pre_test_hook_gromacs(self, *args, **kwargs):
1507+
"""
1508+
Solve GROMACS test failure on NVIDIA Grace CPUs when hwloc support is enabled.
1509+
"""
1510+
cpu_target = get_eessi_envvar('EESSI_SOFTWARE_SUBDIR')
1511+
if self.name == 'GROMACS':
1512+
if self.version < '2026.3' and cpu_target == CPU_TARGET_NVIDIA_GRACE:
1513+
self.cfg['pretestopts'] = 'export HWLOC_KEEP_NVIDIA_GPU_NUMA_NODES=0 && '
1514+
else:
1515+
raise EasyBuildError("GROMACS-specific hook triggered for non-GROMACS easyconfig?!")
1516+
1517+
15061518
def pre_test_hook_ignore_failing_tests_ESPResSo(self, *args, **kwargs):
15071519
"""
15081520
Pre-test hook for ESPResSo: skip failing tests, tests frequently timeout due to known bugs in ESPResSo v4.2.1
@@ -2079,6 +2091,7 @@ def post_easyblock_hook(self, *args, **kwargs):
20792091
PRE_TEST_HOOKS = {
20802092
'ESPResSo': pre_test_hook_ignore_failing_tests_ESPResSo,
20812093
'FFTW.MPI': pre_test_hook_ignore_failing_tests_FFTWMPI,
2094+
'GROMACS': pre_test_hook_gromacs,
20822095
'Highway': pre_test_hook_exclude_failing_test_Highway,
20832096
'LAMMPS': pre_test_hook_lammps_ignore_failure_arm_generic,
20842097
'SciPy-bundle': pre_test_hook_ignore_failing_tests_SciPybundle,
@@ -2131,7 +2144,7 @@ def set_maximum(parallel, max_value):
21312144
# software-specific limits
21322145
'libxc': {
21332146
'*': (divide_by_factor, 2),
2134-
CPU_TARGET_A64FX: (set_maximum, 12),
2147+
CPU_TARGET_A64FX: (set_maximum, 6),
21352148
},
21362149
'LLVM': {
21372150
'*': (divide_by_factor, 2),

init/bash

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ if [ $? -eq 0 ]; then
3535
show_msg "Prepending site path $EESSI_SITE_MODULEPATH to \$MODULEPATH..."
3636
module use $EESSI_SITE_MODULEPATH
3737

38-
if [ ! -z ${EESSI_MODULEPATH_ACCEL} ]; then
38+
if [ ! -z ${EESSI_SITE_MODULEPATH_ACCEL} ]; then
3939
show_msg "Prepending $EESSI_SITE_MODULEPATH_ACCEL to \$MODULEPATH..."
4040
module use $EESSI_SITE_MODULEPATH_ACCEL
4141
fi

init/eessi_environment_variables

Lines changed: 48 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@ function show_msg {
1818
# set up minimal environment: $EESSI_PREFIX, $EESSI_VERSION, $EESSI_OS_TYPE, $EESSI_CPU_FAMILY, $EPREFIX
1919
source $EESSI_INIT_DIR_PATH/minimal_eessi_env
2020

21-
if [ -d $EESSI_PREFIX ]; then
21+
if [ -d "$EESSI_PREFIX" ]; then
2222
show_msg "Found EESSI repo @ $EESSI_PREFIX!"
2323

24-
export EESSI_EPREFIX=$EPREFIX
25-
if [ -d $EESSI_EPREFIX ]; then
24+
export EESSI_EPREFIX="$EPREFIX"
25+
if [ -d "$EESSI_EPREFIX" ]; then
2626

2727
# determine subdirectory in software layer
2828
if [ "$EESSI_USE_ARCHDETECT" == "1" ]; then
@@ -32,8 +32,8 @@ if [ -d $EESSI_PREFIX ]; then
3232
# under $EESSI_PREFIX/software/$EESSI_OS_TYPE; if so use the architecture as best match
3333
IFS=: read -r -a archs <<< "${all_cpupaths}"
3434
for arch in "${archs[@]}"; do
35-
if [ -d ${EESSI_PREFIX}/software/${EESSI_OS_TYPE}/${arch} ]; then
36-
export EESSI_SOFTWARE_SUBDIR=${arch}
35+
if [ -d "${EESSI_PREFIX}/software/${EESSI_OS_TYPE}/${arch}" ]; then
36+
export EESSI_SOFTWARE_SUBDIR="${arch}"
3737
show_msg "archdetect says ${EESSI_SOFTWARE_SUBDIR}"
3838
break
3939
fi
@@ -58,23 +58,23 @@ if [ -d $EESSI_PREFIX ]; then
5858
set -e
5959
fi
6060

61-
if [[ $accelpath_exit_code -eq 0 ]]; then
61+
if [[ "$accelpath_exit_code" -eq 0 ]]; then
6262
export EESSI_ACCEL_SUBDIR=$(tail -n 1 $tmpout && rm -f $tmpout)
63-
if [ -z ${EESSI_ACCEL_SUBDIR} ]; then
63+
if [ -z "${EESSI_ACCEL_SUBDIR}" ]; then
6464
error "accelerator detection with archdetect worked, but no result was returned?!"
6565
else
6666
# allow specifying different parent directory for accel/* subdirectory via $EESSI_ACCEL_SOFTWARE_SUBDIR_OVERRIDE
67-
EESSI_ACCEL_SOFTWARE_SUBDIR=${EESSI_ACCEL_SOFTWARE_SUBDIR_OVERRIDE:-$EESSI_SOFTWARE_SUBDIR}
67+
EESSI_ACCEL_SOFTWARE_SUBDIR="${EESSI_ACCEL_SOFTWARE_SUBDIR_OVERRIDE:-$EESSI_SOFTWARE_SUBDIR}"
6868
# path to where accel/* subdirectory is located
69-
EESSI_ACCEL_SOFTWARE_PATH=${EESSI_PREFIX}/software/${EESSI_OS_TYPE}/${EESSI_ACCEL_SOFTWARE_SUBDIR}
70-
if [ ! -d $EESSI_ACCEL_SOFTWARE_PATH/${EESSI_ACCEL_SUBDIR} ]; then
69+
EESSI_ACCEL_SOFTWARE_PATH="${EESSI_PREFIX}/software/${EESSI_OS_TYPE}/${EESSI_ACCEL_SOFTWARE_SUBDIR}"
70+
if [ ! -d "$EESSI_ACCEL_SOFTWARE_PATH/${EESSI_ACCEL_SUBDIR}" ]; then
7171
# We should try to use the fallback compute capability
7272
EESSI_ACCELERATOR_TARGET="${EESSI_ACCEL_SUBDIR::-1}0"
7373
show_msg "archdetect found no supported accelerator ${EESSI_ACCEL_SUBDIR}, falling back to ${EESSI_ACCELERATOR_TARGET}"
7474
else
7575
EESSI_ACCELERATOR_TARGET="${EESSI_ACCEL_SUBDIR}"
7676
fi
77-
if [ -d $EESSI_ACCEL_SOFTWARE_PATH/${EESSI_ACCELERATOR_TARGET} ]; then
77+
if [ -d "$EESSI_ACCEL_SOFTWARE_PATH/${EESSI_ACCELERATOR_TARGET}" ]; then
7878
show_msg "archdetect found supported accelerator for CPU target ${EESSI_ACCEL_SOFTWARE_SUBDIR}: ${EESSI_ACCELERATOR_TARGET}"
7979
export EESSI_ACCELERATOR_TARGET
8080
else
@@ -83,7 +83,7 @@ if [ -d $EESSI_PREFIX ]; then
8383
fi
8484
else
8585
show_msg "archdetect could not detect any accelerators"
86-
rm -f $tmpout
86+
rm -f "$tmpout"
8787
fi
8888
elif [ "$EESSI_USE_ARCHSPEC" == "1" ]; then
8989
# note: eessi_software_subdir_for_host.py will pick up value from $EESSI_SOFTWARE_SUBDIR_OVERRIDE if it's defined!
@@ -93,15 +93,15 @@ if [ -d $EESSI_PREFIX ]; then
9393
else
9494
error "Don't know how to detect host CPU, giving up!"
9595
fi
96-
if [ ! -z $EESSI_SOFTWARE_SUBDIR ]; then
96+
if [ ! -z "$EESSI_SOFTWARE_SUBDIR" ]; then
9797

9898
show_msg "Using ${EESSI_SOFTWARE_SUBDIR} as software subdirectory."
99-
export EESSI_SOFTWARE_PATH=$EESSI_PREFIX/software/$EESSI_OS_TYPE/$EESSI_SOFTWARE_SUBDIR
99+
export EESSI_SOFTWARE_PATH="$EESSI_PREFIX/software/$EESSI_OS_TYPE/$EESSI_SOFTWARE_SUBDIR"
100100

101101
# Configure our LMOD
102102
export LMOD_CONFIG_DIR="$EESSI_SOFTWARE_PATH/.lmod"
103103
lmod_rc_file="$LMOD_CONFIG_DIR/lmodrc.lua"
104-
if [ -f $lmod_rc_file ]; then
104+
if [ -f "$lmod_rc_file" ]; then
105105
show_msg "Found Lmod configuration file at $lmod_rc_file"
106106
export LMOD_RC="$lmod_rc_file"
107107
else
@@ -110,19 +110,35 @@ if [ -d $EESSI_PREFIX ]; then
110110

111111
export LMOD_PACKAGE_PATH="$EESSI_SOFTWARE_PATH/.lmod"
112112
lmod_sitepackage_file="$LMOD_PACKAGE_PATH/SitePackage.lua"
113-
if [ -f $lmod_sitepackage_file ]; then
113+
if [ -f "$lmod_sitepackage_file" ]; then
114114
show_msg "Found Lmod SitePackage.lua file at $lmod_sitepackage_file"
115115
else
116116
error "Lmod SitePackage.lua file not found at $lmod_sitepackage_file"
117117
fi
118118

119-
if [ ! -z $EESSI_BASIC_ENV ]; then
119+
if [ ! -z "$EESSI_BASIC_ENV" ]; then
120120
show_msg "Only setting up basic environment, so we're done"
121-
elif [ -d $EESSI_SOFTWARE_PATH ]; then
122-
export EESSI_SITE_SOFTWARE_PATH=${EESSI_SOFTWARE_PATH/versions/host_injections}
121+
elif [ -d "$EESSI_SOFTWARE_PATH" ]; then
122+
if [ -z "${EESSI_SITE_SOFTWARE_PREFIX}" ]; then
123+
site_software_path="${EESSI_SOFTWARE_PATH/versions/host_injections}"
124+
site_software_accel_path="${EESSI_ACCEL_SOFTWARE_PATH/versions/host_injections}"
125+
else
126+
site_software_path="${EESSI_SOFTWARE_PATH/$EESSI_CVMFS_REPO/$EESSI_SITE_SOFTWARE_PREFIX}"
127+
site_software_accel_path="${EESSI_ACCEL_SOFTWARE_PATH/$EESSI_CVMFS_REPO/$EESSI_SITE_SOFTWARE_PREFIX}"
128+
fi
129+
export EESSI_SITE_SOFTWARE_PATH="${site_software_path}"
123130
show_msg "Using ${EESSI_SITE_SOFTWARE_PATH} as the site extension directory for installations."
124-
EESSI_SITE_ACCEL_SOFTWARE_PATH=${EESSI_ACCEL_SOFTWARE_PATH/versions/host_injections}
131+
EESSI_SITE_ACCEL_SOFTWARE_PATH="${site_software_accel_path}"
125132
show_msg "Using ${EESSI_SITE_ACCEL_SOFTWARE_PATH} as the site extension directory for accelerated installations."
133+
134+
# Prepend site's lmodrc.lua path to $LMOD_RC
135+
show_msg "Adding Lmod site configuration file path ($site_lmod_rc_file) to $LMOD_RC"
136+
site_lmod_rc_file="$EESSI_SITE_SOFTWARE_PATH/.lmod/lmodrc.lua"
137+
if [ -z "${LMOD_RC}" ]; then
138+
export LMOD_RC="$site_lmod_rc_file"
139+
else
140+
export LMOD_RC="$site_lmod_rc_file:$LMOD_RC"
141+
fi
126142
# Allow for use of alternative module tree shipped with EESSI
127143
if [ -z ${EESSI_MODULE_SUBDIR+x} ]; then
128144
# EESSI_MODULE_SUBDIR not set
@@ -132,26 +148,28 @@ if [ -d $EESSI_PREFIX ]; then
132148
if [ -z ${EESSI_CUSTOM_MODULEPATH+x} ]; then
133149
# EESSI_CUSTOM_MODULEPATH not set so we use our defaults
134150

135-
EESSI_MODULEPATH=$EESSI_SOFTWARE_PATH/$EESSI_MODULE_SUBDIR
151+
EESSI_MODULEPATH="$EESSI_SOFTWARE_PATH/$EESSI_MODULE_SUBDIR"
136152
else
137153
show_msg "Using defined environment variable \$EESSI_CUSTOM_MODULEPATH to set EESSI_MODULEPATH."
138-
EESSI_MODULEPATH=$EESSI_CUSTOM_MODULEPATH
154+
EESSI_MODULEPATH="$EESSI_CUSTOM_MODULEPATH"
139155
fi
140156

141-
if [ -d $EESSI_MODULEPATH ]; then
142-
export EESSI_MODULEPATH=$EESSI_MODULEPATH
157+
if [ -d "$EESSI_MODULEPATH" ]; then
158+
export EESSI_MODULEPATH="$EESSI_MODULEPATH"
143159
show_msg "Using ${EESSI_MODULEPATH} as the directory to be added to MODULEPATH."
144-
export EESSI_SITE_MODULEPATH=$EESSI_SITE_SOFTWARE_PATH/$EESSI_MODULE_SUBDIR
160+
export EESSI_SITE_MODULEPATH="$EESSI_SITE_SOFTWARE_PATH/$EESSI_MODULE_SUBDIR"
145161
show_msg "Using ${EESSI_SITE_MODULEPATH} as the site extension directory to be added to MODULEPATH."
146162
else
147163
error "EESSI module path at $EESSI_MODULEPATH not found!"
148164
false
149165
fi
150166

151-
if [ -d ${EESSI_ACCEL_SOFTWARE_PATH}/${EESSI_ACCELERATOR_TARGET}/${EESSI_MODULE_SUBDIR} ]; then
152-
export EESSI_MODULEPATH_ACCEL=${EESSI_ACCEL_SOFTWARE_PATH}/${EESSI_ACCELERATOR_TARGET}/${EESSI_MODULE_SUBDIR}
167+
if [ -d "${EESSI_ACCEL_SOFTWARE_PATH}/${EESSI_ACCELERATOR_TARGET}/${EESSI_MODULE_SUBDIR}" ]; then
168+
export EESSI_MODULEPATH_ACCEL="${EESSI_ACCEL_SOFTWARE_PATH}/${EESSI_ACCELERATOR_TARGET}/${EESSI_MODULE_SUBDIR}"
153169
show_msg "Using ${EESSI_MODULEPATH_ACCEL} as additional directory (for accelerators) to be added to MODULEPATH."
154-
export EESSI_SITE_MODULEPATH_ACCEL=${EESSI_SITE_ACCEL_SOFTWARE_PATH}/${EESSI_ACCELERATOR_TARGET}/${EESSI_MODULE_SUBDIR}
170+
fi
171+
if [ -d "${EESSI_SITE_ACCEL_SOFTWARE_PATH}/${EESSI_ACCELERATOR_TARGET}/${EESSI_MODULE_SUBDIR}" ]; then
172+
export EESSI_SITE_MODULEPATH_ACCEL="${EESSI_SITE_ACCEL_SOFTWARE_PATH}/${EESSI_ACCELERATOR_TARGET}/${EESSI_MODULE_SUBDIR}"
155173
show_msg "Using ${EESSI_SITE_MODULEPATH_ACCEL} as additional site extension directory (for accelerators) to be added to MODULEPATH."
156174
fi
157175

@@ -160,9 +178,9 @@ if [ -d $EESSI_PREFIX ]; then
160178
# curl as a module file we could instead do this via a `modluafooter` in an EasyBuild
161179
# hook (or via an Lmod hook)
162180
rhel_libcurl_file="/etc/pki/tls/certs/ca-bundle.crt"
163-
if [ -f $rhel_libcurl_file ]; then
181+
if [ -f "$rhel_libcurl_file" ]; then
164182
show_msg "Found libcurl CAs file at RHEL location, setting CURL_CA_BUNDLE"
165-
export CURL_CA_BUNDLE=$rhel_libcurl_file
183+
export CURL_CA_BUNDLE="$rhel_libcurl_file"
166184
fi
167185

168186
else

init/modules/EESSI/2023.06.lua

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,16 @@ local eessi_modules_subdir = pathJoin("modules", "all")
134134
-- eessi_module_path is the location of the _CPU_ module files, e.g.,
135135
-- /cvmfs/software.eessi.io/versions/<EESSI_VERSION>/software/linux/x86_64/amd/zen3/modules/all
136136
local eessi_module_path = pathJoin(eessi_software_path, eessi_modules_subdir)
137-
local eessi_site_software_path = string.gsub(eessi_software_path, "versions", "host_injections")
137+
local eessi_site_software_path
138+
-- If EESSI_SITE_SOFTWARE_PREFIX is defined, replace /cvmfs/software.eessi.io (or more generally EESSI_CVMFS_REPO)
139+
-- by that prefix. This ensures that the directory still contains the os/vendor/arch/micro-arch/accelerator etc
140+
-- If it is not defined, default to a site installation prefix under host_injections
141+
site_prefix = os.getenv("EESSI_SITE_SOFTWARE_PREFIX")
142+
if site_prefix then
143+
eessi_site_software_path = string.gsub(eessi_software_path, eessi_repo, site_prefix)
144+
else
145+
eessi_site_software_path = string.gsub(eessi_software_path, "versions", "host_injections")
146+
end
138147
-- Site module path is the same as the EESSI one, but with `versions` changed to `host_injections`, e.g.,
139148
-- /cvmfs/software.eessi.io/host_injections/<EESSI_VERSION>/software/linux/x86_64/amd/zen3/modules/all
140149
local eessi_site_module_path = pathJoin(eessi_site_software_path, eessi_modules_subdir)
@@ -169,8 +178,14 @@ if ( mode() ~= "spider" ) then
169178
prepend_path("MODULEPATH", eessi_module_path)
170179
eessiDebug("Adding " .. eessi_module_path .. " to MODULEPATH")
171180
end
181+
182+
-- Make sure the EESSI cache is found, this is specified in the lmodrc.lua in the eessi_software_path
172183
prepend_path("LMOD_RC", pathJoin(eessi_software_path, ".lmod", "lmodrc.lua"))
173184
eessiDebug("Adding " .. pathJoin(eessi_software_path, ".lmod", "lmodrc.lua") .. " to LMOD_RC")
185+
-- Make sure that a cache for site installations can also be found
186+
prepend_path("LMOD_RC", pathJoin(eessi_site_software_path , ".lmod", "lmodrc.lua"))
187+
eessiDebug("Adding " .. pathJoin(eessi_site_software_path , ".lmod", "lmodrc.lua") .. " to LMOD_RC")
188+
174189
-- Use pushenv for LMOD_PACKAGE_PATH as this may be set locally by the site
175190
pushenv("LMOD_PACKAGE_PATH", pathJoin(eessi_software_path, ".lmod"))
176191
eessiDebug("Setting LMOD_PACKAGE_PATH to " .. pathJoin(eessi_software_path, ".lmod"))
@@ -210,11 +225,23 @@ end
210225
-- prepend the site module path last so it has priority
211226
prepend_path("MODULEPATH", eessi_site_module_path)
212227
eessiDebug("Adding " .. eessi_site_module_path .. " to MODULEPATH")
213-
if isDir(eessi_module_path_accel) then
214-
eessi_module_path_site_accel = string.gsub(eessi_module_path_accel, "versions", "host_injections")
215-
setenv("EESSI_SITE_MODULEPATH_ACCEL", eessi_module_path_site_accel)
216-
prepend_path("MODULEPATH", eessi_module_path_site_accel)
217-
eessiDebug("Using site accelerator modules at: " .. eessi_module_path_site_accel)
228+
229+
-- If EESSI_SITE_SOFTWARE_PREFIX is defined, replace /cvmfs/software.eessi.io (or more generally EESSI_CVMFS_REPO)
230+
-- by that prefix to get the site accelerator path. This ensures that the directory still contains the
231+
-- os/vendor/arch/micro-arch/accelerator etc. If it is not defined, default to a site installation prefix under
232+
-- host_injections
233+
-- Note that we need the eessi_module_path_accel to construct either of these site installation accelerator paths
234+
if eessi_module_path_accel then
235+
if site_prefix then
236+
eessi_module_path_site_accel = string.gsub(eessi_module_path_accel, eessi_repo, site_prefix)
237+
else
238+
eessi_module_path_site_accel = string.gsub(eessi_module_path_accel, "versions", "host_injections")
239+
end
240+
if isDir(eessi_module_path_site_accel) then
241+
setenv("EESSI_SITE_MODULEPATH_ACCEL", eessi_module_path_site_accel)
242+
prepend_path("MODULEPATH", eessi_module_path_site_accel)
243+
eessiDebug("Using site accelerator modules at: " .. eessi_module_path_site_accel)
244+
end
218245
end
219246

220247
-- allow sites to add a family directive to the EESSI module,

0 commit comments

Comments
 (0)