Skip to content

Commit 3692346

Browse files
committed
Add new capabilities and new tests
1 parent 1466e39 commit 3692346

8 files changed

Lines changed: 94 additions & 21 deletions

File tree

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
setenv("INSIDE_GITHUB_ACTIONS", "true")
2+
-- Interfere with PATH so Lmod keeps a record
3+
prepend_path("PATH", "/snap/bin")
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
setenv("INSIDE_GITHUB_ACTIONS", "true")
2+
-- Interfere with PATH so Lmod keeps a record
3+
prepend_path("PATH", "/snap/bin")

.github/workflows/scripts/test_init_scripts.sh

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,33 @@ for shell in ${SHELLS[@]}; do
7575
assert_raises 'echo "$EASYBUILD_PATH" | grep -E "$PATTERN"'
7676
echo "$EASYBUILD_PATH" "$PATTERN"
7777

78+
# TEST 6 and 7: Check the various options (EESSI_SYSTEM_DEFAULT_MODULES_APPEND, EESSI_SYSTEM_DEFAULT_MODULES_APPEND, EESSI_EXTRA_MODULEPATH) all work
79+
if [ "$shell" = "csh" ]; then
80+
echo "setenv EESSI_SYSTEM_DEFAULT_MODULES_APPEND append_module" > ~/.cshrc
81+
echo "setenv EESSI_SYSTEM_DEFAULT_MODULES_PREPEND prepend_module" >> ~/.cshrc
82+
echo "setenv EESSI_EXTRA_MODULEPATH .github/workflows/modules" >> ~/.cshrc
83+
echo "source init/lmod/$shell" >> ~/.cshrc
84+
TEST_LMOD_SYSTEM_DEFAULT_MODULES=$($shell -c 'echo $LMOD_SYSTEM_DEFAULT_MODULES')
85+
TEST_MODULEPATH=$($shell -c 'echo $MODULEPATH')
86+
elif [ "$shell" = "fish" ]; then
87+
TEST_LMOD_SYSTEM_DEFAULT_MODULES=$($shell -c 'set -x EESSI_SYSTEM_DEFAULT_MODULES_APPEND append_module ; set -x EESSI_SYSTEM_DEFAULT_MODULES_PREPEND prepend_module ; set -x EESSI_EXTRA_MODULEPATH .github/workflows/modules ; source init/lmod/'"$shell"' 2>/dev/null; echo $LMOD_SYSTEM_DEFAULT_MODULES')
88+
TEST_MODULEPATH=$($shell -c 'set -x EESSI_SYSTEM_DEFAULT_MODULES_APPEND append_module ; set -x EESSI_SYSTEM_DEFAULT_MODULES_PREPEND prepend_module ; set -x EESSI_EXTRA_MODULEPATH .github/workflows/modules ; source init/lmod/'"$shell"' 2>/dev/null; echo $MODULEPATH')
89+
else
90+
TEST_LMOD_SYSTEM_DEFAULT_MODULES=$($shell -c 'export EESSI_SYSTEM_DEFAULT_MODULES_APPEND=append_module ; export EESSI_SYSTEM_DEFAULT_MODULES_PREPEND=prepend_module ; export EESSI_EXTRA_MODULEPATH=.github/workflows/modules ; source init/lmod/'"$shell"' ; echo $LMOD_SYSTEM_DEFAULT_MODULES')
91+
TEST_MODULEPATH=$($shell -c 'export EESSI_SYSTEM_DEFAULT_MODULES_APPEND=append_module ; export EESSI_SYSTEM_DEFAULT_MODULES_PREPEND=prepend_module ; export EESSI_EXTRA_MODULEPATH=.github/workflows/modules ; source init/lmod/'"$shell"' 2>/dev/null; echo $MODULEPATH')
92+
fi
93+
# escape the dots in ${EASYBUILD_VERSION}
94+
LMOD_SYSTEM_DEFAULT_MODULES_PATTERN='^prepend_module:.*:append_module$'
95+
echo "$TEST_LMOD_SYSTEM_DEFAULT_MODULES" AND "$LMOD_SYSTEM_DEFAULT_MODULES_PATTERN"
96+
assert_raises 'echo "$TEST_LMOD_SYSTEM_DEFAULT_MODULES" | grep -E "$LMOD_SYSTEM_DEFAULT_MODULES_PATTERN"'
97+
if [ "$shell" = "fish" ]; then
98+
MODULEPATH_PATTERN='\.github/workflows/modules$'
99+
else
100+
MODULEPATH_PATTERN=':\.github/workflows/modules$'
101+
fi
102+
echo "$TEST_MODULEPATH" AND "$MODULEPATH_PATTERN"
103+
assert_raises 'echo "$TEST_MODULEPATH" | grep -E "$MODULEPATH_PATTERN"'
104+
78105
# End Test Suite
79106
assert_end "source_eessi_$shell"
80107
fi

init/lmod/bash

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,24 @@ EESSI_VERSION="${EESSI_VERSION:-${EESSI_VERSION_DEFAULT}}"
66
# Now that we know our EESSI version let's not forget it
77
export EESSI_VERSION_DEFAULT="$EESSI_VERSION"
88

9-
# ability to predefine elsewhere the default list
10-
LMOD_SYSTEM_DEFAULT_MODULES=${LMOD_SYSTEM_DEFAULT_MODULES:-"EESSI/$EESSI_VERSION"}
9+
# ability to predefine elsewhere the default list (with options to append or prepend)
10+
LMOD_SYSTEM_DEFAULT_MODULES="${EESSI_SYSTEM_DEFAULT_MODULES_PREPEND:+$EESSI_SYSTEM_DEFAULT_MODULES_PREPEND:}EESSI/$EESSI_VERSION${EESSI_SYSTEM_DEFAULT_MODULES_APPEND:+:$EESSI_SYSTEM_DEFAULT_MODULES_APPEND}"
1111
export LMOD_SYSTEM_DEFAULT_MODULES
1212

1313
if [ -z "$__Init_EESSI_Default_Modules" ]; then
1414
export __Init_EESSI_Default_Modules=1;
1515

16+
# Lmod version in 2023.06 has a problem with newer Lmod caches, so let's stick to more recent Lmod
17+
# (has no effect except on Lmod itself, and compatible caches are still created/supported by EESSI)
18+
LMOD_EESSI_VERSION=${EESSI_VERSION/2023.06/2025.06}
19+
1620
# If there is a local Lmod, make it forget about the system set MODULEPATH
1721
unset __LMOD_REF_COUNT_MODULEPATH
1822
# and clear out any memory Lmod might have
1923
unset _ModuleTable001_
2024
# Path to top-level module tree
21-
export MODULEPATH="${EESSI_CVMFS_REPO}/init/modules"
22-
. "${EESSI_CVMFS_REPO}/versions/${EESSI_VERSION}/compat/linux/$(uname -m)/usr/share/Lmod/init/bash"
25+
export MODULEPATH="${EESSI_CVMFS_REPO}/init/modules${EESSI_EXTRA_MODULEPATH:+:$EESSI_EXTRA_MODULEPATH}"
26+
. "${EESSI_CVMFS_REPO}/versions/${LMOD_EESSI_VERSION}/compat/linux/$(uname -m)/usr/share/Lmod/init/bash"
2327
module --initial_load --no_redirect restore
2428
else
2529
module reset

init/lmod/csh

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,34 @@ endif
1010
# Now that we know our EESSI version let's not forget it
1111
setenv EESSI_VERSION_DEFAULT "$EESSI_VERSION"
1212

13-
# ability to predefine elsewhere the default list
14-
if (! $?LMOD_SYSTEM_DEFAULT_MODULES) then
15-
setenv LMOD_SYSTEM_DEFAULT_MODULES "EESSI/${EESSI_VERSION}"
13+
# ability to predefine elsewhere the default list (with options to append or prepend)
14+
set LMOD_SYSTEM_DEFAULT_MODULES = "EESSI/$EESSI_VERSION"
15+
if ( $?EESSI_SYSTEM_DEFAULT_MODULES_PREPEND ) then
16+
set LMOD_SYSTEM_DEFAULT_MODULES = "$EESSI_SYSTEM_DEFAULT_MODULES_PREPEND:$LMOD_SYSTEM_DEFAULT_MODULES"
1617
endif
18+
if ( $?EESSI_SYSTEM_DEFAULT_MODULES_APPEND ) then
19+
set LMOD_SYSTEM_DEFAULT_MODULES = "$LMOD_SYSTEM_DEFAULT_MODULES:$EESSI_SYSTEM_DEFAULT_MODULES_APPEND"
20+
endif
21+
setenv LMOD_SYSTEM_DEFAULT_MODULES "$LMOD_SYSTEM_DEFAULT_MODULES"
1722

1823
if (! $?__Init_EESSI_Default_Modules ) then
1924
setenv __Init_EESSI_Default_Modules 1
2025

26+
# Lmod version in 2023.06 has a problem with newer Lmod caches, so let's stick to more recent Lmod
27+
# (has no effect except on Lmod itself, and compatible caches are still created/supported by EESSI)
28+
set LMOD_EESSI_VERSION "$EESSI_VERSION:s/2023.06/2025.06/"
29+
2130
# If there is a local Lmod, make it forget about the system set MODULEPATH
2231
unsetenv __LMOD_REF_COUNT_MODULEPATH
2332
# and clear out any memory Lmod might have
2433
unsetenv _ModuleTable001_
2534
# Path to top-level module tree
26-
setenv MODULEPATH "${EESSI_CVMFS_REPO}/init/modules"
27-
source "${EESSI_CVMFS_REPO}/versions/${EESSI_VERSION}/compat/linux/`uname -m`/usr/share/Lmod/init/csh"
35+
set modulepath = "$EESSI_CVMFS_REPO/init/modules"
36+
if ( $?EESSI_EXTRA_MODULEPATH && "$EESSI_EXTRA_MODULEPATH" != "" ) then
37+
set modulepath = "$modulepath:$EESSI_EXTRA_MODULEPATH"
38+
endif
39+
setenv MODULEPATH "$modulepath"
40+
source "${EESSI_CVMFS_REPO}/versions/${LMOD_EESSI_VERSION}/compat/linux/`uname -m`/usr/share/Lmod/init/csh"
2841

2942
module --initial_load --no_redirect restore
3043
else

init/lmod/fish

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,34 @@ set EESSI_VERSION (set -q EESSI_VERSION; and echo "$EESSI_VERSION"; or echo "$EE
66
# Now that we know our EESSI version let's not forget it
77
set -x EESSI_VERSION_DEFAULT "$EESSI_VERSION"
88

9-
# ability to predefine elsewhere the default list
10-
set -x LMOD_SYSTEM_DEFAULT_MODULES (set -q LMOD_SYSTEM_DEFAULT_MODULE; and echo "$LMOD_SYSTEM_DEFAULT_MODULE"; or echo "EESSI/$EESSI_VERSION")
9+
# ability to predefine elsewhere the default list (with options to append or prepend)
10+
set LMOD_SYSTEM_DEFAULT_MODULES "EESSI/$EESSI_VERSION"
11+
if set -q EESSI_SYSTEM_DEFAULT_MODULES_PREPEND
12+
set LMOD_SYSTEM_DEFAULT_MODULES "$EESSI_SYSTEM_DEFAULT_MODULES_PREPEND:$LMOD_SYSTEM_DEFAULT_MODULES"
13+
end
14+
if set -q EESSI_SYSTEM_DEFAULT_MODULES_APPEND
15+
set LMOD_SYSTEM_DEFAULT_MODULES "$LMOD_SYSTEM_DEFAULT_MODULES:$EESSI_SYSTEM_DEFAULT_MODULES_APPEND"
16+
end
17+
set -x LMOD_SYSTEM_DEFAULT_MODULES $LMOD_SYSTEM_DEFAULT_MODULES
1118

1219
if test -z "$__Init_EESSI_Default_Modules"
1320
set -x __Init_EESSI_Default_Modules 1
1421

22+
# Lmod version in 2023.06 has a problem with newer Lmod caches, so let's stick to more recent Lmod
23+
# (has no effect except on Lmod itself, and compatible caches are still created/supported by EESSI)
24+
set LMOD_EESSI_VERSION (string replace 2023.06 2025.06 -- $EESSI_VERSION)
25+
1526
# If there is a local Lmod, make it forget about the system set MODULEPATH
1627
set -e __LMOD_REF_COUNT_MODULEPATH
1728
# and clear out any memory Lmod might have
1829
set -e _ModuleTable001_
1930
# Path to top-level module tree
20-
set -x MODULEPATH "$EESSI_CVMFS_REPO"/init/modules
21-
. "$EESSI_CVMFS_REPO"/versions/"$EESSI_VERSION"/compat/linux/(uname -m)/usr/share/Lmod/init/fish
31+
set modulepath "$EESSI_CVMFS_REPO/init/modules"
32+
if set -q EESSI_EXTRA_MODULEPATH; and test -n "$EESSI_EXTRA_MODULEPATH"
33+
set modulepath "$modulepath:$EESSI_EXTRA_MODULEPATH"
34+
end
35+
set -x MODULEPATH $modulepath
36+
. "$EESSI_CVMFS_REPO"/versions/"$LMOD_EESSI_VERSION"/compat/linux/(uname -m)/usr/share/Lmod/init/fish
2237

2338
module --initial_load --no_redirect restore
2439
else

init/lmod/ksh

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,24 @@ EESSI_VERSION="${EESSI_VERSION:-${EESSI_VERSION_DEFAULT}}"
66
# Now that we know our EESSI version let's not forget it
77
export EESSI_VERSION_DEFAULT="$EESSI_VERSION"
88

9-
## ability to predefine elsewhere the default list
10-
LMOD_SYSTEM_DEFAULT_MODULES=${LMOD_SYSTEM_DEFAULT_MODULES:-"EESSI/$EESSI_VERSION"}
9+
# ability to predefine elsewhere the default list (with options to append or prepend)
10+
LMOD_SYSTEM_DEFAULT_MODULES="${EESSI_SYSTEM_DEFAULT_MODULES_PREPEND:+$EESSI_SYSTEM_DEFAULT_MODULES_PREPEND:}EESSI/$EESSI_VERSION${EESSI_SYSTEM_DEFAULT_MODULES_APPEND:+:$EESSI_SYSTEM_DEFAULT_MODULES_APPEND}"
1111
export LMOD_SYSTEM_DEFAULT_MODULES
1212

1313
if [ -z "$__Init_EESSI_Default_Modules" ]; then
1414
export __Init_EESSI_Default_Modules=1;
1515

16+
# Lmod version in 2023.06 has a problem with newer Lmod caches, so let's stick to more recent Lmod
17+
# (has no effect except on Lmod itself, and compatible caches are still created/supported by EESSI)
18+
LMOD_EESSI_VERSION=${EESSI_VERSION/2023.06/2025.06}
19+
1620
# If there is a local Lmod, make it forget about the system set MODULEPATH
1721
unset __LMOD_REF_COUNT_MODULEPATH
1822
# and clear out any memory Lmod might have
1923
unset _ModuleTable001_
2024
# Path to top-level module tree
21-
export MODULEPATH="${EESSI_CVMFS_REPO}/init/modules"
22-
. "${EESSI_CVMFS_REPO}/versions/${EESSI_VERSION}/compat/linux/$(uname -m)/usr/share/Lmod/init/ksh"
25+
export MODULEPATH="${EESSI_CVMFS_REPO}/init/modules${EESSI_EXTRA_MODULEPATH:+:$EESSI_EXTRA_MODULEPATH}"
26+
. "${EESSI_CVMFS_REPO}/versions/${LMOD_EESSI_VERSION}/compat/linux/$(uname -m)/usr/share/Lmod/init/ksh"
2327

2428
module --initial_load --no_redirect restore
2529
else

init/lmod/zsh

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,24 @@ EESSI_VERSION="${EESSI_VERSION:-${EESSI_VERSION_DEFAULT}}"
66
# Now that we know our EESSI version let's not forget it
77
export EESSI_VERSION_DEFAULT="$EESSI_VERSION"
88

9-
# ability to predefine elsewhere the default list
10-
LMOD_SYSTEM_DEFAULT_MODULES=${LMOD_SYSTEM_DEFAULT_MODULES:-"EESSI/$EESSI_VERSION"}
9+
# ability to predefine elsewhere the default list (with options to append or prepend)
10+
LMOD_SYSTEM_DEFAULT_MODULES="${EESSI_SYSTEM_DEFAULT_MODULES_PREPEND:+$EESSI_SYSTEM_DEFAULT_MODULES_PREPEND:}EESSI/$EESSI_VERSION${EESSI_SYSTEM_DEFAULT_MODULES_APPEND:+:$EESSI_SYSTEM_DEFAULT_MODULES_APPEND}"
1111
export LMOD_SYSTEM_DEFAULT_MODULES
1212

1313
if [ -z "$__Init_EESSI_Default_Modules" ]; then
1414
export __Init_EESSI_Default_Modules=1;
1515

16+
# Lmod version in 2023.06 has a problem with newer Lmod caches, so let's stick to more recent Lmod
17+
# (has no effect except on Lmod itself, and compatible caches are still created/supported by EESSI)
18+
LMOD_EESSI_VERSION=${EESSI_VERSION/2023.06/2025.06}
19+
1620
# If there is a local Lmod, make it forget about the system set MODULEPATH
1721
unset __LMOD_REF_COUNT_MODULEPATH
1822
# and clear out any memory Lmod might have
1923
unset _ModuleTable001_
2024
# Path to top-level module tree
21-
export MODULEPATH="${EESSI_CVMFS_REPO}/init/modules"
22-
. "${EESSI_CVMFS_REPO}/versions/${EESSI_VERSION}/compat/linux/$(uname -m)/usr/share/Lmod/init/zsh"
25+
export MODULEPATH="${EESSI_CVMFS_REPO}/init/modules${EESSI_EXTRA_MODULEPATH:+:$EESSI_EXTRA_MODULEPATH}"
26+
. "${EESSI_CVMFS_REPO}/versions/${LMOD_EESSI_VERSION}/compat/linux/$(uname -m)/usr/share/Lmod/init/zsh"
2327

2428
module --initial_load --no_redirect restore
2529
else

0 commit comments

Comments
 (0)