Skip to content

Commit 0e2a31f

Browse files
authored
Merge branch 'main' into combine_cc_targets
2 parents cfe9667 + 89b7cba commit 0e2a31f

19 files changed

Lines changed: 371 additions & 86 deletions

.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_archdetect.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ jobs:
1919
- x86_64/amd/zen3/Azure-CentOS7-7V73X
2020
- x86_64/amd/zen4/Azure-Alma8-9V33X
2121
- x86_64/amd/zen4/Shinx-RHEL8-9654
22+
- x86_64/amd/zen5/AWS-Rocky9-9R45
23+
- x86_64/amd/zen5/RUG-AlmaLinux8-9575F
2224
- aarch64/a64fx/Deucalion-Rocky85
2325
- aarch64/neoverse_n1/Azure-Ubuntu20-Altra
2426
- aarch64/neoverse_n1/AWS-awslinux-graviton2

.github/workflows/tests_eessi_extend_module.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,13 @@ jobs:
5050
export MY_INSTALLATION_PATH=/tmp/easybuild
5151
export EASYBUILD_PREFIX=$MY_INSTALLATION_PATH
5252
eb EESSI-extend-easybuild.eb --rebuild
53+
module unload EasyBuild
5354
5455
# Verify that we can pick the installed version up
5556
module use $MY_INSTALLATION_PATH/modules/all
57+
# Verify we can run "module show" on the module
58+
module show EESSI-extend/${{matrix.eessi_version}}-easybuild
59+
# Now load it and run additional checks
5660
module load EESSI-extend/${{matrix.eessi_version}}-easybuild
5761
echo $EBROOTEESSIMINEXTEND | grep $MY_INSTALLATION_PATH || { echo "ERROR: Installed version of EESSI-extend not picked up (loaded $EBROOTEESSIMINEXTEND)" >&2; exit 1; }
5862
# Do a test rebuild (with default and local hooks)

.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

EESSI-extend-easybuild.eb

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ if eessi_cvmfs_install then
133133
LmodError("You cannot use EESSI_CVMFS_INSTALL in combination with any other EESSI_*_INSTALL environment variables")
134134
end
135135
easybuild_installpath = os.getenv("EESSI_SOFTWARE_PATH")
136-
-- enforce accelerator subdirectory usage for CVMFS installs (only if an accelerator install is requested)
136+
-- Enforce accelerator subdirectory usage for CVMFS installs (only if an accelerator install is requested)
137137
if (eessi_accelerator_target ~= nil) and (cuda_compute_capability ~= nil or amd_compute_capability ~= nil) and (os.getenv("EESSI_ACCELERATOR_INSTALL") ~= nil) then
138138
easybuild_installpath = pathJoin(easybuild_installpath, eessi_accelerator_target)
139139
end
@@ -143,7 +143,7 @@ elseif eessi_site_install then
143143
LmodError("You cannot use EESSI_SITE_INSTALL in combination with any other EESSI_*_INSTALL environment variables")
144144
end
145145
easybuild_installpath = os.getenv("EESSI_SITE_SOFTWARE_PATH")
146-
-- enforce accelerator subdirectory usage for site installs (only if an accelerator install is requested)
146+
-- Enforce accelerator subdirectory usage for site installs (only if an accelerator install is requested)
147147
if (eessi_accelerator_target ~= nil) and (cuda_compute_capability ~= nil) and (os.getenv("EESSI_ACCELERATOR_INSTALL") ~= nil) then
148148
easybuild_installpath = pathJoin(easybuild_installpath, eessi_accelerator_target)
149149
end
@@ -232,7 +232,8 @@ end
232232
233233
-- Make sure EasyBuild itself is loaded
234234
-- need to also handle the unload behaviour where the version is defined only before we unload
235-
easybuild_version = os.getenv("EBVERSIONEASYBUILD")
235+
-- (also provide a sensible default for cases like 'module show' where the modules are never loaded at all)
236+
easybuild_version = os.getenv("EBVERSIONEASYBUILD") or "5.1.1"
236237
if not ( isloaded("EasyBuild") ) then
237238
load(latest("EasyBuild"))
238239
end

EESSI-install-software.sh

Lines changed: 110 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,12 @@ else
147147
# Make sure EESSI_PREFIX and EESSI_OS_TYPE are set
148148
source $TOPDIR/init/minimal_eessi_env
149149

150+
# We've found that creation of new files and directories by unionfs (or any overlay fs) can fail if it
151+
# runs on top of CVMFS because the lower-dir provided by CVMFS is not fully initialized. It seems
152+
# these issues can be avoided simply by running an ls, to at least trigger the mount
153+
echo ">> Trigger automounting of the repo ($EESSI_CVMFS_REPO) before creating new files, to avoid overlay issues"
154+
ls -al $EESSI_CVMFS_REPO
155+
150156
# make sure the the software and modules directory exist
151157
# (since it's expected by init/eessi_environment_variables when using archdetect and by the EESSI module)
152158
mkdir -p -v ${EESSI_PREFIX}/software/${EESSI_OS_TYPE}/${EESSI_SOFTWARE_SUBDIR_OVERRIDE}/{modules,software}
@@ -210,8 +216,9 @@ fi
210216
pr_diff=$(ls [0-9]*.diff | head -n 1)
211217
export PR_DIFF="$PWD/$pr_diff"
212218

213-
# Only run install_scripts.sh if not in dev.eessi.io for security
214-
if [[ -z ${EESSI_DEV_PROJECT} ]]; then
219+
# Only run install_scripts.sh if not in dev.eessi.io (for security)
220+
# Also skip installing scripts for site-installs
221+
if [[ -z ${EESSI_DEV_PROJECT} && -z "${EESSI_SITE_INSTALL_FORCE}" ]]; then
215222
${TOPDIR}/install_scripts.sh --prefix ${EESSI_CVMFS_REPO}/versions/${EESSI_VERSION} --eessi-version ${EESSI_VERSION}
216223
fi
217224

@@ -221,6 +228,10 @@ module --force purge
221228
module unuse $MODULEPATH
222229

223230
# Initialize the EESSI environment
231+
# Unset EESSI_SITE_SOFTWARE_PREFIX initially (& back it up for later restore), so that things like the CUDA
232+
# drivers and libraries are installed in /cvmfs/software.eessi.io, and not in the EESSI_SITE_SOFTWARE_PREFIX
233+
EESSI_SITE_SOFTWARE_PREFIX_BACKUP=${EESSI_SITE_SOFTWARE_PREFIX}
234+
unset EESSI_SITE_SOFTWARE_PREFIX
224235
module use $TOPDIR/init/modules
225236
module load EESSI/$EESSI_VERSION
226237

@@ -237,6 +248,13 @@ if [ -d $EESSI_CVMFS_REPO ]; then
237248
else
238249
fatal_error "$EESSI_CVMFS_REPO is not available!"
239250
fi
251+
if [[ -n "$EESSI_CVMFS_REPO_OVERRIDE" && "$EESSI_CVMFS_REPO" != "$EESSI_CVMFS_REPO_OVERRIDE" ]]; then
252+
if [ -d "$EESSI_CVMFS_REPO_OVERRIDE" ]; then
253+
echo_green "$EESSI_CVMFS_REPO_OVERRIDE available, OK!"
254+
else
255+
fatal_error "$EESSI_CVMFS_REPO_OVERRIDE is not available!"
256+
fi
257+
fi
240258

241259
# Check that EESSI_SOFTWARE_SUBDIR now matches EESSI_SOFTWARE_SUBDIR_OVERRIDE
242260
if [[ -z ${EESSI_SOFTWARE_SUBDIR} ]]; then
@@ -257,7 +275,11 @@ export PYTHONUNBUFFERED=1
257275
# ${EESSI_PREFIX}/software/${EESSI_OS_TYPE}/${EESSI_SOFTWARE_SUBDIR_OVERRIDE}
258276
# - .lmod/lmodrc.lua
259277
# - .lmod/SitePackage.lua
260-
_eessi_software_path=${EESSI_PREFIX}/software/${EESSI_OS_TYPE}/${EESSI_SOFTWARE_SUBDIR_OVERRIDE}
278+
if [[ -n "${EESSI_SITE_INSTALL_FORCE}" ]]; then
279+
_eessi_software_path=${EESSI_CVMFS_REPO_OVERRIDE}/versions/${EESSI_VERSION_OVERRIDE:-${EESSI_VERSION}}/software/${EESSI_OS_TYPE}/${EESSI_SOFTWARE_SUBDIR_OVERRIDE}
280+
else
281+
_eessi_software_path=${EESSI_PREFIX}/software/${EESSI_OS_TYPE}/${EESSI_SOFTWARE_SUBDIR_OVERRIDE}
282+
fi
261283
_lmod_cfg_dir=${_eessi_software_path}/.lmod
262284
_lmod_rc_file=${_lmod_cfg_dir}/lmodrc.lua
263285
if [ ! -f ${_lmod_rc_file} ]; then
@@ -266,7 +288,7 @@ if [ ! -f ${_lmod_rc_file} ]; then
266288
python3 ${TOPDIR}/create_lmodrc.py ${_eessi_software_path}
267289
fi
268290
_lmod_sitepackage_file=${_lmod_cfg_dir}/SitePackage.lua
269-
if [ ! -f ${_lmod_sitepackage_file} ]; then
291+
if [[ ! -f ${_lmod_sitepackage_file} && -z "${EESSI_SITE_INSTALL_FORCE}" ]]; then
270292
echo "Lmod file '${_lmod_sitepackage_file}' does not exist yet; creating it..."
271293
command -V python3
272294
python3 ${TOPDIR}/create_lmodsitepackage.py ${_eessi_software_path}
@@ -279,8 +301,16 @@ echo ">> Configuring EasyBuild..."
279301
module unload EESSI-extend
280302
unset EESSI_USER_INSTALL
281303
unset EESSI_PROJECT_INSTALL
282-
unset EESSI_SITE_INSTALL
283-
export EESSI_CVMFS_INSTALL=1
304+
if [[ -n "$EESSI_SITE_INSTALL_FORCE" ]]; then
305+
msg="Forcing a site installation (EESSI_SITE_INSTALL_FORCE=${EESSI_SITE_INSTALL_FORCE})"
306+
msg="$msg by setting EESSI_SITE_INSTALL=1 and unsetting EESSI_CVMFS_INSTALL"
307+
echo $msg
308+
export EESSI_SITE_INSTALL=1
309+
unset EESSI_CVMFS_INSTALL
310+
else
311+
unset EESSI_SITE_INSTALL
312+
export EESSI_CVMFS_INSTALL=1
313+
fi
284314

285315
# We now run 'source load_eessi_extend_module.sh' to load or install and load the
286316
# EESSI-extend module which sets up all build environment settings.
@@ -293,6 +323,7 @@ export EESSI_CVMFS_INSTALL=1
293323
# NOTE 3, we have to set a default for EASYBUILD_INSTALLPATH here in cases the
294324
# EESSI-extend module itself needs to be installed.
295325
export EASYBUILD_INSTALLPATH=${EESSI_PREFIX}/software/${EESSI_OS_TYPE}/${EESSI_SOFTWARE_SUBDIR_OVERRIDE}
326+
echo "EASYBUILD_INSTALLPATH set to $EASYBUILD_INSTALLPATH"
296327

297328
# If in dev.eessi.io, allow building on top of software.eessi.io via EESSI-extend
298329
if [[ ! -z ${EESSI_DEV_PROJECT} ]]; then
@@ -338,9 +369,24 @@ fi
338369
# Install NVIDIA drivers in host_injections (if they exist)
339370
if nvidia_gpu_available; then
340371
echo "Installing NVIDIA drivers for use in prefix shell..."
341-
${EESSI_PREFIX}/scripts/gpu_support/nvidia/link_nvidia_host_libraries.sh
372+
# Site installs override EESSI_CVMFS_REPO, but link_nvidia_host_libraries should always use the usptream EESSI CVMFS repo
373+
EESSI_CVMFS_REPO=/cvmfs/software.eessi.io ${EESSI_PREFIX}/scripts/gpu_support/nvidia/link_nvidia_host_libraries.sh
342374
fi
343375

376+
# Now that we are done with all installs that should go the /cvmfs/software.eessi.io
377+
# Reload the EESSI and EESSI-extend modules if we're doing a site install for which EESSI_SITE_SOFTWARE_PREFIX is set
378+
export EESSI_SITE_SOFTWARE_PREFIX=${EESSI_SITE_SOFTWARE_PREFIX_BACKUP}
379+
if [[ ! -z "${EESSI_SITE_INSTALL}" && ! -z "${EESSI_SITE_SOFTWARE_PREFIX}" ]]; then
380+
echo "Doing a site install with EESSI_SITE_SOFTWARE_PREFIX '${EESSI_SITE_SOFTWARE_PREFIX}', so reloading EESSI and EESSI-extend"
381+
EESSI_VERSION_BACKUP=${EESSI_VERSION}
382+
module purge
383+
echo "Loading EESSI/${EESSI_VERSION_BACKUP}"
384+
module load EESSI/${EESSI_VERSION_BACKUP}
385+
# Use --ignore_cache in case the current build was the one that installed this EESSI-extend module
386+
echo "Loading EESSI-extend/${EESSI_VERSION}"
387+
module load --ignore_cache EESSI-extend/${EESSI_VERSION}-easybuild
388+
echo "EASYBUILD_INSTALLPATH=${EASYBUILD_INSTALLPATH}"
389+
fi
344390

345391
if [ ! -z "${shared_fs_path}" ]; then
346392
shared_eb_sourcepath=${shared_fs_path}/easybuild/sources
@@ -381,12 +427,26 @@ else
381427
# "|| true" is used to make sure that the grep command always returns success
382428
rebuild_easystacks=$(echo "${changed_easystacks}" | (grep "/rebuilds/" || true))
383429
new_easystacks=$(echo "${changed_easystacks}" | (grep -v "/rebuilds/" || true))
430+
echo "When processing easystack files:"
431+
echo "EESSI_CVMFS_REPO=${EESSI_CVMFS_REPO}"
432+
echo "EESSI_CVMFS_REPO_OVERRIDE=${EESSI_CVMFS_REPO_OVERRIDE}"
433+
echo "EESSI_VERSION=${EESSI_VERSION}"
434+
echo "EESSI_VERSION_OVERRIDE=${EESSI_VERSION_OVERRIDE}"
435+
echo "EESSI_SOFTWARE_LAYER_VERSION_SUFFIX=${EESSI_SOFTWARE_LAYER_VERSION_SUFFIX}"
384436
for easystack_file in ${rebuild_easystacks} ${new_easystacks}; do
437+
echo "Checking if easystack file ${easystack_file} is for the current EESSI_CVMFS_REPO and EESSI_VERSION"
385438

386439
# make sure that easystack file being picked up is for EESSI version that we're building for...
387-
echo "${easystack_file}" | grep -q "^easystacks/$(basename ${EESSI_CVMFS_REPO})/${EESSI_VERSION}${EESSI_SOFTWARE_LAYER_VERSION_SUFFIX}/"
440+
# Preferentially check EESSI_CVMFS_REPO_OVERRIDE (since that is set for site builds), otherwise default to EESSI_CVMFS_REPO
441+
echo "${easystack_file}" | grep -q "^easystacks/$(basename ${EESSI_CVMFS_REPO_OVERRIDE:-${EESSI_CVMFS_REPO}})/${EESSI_VERSION}${EESSI_SOFTWARE_LAYER_VERSION_SUFFIX}/"
388442
if [ $? -ne 0 ]; then
389-
echo_yellow "Easystack file ${easystack_file} is not intended for EESSI version ${EESSI_VERSION}${EESSI_SOFTWARE_LAYER_VERSION_SUFFIX}, skipping it..."
443+
# Check if this was even an easystack file for the right repository
444+
echo "${easystack_file}" | grep -q "^easystacks/$(basename ${EESSI_CVMFS_REPO_OVERRIDE:-${EESSI_CVMFS_REPO}})"
445+
if [ $? -ne 0 ]; then
446+
echo_yellow "Easystack file ${easystack_file} is not intended for the repository ${EESSI_CVMFS_REPO_OVERRIDE:-${EESSI_CVMFS_REPO}}, skipping it..."
447+
else
448+
echo_yellow "Easystack file ${easystack_file} is not intended for EESSI version ${EESSI_VERSION}${EESSI_SOFTWARE_LAYER_VERSION_SUFFIX}, skipping it..."
449+
fi
390450
else
391451
echo -e "Processing easystack file ${easystack_file}...\n\n"
392452

@@ -443,31 +503,49 @@ else
443503
export LMOD_PACKAGE_PATH="${EASYBUILD_INSTALLPATH}/.lmod"
444504
fi
445505

446-
lmod_rc_file="$LMOD_CONFIG_DIR/lmodrc.lua"
447-
echo "DEBUG: lmod_rc_file='${lmod_rc_file}'"
448-
if [[ ! -z ${EESSI_ACCELERATOR_TARGET} ]]; then
449-
# EESSI_ACCELERATOR_TARGET is set, so let's remove the accelerator path from $lmod_rc_file
450-
lmod_rc_file=$(echo ${lmod_rc_file} | sed "s@/${EESSI_ACCELERATOR_TARGET}@@")
451-
echo "Path to lmodrc.lua changed to '${lmod_rc_file}'"
452-
fi
453-
lmodrc_changed=$(cat ${pr_diff} | grep '^+++' | cut -f2 -d' ' | sed 's@^[a-z]/@@g' | grep '^create_lmodrc.py$' > /dev/null; echo $?)
454-
if [ ! -f $lmod_rc_file ] || [ ${lmodrc_changed} == '0' ]; then
455-
echo ">> Creating/updating Lmod RC file (${lmod_rc_file})..."
456-
python3 $TOPDIR/create_lmodrc.py ${EASYBUILD_INSTALLPATH}
457-
check_exit_code $? "$lmod_rc_file created" "Failed to create $lmod_rc_file"
506+
# If this is a site install, the old method of checking if lmodrc.lua was updated doesn't work
507+
# We simply skip that step for now - it's hardly ever changed anyway
508+
if [[ -z "${EESSI_SITE_INSTALL}" ]]; then
509+
lmod_rc_file="$LMOD_CONFIG_DIR/lmodrc.lua"
510+
echo "DEBUG: lmod_rc_file='${lmod_rc_file}'"
511+
if [[ ! -z ${EESSI_ACCELERATOR_TARGET} ]]; then
512+
# EESSI_ACCELERATOR_TARGET is set, so let's remove the accelerator path from $lmod_rc_file
513+
lmod_rc_file=$(echo ${lmod_rc_file} | sed "s@/${EESSI_ACCELERATOR_TARGET}@@")
514+
echo "Path to lmodrc.lua changed to '${lmod_rc_file}'"
515+
fi
516+
lmodrc_changed=$(cat ${pr_diff} | grep '^+++' | cut -f2 -d' ' | sed 's@^[a-z]/@@g' | grep '^create_lmodrc.py$' > /dev/null; echo $?)
517+
if [ ! -f $lmod_rc_file ] || [ ${lmodrc_changed} == '0' ]; then
518+
echo ">> Creating/updating Lmod RC file (${lmod_rc_file})..."
519+
python3 $TOPDIR/create_lmodrc.py ${EASYBUILD_INSTALLPATH}
520+
check_exit_code $? "$lmod_rc_file created" "Failed to create $lmod_rc_file"
521+
fi
522+
else
523+
# For site builds, create_lmodrc.py will _never_ be in the pr_diff, but it _might_ have changed upstream
524+
# The only way to then trigger a redeploy is if we do something like
525+
# python3 $TOPDIR/create_lmodrc.py $TMDPIR
526+
# foo=$(diff $lmod_rc_file $TMPDIR/.lmod/lmodrc.lua)
527+
# if [ -z $foo ]; then
528+
# python3 $TOPDIR/create_lmodrc.py ${EASYBUILD_INSTALLPATH}
529+
# fi
530+
# in order to detect if our deployed lmodrc.lua is different from the one that _would_ be newly generated
531+
# However, we very rarely change these scripts anyway, so we don't implement this right now
532+
echo "WARNING: there is currently no mechanism to detect if the lmodrc.lua should be updated."
458533
fi
459534

460-
lmod_sitepackage_file="$LMOD_PACKAGE_PATH/SitePackage.lua"
461-
if [[ ! -z ${EESSI_ACCELERATOR_TARGET} ]]; then
462-
# EESSI_ACCELERATOR_TARGET is set, so let's remove the accelerator path from $lmod_sitepackage_file
463-
lmod_sitepackage_file=$(echo ${lmod_sitepackage_file} | sed "s@/${EESSI_ACCELERATOR_TARGET}@@")
464-
echo "Path to SitePackage.lua changed to '${lmod_sitepackage_file}'"
465-
fi
466-
sitepackage_changed=$(cat ${pr_diff} | grep '^+++' | cut -f2 -d' ' | sed 's@^[a-z]/@@g' | grep '^create_lmodsitepackage.py$' > /dev/null; echo $?)
467-
if [ ! -f "$lmod_sitepackage_file" ] || [ "${sitepackage_changed}" == '0' ]; then
468-
echo ">> Creating/updating Lmod SitePackage.lua (${lmod_sitepackage_file})..."
469-
python3 $TOPDIR/create_lmodsitepackage.py ${EASYBUILD_INSTALLPATH}
470-
check_exit_code $? "$lmod_sitepackage_file created" "Failed to create $lmod_sitepackage_file"
535+
# If this is a site install, don't install SitePackage.lua
536+
if [[ -z "${EESSI_SITE_INSTALL}" ]]; then
537+
lmod_sitepackage_file="$LMOD_PACKAGE_PATH/SitePackage.lua"
538+
if [[ ! -z ${EESSI_ACCELERATOR_TARGET} ]]; then
539+
# EESSI_ACCELERATOR_TARGET is set, so let's remove the accelerator path from $lmod_sitepackage_file
540+
lmod_sitepackage_file=$(echo ${lmod_sitepackage_file} | sed "s@/${EESSI_ACCELERATOR_TARGET}@@")
541+
echo "Path to SitePackage.lua changed to '${lmod_sitepackage_file}'"
542+
fi
543+
sitepackage_changed=$(cat ${pr_diff} | grep '^+++' | cut -f2 -d' ' | sed 's@^[a-z]/@@g' | grep '^create_lmodsitepackage.py$' > /dev/null; echo $?)
544+
if [ ! -f "$lmod_sitepackage_file" ] || [ "${sitepackage_changed}" == '0' ]; then
545+
echo ">> Creating/updating Lmod SitePackage.lua (${lmod_sitepackage_file})..."
546+
python3 $TOPDIR/create_lmodsitepackage.py ${EASYBUILD_INSTALLPATH}
547+
check_exit_code $? "$lmod_sitepackage_file created" "Failed to create $lmod_sitepackage_file"
548+
fi
471549
fi
472550

473551
echo ">> Cleaning up ${TMPDIR}..."

0 commit comments

Comments
 (0)