Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
a9eadc9
filter ParMETIS dependency, since ParMETIS license doesn't allow redi…
boegel Jun 11, 2025
52f568f
add easystack file to rebuild EESSI-extend module
boegel Jun 12, 2025
fa5f211
Update EESSI-extend-easybuild.eb
ocaisa Jun 12, 2025
8a949fe
update load_eessi_extend_module.sh to rebuild EESSI-extend module if …
boegel Jun 12, 2025
270cb8f
remove easystack file again, should not be needed to trigger rebuild …
boegel Jun 12, 2025
47290c5
Make EESSI-extend support accelerator installations
ocaisa Jul 3, 2025
f551ffe
Explicitly export environment variable
ocaisa Jul 3, 2025
889480a
Missing quote
ocaisa Jul 3, 2025
c5e8830
Separate our the GPU checks
ocaisa Jul 3, 2025
132ab4d
Make sure to source shell functions
ocaisa Jul 3, 2025
a72a5e1
Match to accel/nvidia/ccXX in EESSI-extend
ocaisa Jul 3, 2025
bb5faa1
EasyBuild expects . in CUDA compute capabilities
ocaisa Jul 3, 2025
dd4238d
accel is included in EESSI_ACCELERATOR_TARGET
ocaisa Jul 3, 2025
5ed221d
typo
ocaisa Jul 3, 2025
540e088
Extra subdirectory removed for accelerator subdir
ocaisa Jul 3, 2025
2416487
MAke sure the bot sets the right environment variables
ocaisa Jul 3, 2025
635ff46
Ensure build scripts are aware of new EESSI-extend behaviour
ocaisa Jul 4, 2025
d8cd8df
Update load_eessi_extend_module.sh
ocaisa Jul 4, 2025
1681369
Merge pull request #2 from boegel/filter_ParMETIS
bedroge Jul 4, 2025
8a6ce0f
Merge remote-tracking branch 'upstream/main' into eessi-extend-cuda
ocaisa Jul 4, 2025
996f065
Update EESSI-install-software.sh
ocaisa Jul 4, 2025
b9cdb1a
Update EESSI-install-software.sh
ocaisa Jul 4, 2025
d4ceacc
Update EESSI-install-software.sh
ocaisa Jul 4, 2025
baae956
Be more careful when setting EESSI_ACCELERATOR_TARGET_OVERRIDE based …
ocaisa Jul 4, 2025
787dd5e
Merge branch 'eessi-extend-cuda' of github.com:ocaisa/software-layer-…
ocaisa Jul 4, 2025
545f5d9
Update bot/build.sh
ocaisa Jul 4, 2025
2cd8cb6
dont escape + character in grep pattern
bedroge Jul 4, 2025
0511be3
Merge pull request #28 from bedroge/fix_grep
ocaisa Jul 4, 2025
056cc3f
Merge pull request #27 from ocaisa/eessi-extend-cuda
bedroge Jul 7, 2025
fa1fb46
filter ParMETIS dependency, since ParMETIS license doesn't allow redi…
boegel Jun 11, 2025
76fd201
add easystack file to rebuild EESSI-extend module
boegel Jun 12, 2025
d5f1141
Update EESSI-extend-easybuild.eb
ocaisa Jun 12, 2025
c6bf747
update load_eessi_extend_module.sh to rebuild EESSI-extend module if …
boegel Jun 12, 2025
35b955b
remove easystack file again, should not be needed to trigger rebuild …
boegel Jun 12, 2025
4d5c26a
Update load_eessi_extend_module.sh
ocaisa Jul 4, 2025
1c7652b
dont escape + character in grep pattern
bedroge Jul 4, 2025
e898754
move 2023.06 easystacks to 2023.06 subdir
bedroge Jul 4, 2025
9037a5f
replace hardcoded list of host injections easystacks by a find command
bedroge Jul 4, 2025
60100c4
Merge branch 'main' of github.com:EESSI/software-layer-scripts into h…
bedroge Jul 7, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/scripts/verify_eessi_environment.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,8 @@ def check_env_endswith(var1, var2):
check_env_equals("EESSI_ACCELERATOR_TARGET_OVERRIDE", "EESSI_ACCEL_SUBDIR")
# special case is where EESSI_ACCELERATOR_TARGET_OVERRIDE may not match the final
# accelerator architecture chosen.
# In CI we set FINAL_ACCELERATOR_PATH_EXPECTED to allow us to compare against an expected value.
check_env_equals("EESSI_ACCELERATOR_TARGET", "FINAL_ACCELERATOR_PATH_EXPECTED")
# In CI we set FINAL_ACCELERATOR_TARGET_EXPECTED to allow us to compare against an expected value.
check_env_equals("EESSI_ACCELERATOR_TARGET", "FINAL_ACCELERATOR_TARGET_EXPECTED")
# verify the software paths that should exist
check_env_endswith("EESSI_SOFTWARE_PATH", "EESSI_SOFTWARE_SUBDIR")
check_env_endswith("EESSI_SITE_SOFTWARE_PATH", "EESSI_SOFTWARE_SUBDIR")
Expand Down
87 changes: 85 additions & 2 deletions .github/workflows/tests_eessi_extend_module.yml
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,8 @@ jobs:
export EESSI_PROJECT_INSTALL="$MY_INSTALLATION_PATH"
module load EESSI-extend/${{matrix.EESSI_VERSION}}-easybuild
# check some specific envvars
check_env_var "EASYBUILD_INSTALLPATH" "$MY_INSTALLATION_PATH/versions/$EESSI_VERSION/software/linux/$EESSI_SOFTWARE_SUBDIR"
export EXPECTED_INSTALLATION_PATH="$MY_INSTALLATION_PATH/versions/$EESSI_VERSION/software/linux/$EESSI_SOFTWARE_SUBDIR"
check_env_var "EASYBUILD_INSTALLPATH" "$EXPECTED_INSTALLATION_PATH"
check_env_var "EASYBUILD_UMASK" "002"
check_env_var "EASYBUILD_GROUP_WRITABLE_INSTALLDIR" "1"
# unload and check the environment is clean again
Expand All @@ -118,10 +119,92 @@ jobs:
mkdir -p $EESSI_USER_INSTALL # must exist
module load EESSI-extend/${{matrix.EESSI_VERSION}}-easybuild
# check some specific envvars
check_env_var "EASYBUILD_INSTALLPATH" "$MY_INSTALLATION_PATH/$USER/versions/$EESSI_VERSION/software/linux/$EESSI_SOFTWARE_SUBDIR"
export EXPECTED_INSTALLATION_PATH="$MY_INSTALLATION_PATH/$USER/versions/$EESSI_VERSION/software/linux/$EESSI_SOFTWARE_SUBDIR"
check_env_var "EASYBUILD_INSTALLPATH" "$EXPECTED_INSTALLATION_PATH"
check_env_var "EASYBUILD_UMASK" "077"
# unload and check the environment is clean again
module unload EESSI-extend
check_disallowed_env_prefix EASYBUILD_
unset EESSI_USER_INSTALL

- name: Run tests for EESSI-extend in the various GPU scenarios
run: |
export MY_INSTALLATION_PATH=/tmp/easybuild

# Define a function to check the values of environment variables
# and another that checks an environment does not contain environment
# variables matching a certain pattern
source .github/workflows/scripts/test_utils.sh

# Set an environment variable to use when we want to target accelerators
export STORED_EESSI_ACCELERATOR_TARGET_OVERRIDE="accel/nvidia/cc80"
export STORED_CUDA_CC="8.0"

# Let's start from a clean slate
module purge
export EESSI_ACCELERATOR_TARGET_OVERRIDE=$STORED_EESSI_ACCELERATOR_TARGET_OVERRIDE
module load EESSI/${{matrix.EESSI_VERSION}}
# Access the installed EESSI-extend
module use "$MY_INSTALLATION_PATH"/modules/all
check_disallowed_env_prefix EASYBUILD_

# Configure for CVMFS install
export EESSI_CVMFS_INSTALL=1
module load EESSI-extend/${{matrix.EESSI_VERSION}}-easybuild
check_env_var "EASYBUILD_INSTALLPATH" "$EESSI_SOFTWARE_PATH" # installation path should be the same unless we ask for an explicit GPU installation
check_env_var "EASYBUILD_CUDA_COMPUTE_CAPABILITIES" "$STORED_CUDA_CC"
export EESSI_ACCELERATOR_INSTALL=1
module load EESSI-extend/${{matrix.EESSI_VERSION}}-easybuild # reload for an actual GPU installation
check_env_var "EASYBUILD_INSTALLPATH" "${EESSI_SOFTWARE_PATH}/${EESSI_ACCELERATOR_TARGET_OVERRIDE}"
# unload and make sure the environment is clean again
module unload EESSI-extend
check_disallowed_env_prefix EASYBUILD_
unset EESSI_ACCELERATOR_INSTALL
unset EESSI_CVMFS_INSTALL

# Now configure for a site
export EESSI_SITE_INSTALL=1
module load EESSI-extend/${{matrix.EESSI_VERSION}}-easybuild
check_env_var "EASYBUILD_INSTALLPATH" "$EESSI_SITE_SOFTWARE_PATH" # installation path should be the same unless we ask for an explicit GPU installation
check_env_var "EASYBUILD_CUDA_COMPUTE_CAPABILITIES" "$STORED_CUDA_CC"
export EESSI_ACCELERATOR_INSTALL=1
module load EESSI-extend/${{matrix.EESSI_VERSION}}-easybuild # reload for an actual GPU installation
check_env_var "EASYBUILD_INSTALLPATH" "${EESSI_SITE_SOFTWARE_PATH}/${EESSI_ACCELERATOR_TARGET_OVERRIDE}"
# unload and make sure the environment is clean again
module unload EESSI-extend
check_disallowed_env_prefix EASYBUILD_
unset EESSI_ACCELERATOR_INSTALL
unset EESSI_SITE_INSTALL

# Now for a project
export EESSI_PROJECT_INSTALL="$MY_INSTALLATION_PATH"
export EXPECTED_INSTALLATION_PATH="$MY_INSTALLATION_PATH/versions/$EESSI_VERSION/software/linux/$EESSI_SOFTWARE_SUBDIR"
module load EESSI-extend/${{matrix.EESSI_VERSION}}-easybuild
check_env_var "EASYBUILD_INSTALLPATH" "$EXPECTED_INSTALLATION_PATH" # installation path should be the same unless we ask for an explicit GPU installation
check_env_var "EASYBUILD_CUDA_COMPUTE_CAPABILITIES" "$STORED_CUDA_CC"
export EESSI_ACCELERATOR_INSTALL=1
module load EESSI-extend/${{matrix.EESSI_VERSION}}-easybuild # reload for an GPU actual installation
check_env_var "EASYBUILD_INSTALLPATH" "$EXPECTED_INSTALLATION_PATH" # installation path should be the same for project case
# unload and make sure the environment is clean again
module unload EESSI-extend
check_disallowed_env_prefix EASYBUILD_
unset EESSI_ACCELERATOR_INSTALL
unset EESSI_PROJECT_INSTALL

# Now for a user
export EESSI_USER_INSTALL="$MY_INSTALLATION_PATH/$USER"
mkdir -p $EESSI_USER_INSTALL # must exist
module load EESSI-extend/${{matrix.EESSI_VERSION}}-easybuild
# check some specific envvars
export EXPECTED_INSTALLATION_PATH="$MY_INSTALLATION_PATH/$USER/versions/$EESSI_VERSION/software/linux/$EESSI_SOFTWARE_SUBDIR"
module load EESSI-extend/${{matrix.EESSI_VERSION}}-easybuild
check_env_var "EASYBUILD_INSTALLPATH" "$EXPECTED_INSTALLATION_PATH" # installation path should be the same unless we ask for an explicit GPU installation
check_env_var "EASYBUILD_CUDA_COMPUTE_CAPABILITIES" "$STORED_CUDA_CC"
export EESSI_ACCELERATOR_INSTALL=1
module load EESSI-extend/${{matrix.EESSI_VERSION}}-easybuild # reload for an actual GPU installation
check_env_var "EASYBUILD_INSTALLPATH" "$EXPECTED_INSTALLATION_PATH" # installation path should be the same for user case
# unload and make sure the environment is clean again
module unload EESSI-extend
check_disallowed_env_prefix EASYBUILD_
unset EESSI_ACCELERATOR_INSTALL
unset EESSI_USER_INSTALL
6 changes: 3 additions & 3 deletions .github/workflows/tests_eessi_module.yml
Original file line number Diff line number Diff line change
Expand Up @@ -165,9 +165,9 @@ jobs:
include:
# For each override we expect a specific path (which may differ from the original due to overrides)
- EESSI_ACCELERATOR_TARGET_OVERRIDE: accel/nvidia/cc80
FINAL_ACCELERATOR_PATH_EXPECTED: accel/nvidia/cc80
FINAL_ACCELERATOR_TARGET_EXPECTED: accel/nvidia/cc80
- EESSI_ACCELERATOR_TARGET_OVERRIDE: accel/nvidia/cc77 # deliberately chose a non-existent CUDA capability
FINAL_ACCELERATOR_PATH_EXPECTED: accel/nvidia/cc70 # this reverts to the fallback case (which does exist)
FINAL_ACCELERATOR_TARGET_EXPECTED: accel/nvidia/cc70 # this reverts to the fallback case (which does exist)

steps:
- name: Check out software-layer repository
Expand All @@ -193,7 +193,7 @@ jobs:
# Set our accelerator path overrides according to our matrix
if [[ "${{matrix.EESSI_ACCELERATOR_TARGET_OVERRIDE}}" != "none" ]]; then
export EESSI_ACCELERATOR_TARGET_OVERRIDE=${{matrix.EESSI_ACCELERATOR_TARGET_OVERRIDE}}
export FINAL_ACCELERATOR_PATH_EXPECTED=${{matrix.FINAL_ACCELERATOR_PATH_EXPECTED}}
export FINAL_ACCELERATOR_TARGET_EXPECTED=${{matrix.FINAL_ACCELERATOR_TARGET_EXPECTED}}
fi

# Turn on debug output in case we want to take a look
Expand Down
36 changes: 26 additions & 10 deletions EESSI-extend-easybuild.eb
Original file line number Diff line number Diff line change
Expand Up @@ -35,12 +35,17 @@ description = """
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.

Strict installation path checking is enforced by EESSI for EESSI and site
installations involving accelerators. In these cases, if you wish to create an
accelerator installation you must set the environment variable
EESSI_ACCELERATOR_INSTALL (and load/reload this module).
"""

toolchain = SYSTEM

# 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_deps_to_filter = "Autoconf,Automake,Autotools,binutils,bzip2,DBus,flex,gettext,gperf,help2man,intltool,libreadline,libtool,M4,makeinfo,ncurses,ParMETIS,util-linux,XZ,zlib"
local_arch_specific_deps_to_filter = {'aarch64': ',Yasm', 'riscv64': ',Yasm', 'x86_64': ''}
local_deps_to_filter += local_arch_specific_deps_to_filter[ARCH]

Expand Down Expand Up @@ -78,8 +83,21 @@ if (mode() == "load") then
end
end
working_dir = os.getenv("WORKING_DIR") or pathJoin("/tmp", os.getenv("USER"))

-- Gather the EPREFIX to use as a sysroot
sysroot = os.getenv("EESSI_EPREFIX")

-- Check if we have GPU capabilities and configure CUDA compute capabilities
eessi_accelerator_target = os.getenv("EESSI_ACCELERATOR_TARGET")
if (eessi_accelerator_target ~= nil) then
cuda_compute_capability = string.match(eessi_accelerator_target, "^accel/nvidia/cc([0-9][0-9])$")
if (cuda_compute_capability ~= nil) then
easybuild_cuda_compute_capabilities = cuda_compute_capability:sub(1, 1) .. "." .. cuda_compute_capability:sub(2, 2)
else
LmodError("Incorrect value for $EESSI_ACCELERATOR_TARGET: " .. eessi_accelerator_target)
end
end

-- 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
Expand All @@ -88,22 +106,20 @@ if (os.getenv("EESSI_CVMFS_INSTALL") ~= nil) then
end
eessi_cvmfs_install = true
easybuild_installpath = os.getenv("EESSI_SOFTWARE_PATH")
eessi_accelerator_target = os.getenv("EESSI_ACCELERATOR_TARGET")
if (eessi_accelerator_target ~= nil) then
cuda_compute_capability = string.match(eessi_accelerator_target, "^nvidia/cc([0-9][0-9])$")
if (cuda_compute_capability ~= nil) then
easybuild_installpath = pathJoin(easybuild_installpath, 'accel', eessi_accelerator_target)
easybuild_cuda_compute_capabilities = cuda_compute_capability:sub(1, 1) .. "." .. cuda_compute_capability:sub(2, 2)
else
LmodError("Incorrect value for $EESSI_ACCELERATOR_TARGET: " .. eessi_accelerator_target)
end
-- enforce accelerator subdirectory usage for CVMFS installs (only if an accelerator install is requested)
if (eessi_accelerator_target ~= nil) and (cuda_compute_capability ~= nil) and (os.getenv("EESSI_ACCELERATOR_INSTALL") ~= nil) then
easybuild_installpath = pathJoin(easybuild_installpath, eessi_accelerator_target)
end
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") ~= nil)) then
LmodError("You cannot use EESSI_SITE_INSTALL in combination with any other EESSI_*_INSTALL environment variables")
end
easybuild_installpath = os.getenv("EESSI_SITE_SOFTWARE_PATH")
-- enforce accelerator subdirectory usage for site installs (only if an accelerator install is requested)
if (eessi_accelerator_target ~= nil) and (cuda_compute_capability ~= nil) and (os.getenv("EESSI_ACCELERATOR_INSTALL") ~= nil) then
easybuild_installpath = pathJoin(easybuild_installpath, eessi_accelerator_target)
end
else
-- Deal with user and project installs
project_install = os.getenv("EESSI_PROJECT_INSTALL")
Expand Down
10 changes: 10 additions & 0 deletions EESSI-install-software.sh
Original file line number Diff line number Diff line change
Expand Up @@ -284,6 +284,16 @@ if [[ ! -z ${EESSI_DEV_PROJECT} ]]; then
echo ">> \$EESSI_PROJECT_INSTALL set to ${EESSI_PROJECT_INSTALL}"
fi

# If we have EESSI_ACCELERATOR_TARGET_OVERRIDE set (and non-empty), then this implies building for a GPU target
# (this must be set _before_ we load EESSI-extend).
# We also make sure that EESSI_ACCELERATOR_TARGET is also set as EESSI_ACCELERATOR_TARGET_OVERRIDE must
# be set before the EESSI module is loaded in order to set accelerator information.
if [[ -n "$EESSI_ACCELERATOR_TARGET_OVERRIDE" && -z "$EESSI_ACCELERATOR_TARGET" ]]; then
fatal_error "EESSI module should've set EESSI_ACCELERATOR_TARGET ($EESSI_ACCELERATOR_TARGET) when EESSI_ACCELERATOR_TARGET_OVERRIDE ($EESSI_ACCELERATOR_TARGET_OVERRIDE) exported."
elif [[ -n "$EESSI_ACCELERATOR_TARGET_OVERRIDE" ]]; then
export EESSI_ACCELERATOR_INSTALL=1
fi

echo "DEBUG: before loading EESSI-extend // EASYBUILD_INSTALLPATH='${EASYBUILD_INSTALLPATH}'"
source $TOPDIR/load_eessi_extend_module.sh ${EESSI_VERSION}
echo "DEBUG: after loading EESSI-extend // EASYBUILD_INSTALLPATH='${EASYBUILD_INSTALLPATH}'"
Expand Down
10 changes: 8 additions & 2 deletions bot/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -162,8 +162,14 @@ export EESSI_SOFTWARE_SUBDIR_OVERRIDE
echo "bot/build.sh: EESSI_SOFTWARE_SUBDIR_OVERRIDE='${EESSI_SOFTWARE_SUBDIR_OVERRIDE}'"

# determine accelerator target (if any) from .architecture in ${JOB_CFG_FILE}
export EESSI_ACCELERATOR_TARGET=$(cfg_get_value "architecture" "accelerator")
echo "bot/build.sh: EESSI_ACCELERATOR_TARGET='${EESSI_ACCELERATOR_TARGET}'"
ACCEL_OVERRIDE=$(cfg_get_value "architecture" "accelerator")
if [[ -n "$ACCEL_OVERRIDE" ]]; then
# bot job config does not include accel subdirectory
export EESSI_ACCELERATOR_TARGET_OVERRIDE="accel/$ACCEL_OVERRIDE"
else
export EESSI_ACCELERATOR_TARGET_OVERRIDE=""
fi
echo "bot/build.sh: EESSI_ACCELERATOR_TARGET_OVERRIDE='${EESSI_ACCELERATOR_TARGET_OVERRIDE}'"

# get EESSI_OS_TYPE from .architecture.os_type in ${JOB_CFG_FILE} (default: linux)
EESSI_OS_TYPE=$(cfg_get_value "architecture" "os_type")
Expand Down
2 changes: 1 addition & 1 deletion configure_easybuild
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ fi

# note: filtering Bison may break some installations, like Qt5 (see https://github.com/EESSI/software-layer/issues/49)
# filtering pkg-config breaks R-bundle-Bioconductor installation (see also https://github.com/easybuilders/easybuild-easyconfigs/pull/11104)
DEPS_TO_FILTER=Autoconf,Automake,Autotools,binutils,bzip2,DBus,flex,gettext,gperf,help2man,intltool,libreadline,libtool,M4,makeinfo,ncurses,util-linux,XZ,zlib
DEPS_TO_FILTER=Autoconf,Automake,Autotools,binutils,bzip2,DBus,flex,gettext,gperf,help2man,intltool,libreadline,libtool,M4,makeinfo,ncurses,ParMETIS,util-linux,XZ,zlib
# For aarch64 we need to also filter out Yasm.
# See https://github.com/easybuilders/easybuild-easyconfigs/issues/11190
if [[ "$EESSI_CPU_FAMILY" == "aarch64" ]]; then
Expand Down
13 changes: 6 additions & 7 deletions install_scripts.sh
Original file line number Diff line number Diff line change
Expand Up @@ -213,13 +213,12 @@ nvidia_files=(
)
copy_files_by_list ${TOPDIR}/scripts/gpu_support/nvidia ${INSTALL_PREFIX}/scripts/gpu_support/nvidia "${nvidia_files[@]}"

# Easystacks to be used to install software in host injections
host_injections_easystacks=(
eessi-2023.06-eb-4.9.4-2023a-CUDA-host-injections.yml
eessi-2023.06-eb-4.9.4-2023b-CUDA-host-injections.yml
)
copy_files_by_list ${TOPDIR}/scripts/gpu_support/nvidia/easystacks \
${INSTALL_PREFIX}/scripts/gpu_support/nvidia/easystacks "${host_injections_easystacks[@]}"
# Easystacks to be used to install software in host injections for this EESSI version
host_injections_easystacks_dir=${TOPDIR}/scripts/gpu_support/nvidia/easystacks/${EESSI_VERSION}
if [[ -d ${host_injections_easystacks_dir} ]]; then
host_injections_easystacks=$(find ${host_injections_easystacks_dir} -name eessi-${EESSI_VERSION}-*-CUDA-host-injections.yml -exec basename {} \;)
copy_files_by_list ${host_injections_easystacks_dir} ${INSTALL_PREFIX}/scripts/gpu_support/nvidia/easystacks "${host_injections_easystacks[@]}"
fi

# Copy over EasyBuild hooks file used for installations
hook_files=(
Expand Down
26 changes: 24 additions & 2 deletions load_eessi_extend_module.sh
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@
#
set -o pipefail

EESSI_EXTEND_EASYCONFIG="EESSI-extend-easybuild.eb"

# this script is *sourced*, not executed, so can't rely on $0 to determine path to self or script name
# $BASH_SOURCE points to correct path or script name, see also http://mywiki.wooledge.org/BashFAQ/028
if [ $# -ne 1 ]; then
Expand Down Expand Up @@ -65,11 +67,25 @@ ml_av_eessi_extend_out=${TMPDIR}/ml_av_eessi_extend.out
# need to use --ignore_cache to avoid the case that the module was removed (to be
# rebuilt) but it is still in the cache
module --ignore_cache avail 2>&1 | grep -i EESSI-extend/${EESSI_EXTEND_VERSION} &> ${ml_av_eessi_extend_out}

if [[ $? -eq 0 ]]; then
echo_green ">> Module for EESSI-extend/${EESSI_EXTEND_VERSION} found!"
install_eessi_extend=false
rebuild_eessi_extend=false
# $PR_DIFF should be set by the calling script (EESSI-install-software.sh)
if [[ ! -z ${PR_DIFF} ]] && [[ -f "$PR_DIFF" ]]; then
# check if EESSI-extend easyconfig was modified; if so, we need to rebuild it
grep -q "^+++ b/${EESSI_EXTEND_EASYCONFIG}" "${PR_DIFF}"
if [[ $? -eq 0 ]]; then
rebuild_eessi_extend=true
fi
fi
else
echo_yellow ">> No module yet for EESSI-extend/${EESSI_EXTEND_VERSION}, installing it..."
install_eessi_extend=true
rebuild_eessi_extend=false
fi

if [ "${install_eessi_extend}" = true ] || [ "${rebuild_eessi_extend}" = true ]; then

EB_TMPDIR=${TMPDIR}/ebtmp
echo ">> Using temporary installation of EasyBuild (in ${EB_TMPDIR})..."
Expand Down Expand Up @@ -98,9 +114,15 @@ else
eessi_install_out=${TMPDIR}/eessi_install.out
ok_msg="EESSI-extend/${EESSI_EXTEND_VERSION} installed, let's go!"
fail_msg="Installing EESSI-extend/${EESSI_EXTEND_VERSION} failed, that's not good... (output: ${eessi_install_out})"

# while always adding --try-amend=keep... may do no harm, we could make
# an attempt to figure out if it is needed, e.g., when we are rebuilding
${EB} "EESSI-extend-easybuild.eb" --try-amend=keeppreviousinstall=True 2>&1 | tee ${eessi_install_out}
eb_args=""
if [ "${rebuild_eessi_extend}" = true ]; then
eb_args+="--rebuild"
fi
echo ">> Installing EESSI-extend with '${EB} ${eb_args} ${EESSI_EXTEND_EASYCONFIG}'..."
${EB} ${eb_args} "${EESSI_EXTEND_EASYCONFIG}" 2>&1 | tee ${eessi_install_out}
check_exit_code $? "${ok_msg}" "${fail_msg}"
)

Expand Down
4 changes: 2 additions & 2 deletions run_in_compat_layer_env.sh
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ fi
if [ ! -z ${EESSI_SOFTWARE_SUBDIR_OVERRIDE} ]; then
INPUT="export EESSI_SOFTWARE_SUBDIR_OVERRIDE=${EESSI_SOFTWARE_SUBDIR_OVERRIDE}; ${INPUT}"
fi
if [ ! -z ${EESSI_ACCELERATOR_TARGET} ]; then
INPUT="export EESSI_ACCELERATOR_TARGET=${EESSI_ACCELERATOR_TARGET}; ${INPUT}"
if [ ! -z ${EESSI_ACCELERATOR_TARGET_OVERRIDE} ]; then
INPUT="export EESSI_ACCELERATOR_TARGET_OVERRIDE=${EESSI_ACCELERATOR_TARGET_OVERRIDE}; ${INPUT}"
fi
if [ ! -z ${EESSI_CVMFS_REPO_OVERRIDE} ]; then
INPUT="export EESSI_CVMFS_REPO_OVERRIDE=${EESSI_CVMFS_REPO_OVERRIDE}; ${INPUT}"
Expand Down