Skip to content

Commit 143341c

Browse files
committed
Make all shell initialisations more robust
1 parent 5f36708 commit 143341c

5 files changed

Lines changed: 88 additions & 49 deletions

File tree

init/lmod/bash

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,24 @@ EESSI_CVMFS_REPO="${EESSI_CVMFS_REPO:-/cvmfs/software.eessi.io}"
33
# Choose an EESSI version
44
EESSI_VERSION_DEFAULT="__EESSI_VERSION_DEFAULT__"
55
EESSI_VERSION="${EESSI_VERSION:-${EESSI_VERSION_DEFAULT}}"
6-
# Path to top-level module tree
7-
export MODULEPATH="${EESSI_CVMFS_REPO}/versions/${EESSI_VERSION}/init/modules"
8-
. "${EESSI_CVMFS_REPO}/versions/${EESSI_VERSION}/compat/linux/$(uname -m)/usr/share/Lmod/init/bash"
6+
# Now that we know our EESSI version let's not forget it
7+
export EESSI_VERSION_DEFAULT="$EESSI_VERSION"
98

10-
if [ -z "$__Init_Default_Modules" ]; then
11-
export __Init_Default_Modules=1;
9+
# ability to predefine elsewhere the default list
10+
LMOD_SYSTEM_DEFAULT_MODULES=${LMOD_SYSTEM_DEFAULT_MODULES:-"EESSI/$EESSI_VERSION"}
11+
export LMOD_SYSTEM_DEFAULT_MODULES
1212

13-
## ability to predefine elsewhere the default list
14-
LMOD_SYSTEM_DEFAULT_MODULES=${LMOD_SYSTEM_DEFAULT_MODULES:-"EESSI/$EESSI_VERSION"}
15-
export LMOD_SYSTEM_DEFAULT_MODULES
16-
module --initial_load --no_redirect restore
13+
if [ -z "$__Init_EESSI_Default_Modules" ]; then
14+
export __Init_EESSI_Default_Modules=1;
15+
16+
# If there is a local Lmod, make it forget about the system set MODULEPATH
17+
unset __LMOD_REF_COUNT_MODULEPATH
18+
# and clear out any memory Lmod might have
19+
unset _ModuleTable001_
20+
# 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"
23+
module --initial_load --no_redirect restore
1724
else
18-
module refresh
25+
module reset
1926
fi

init/lmod/csh

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,26 @@ setenv EESSI_VERSION_DEFAULT "__EESSI_VERSION_DEFAULT__"
77
if (! $?EESSI_VERSION) then
88
set EESSI_VERSION = "${EESSI_VERSION_DEFAULT}"
99
endif
10-
# Path to top-level module tree
11-
setenv MODULEPATH "${EESSI_CVMFS_REPO}/versions/${EESSI_VERSION}/init/modules"
12-
source "${EESSI_CVMFS_REPO}/versions/${EESSI_VERSION}/compat/linux/`uname -m`/usr/share/Lmod/init/csh"
10+
# Now that we know our EESSI version let's not forget it
11+
setenv EESSI_VERSION_DEFAULT="$EESSI_VERSION"
1312

14-
if (! $?__Init_Default_Modules ) then
15-
setenv __Init_Default_Modules 1
13+
# ability to predefine elsewhere the default list
14+
if (! $?LMOD_SYSTEM_DEFAULT_MODULES) then
15+
setenv LMOD_SYSTEM_DEFAULT_MODULES "EESSI/${EESSI_VERSION}"
16+
endif
17+
18+
if (! $?__Init_EESSI_Default_Modules ) then
19+
setenv __Init_EESSI_Default_Modules 1
20+
21+
# If there is a local Lmod, make it forget about the system set MODULEPATH
22+
unsetenv __LMOD_REF_COUNT_MODULEPATH
23+
# and clear out any memory Lmod might have
24+
unsetenv _ModuleTable001_
25+
# 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"
1628

17-
# ability to predefine elsewhere the default list
18-
if (! $?LMOD_SYSTEM_DEFAULT_MODULES) then
19-
setenv LMOD_SYSTEM_DEFAULT_MODULES "EESSI/${EESSI_VERSION}"
20-
endif
2129
module --initial_load --no_redirect restore
2230
else
23-
module refresh
31+
module reset
2432
endif

init/lmod/fish

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,24 @@ set EESSI_CVMFS_REPO (set -q EESSI_CVMFS_REPO; and echo "$EESSI_CVMFS_REPO"; or
33
# Choose an EESSI version
44
set EESSI_VERSION_DEFAULT "__EESSI_VERSION_DEFAULT__"
55
set EESSI_VERSION (set -q EESSI_VERSION; and echo "$EESSI_VERSION"; or echo "$EESSI_VERSION_DEFAULT")
6-
# Path to top-level module tree
7-
set -x MODULEPATH "$EESSI_CVMFS_REPO"/versions/"$EESSI_VERSION"/init/modules
8-
. "$EESSI_CVMFS_REPO"/versions/"$EESSI_VERSION"/compat/linux/(uname -m)/usr/share/Lmod/init/fish
6+
# Now that we know our EESSI version let's not forget it
7+
set -x EESSI_VERSION_DEFAULT "$EESSI_VERSION"
98

10-
if test -z "$__Init_Default_Modules"
11-
export __Init_Default_Modules=1;
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")
1211

13-
## ability to predefine elsewhere the default list
14-
set -x LMOD_SYSTEM_DEFAULT_MODULES (set -q LMOD_SYSTEM_DEFAULT_MODULE; and echo "$LMOD_SYSTEM_DEFAULT_MODULE"; or echo "EESSI/$EESSI_VERSION")
15-
module --initial_load --no_redirect restore
12+
if test -z "$__Init_EESSI_Default_Modules"
13+
set -x __Init_EESSI_Default_Modules 1
14+
15+
# If there is a local Lmod, make it forget about the system set MODULEPATH
16+
set -e __LMOD_REF_COUNT_MODULEPATH
17+
# and clear out any memory Lmod might have
18+
set -e _ModuleTable001_
19+
# 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
22+
23+
module --initial_load --no_redirect restore
1624
else
17-
module refresh
25+
module reset
1826
end

init/lmod/ksh

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,25 @@ EESSI_CVMFS_REPO="${EESSI_CVMFS_REPO:-/cvmfs/software.eessi.io}"
33
# Choose an EESSI version
44
EESSI_VERSION_DEFAULT="__EESSI_VERSION_DEFAULT__"
55
EESSI_VERSION="${EESSI_VERSION:-${EESSI_VERSION_DEFAULT}}"
6-
# Path to top-level module tree
7-
export MODULEPATH="${EESSI_CVMFS_REPO}/versions/${EESSI_VERSION}/init/modules"
8-
. "${EESSI_CVMFS_REPO}/versions/${EESSI_VERSION}/compat/linux/$(uname -m)/usr/share/Lmod/init/ksh"
6+
# Now that we know our EESSI version let's not forget it
7+
export EESSI_VERSION_DEFAULT="$EESSI_VERSION"
98

10-
if [ -z "$__Init_Default_Modules" ]; then
11-
export __Init_Default_Modules=1;
9+
## ability to predefine elsewhere the default list
10+
LMOD_SYSTEM_DEFAULT_MODULES=${LMOD_SYSTEM_DEFAULT_MODULES:-"EESSI/$EESSI_VERSION"}
11+
export LMOD_SYSTEM_DEFAULT_MODULES
12+
13+
if [ -z "$__Init_EESSI_Default_Modules" ]; then
14+
export __Init_EESSI_Default_Modules=1;
1215

13-
## ability to predefine elsewhere the default list
14-
LMOD_SYSTEM_DEFAULT_MODULES=${LMOD_SYSTEM_DEFAULT_MODULES:-"EESSI/$EESSI_VERSION"}
15-
export LMOD_SYSTEM_DEFAULT_MODULES
16-
module --initial_load --no_redirect restore
16+
# If there is a local Lmod, make it forget about the system set MODULEPATH
17+
unset __LMOD_REF_COUNT_MODULEPATH
18+
# and clear out any memory Lmod might have
19+
unset _ModuleTable001_
20+
# 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"
23+
24+
module --initial_load --no_redirect restore
1725
else
18-
module refresh
26+
module reset
1927
fi

init/lmod/zsh

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,25 @@ EESSI_CVMFS_REPO="${EESSI_CVMFS_REPO:-/cvmfs/software.eessi.io}"
33
# Choose an EESSI version
44
EESSI_VERSION_DEFAULT="__EESSI_VERSION_DEFAULT__"
55
EESSI_VERSION="${EESSI_VERSION:-${EESSI_VERSION_DEFAULT}}"
6-
# Path to top-level module tree
7-
export MODULEPATH="${EESSI_CVMFS_REPO}/versions/${EESSI_VERSION}/init/modules"
8-
. "${EESSI_CVMFS_REPO}/versions/${EESSI_VERSION}/compat/linux/$(uname -m)/usr/share/Lmod/init/zsh"
6+
# Now that we know our EESSI version let's not forget it
7+
export EESSI_VERSION_DEFAULT="$EESSI_VERSION"
98

10-
if [ -z "$__Init_Default_Modules" ]; then
11-
export __Init_Default_Modules=1;
9+
# ability to predefine elsewhere the default list
10+
LMOD_SYSTEM_DEFAULT_MODULES=${LMOD_SYSTEM_DEFAULT_MODULES:-"EESSI/$EESSI_VERSION"}
11+
export LMOD_SYSTEM_DEFAULT_MODULES
1212

13-
## ability to predefine elsewhere the default list
14-
LMOD_SYSTEM_DEFAULT_MODULES=${LMOD_SYSTEM_DEFAULT_MODULES:-"EESSI/$EESSI_VERSION"}
15-
export LMOD_SYSTEM_DEFAULT_MODULES
16-
module --initial_load --no_redirect restore
13+
if [ -z "$__Init_EESSI_Default_Modules" ]; then
14+
export __Init_EESSI_Default_Modules=1;
15+
16+
# If there is a local Lmod, make it forget about the system set MODULEPATH
17+
unset __LMOD_REF_COUNT_MODULEPATH
18+
# and clear out any memory Lmod might have
19+
unset _ModuleTable001_
20+
# 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"
23+
24+
module --initial_load --no_redirect restore
1725
else
18-
module refresh
26+
module reset
1927
fi

0 commit comments

Comments
 (0)