Skip to content

Commit 4c9b5d0

Browse files
author
Richard Top
committed
Merge branch 'nessi.no-2023.06' of github.com:NorESSI/software-layer into nessi-2023.06-OSU-Micro-Benchmarks-7.2-gompi-2023a-wCUDA
2 parents bb0d6ea + 6f7d639 commit 4c9b5d0

13 files changed

Lines changed: 241 additions & 29 deletions

EESSI-extend-2023.06-easybuild.eb

Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
easyblock = 'Bundle'
2+
3+
name = 'NESSI-extend'
4+
version = '2023.06'
5+
# May have different ways to extend NESSI in the future (manually, other tools,...)
6+
versionsuffix = '-easybuild'
7+
8+
homepage = 'https://documentation.sigma2.no/software/nessi_eessi.html'
9+
10+
description = """
11+
NESSI is an innovative service to make optimized scientific software
12+
installations available on any machine anywhere in the world in near
13+
real-time - without the need to build or install the software. NESSI
14+
works similarly to popular streaming services for videos and music.
15+
16+
NESSI is a sibling of EESSI, the European Environment for Scientific
17+
Software Installations (see https://eessi.io/docs).
18+
19+
This module allows you to extend NESSI using the same configuration for
20+
EasyBuild as NESSI itself uses. A number of environment variables control the
21+
behaviour of the module:
22+
- NESSI_USER_INSTALL can be set to a location to install modules for use by
23+
the user only. The location must already exist on the filesystem.
24+
- NESSI_PROJECT_INSTALL can be set to a location to install modules for use by
25+
a project. The location must already exist on the filesystem and you should
26+
ensure that the location has the correct Linux group and the SGID permission
27+
is set on that directory (`chmod g+s $NESSI_PROJECT_INSTALL`) so that all
28+
members of the group have permission to read and write installations.
29+
- NESSI_SITE_INSTALL is either defined or not and cannot be used with another
30+
environment variable. A site installation is done in a defined location and
31+
any installations there are (by default) world readable.
32+
- NESSI_CVMFS_INSTALL is either defined or not and cannot be used with another
33+
environment variable. A CVMFS installation targets a defined location which
34+
will be ingested into CVMFS and is only useful for CVMFS administrators.
35+
- If none of the environment variables above are defined, a NESSI_USER_INSTALL
36+
is assumed with a value of $HOME/NESSI
37+
If both NESSI_USER_INSTALL and NESSI_PROJECT_INSTALL are defined, both sets of
38+
installations are exposed, but new installations are created as user
39+
installations.
40+
"""
41+
42+
toolchain = SYSTEM
43+
44+
# All the dependencies we filter in NESSI
45+
local_deps_to_filter = "Autoconf,Automake,Autotools,binutils,bzip2,DBus,flex,gettext,gperf,help2man,intltool,libreadline,libtool,M4,makeinfo,ncurses,util-linux,XZ,zlib"
46+
local_arch_specific_deps_to_filter = {'aarch64': ',yasm', 'x86_64': ''}
47+
local_deps_to_filter += local_arch_specific_deps_to_filter[ARCH]
48+
49+
# Set the universal EasyBuild variables
50+
modextravars = {
51+
'EASYBUILD_FILTER_DEPS': local_deps_to_filter,
52+
'EASYBUILD_IGNORE_OSDEPS': '1',
53+
'EASYBUILD_DEBUG': '1',
54+
'EASYBUILD_TRACE': '1',
55+
'EASYBUILD_ZIP_LOGS': 'bzip2',
56+
'EASYBUILD_RPATH': '1',
57+
'EASYBUILD_FILTER_ENV_VARS': 'LD_LIBRARY_PATH',
58+
'EASYBUILD_READ_ONLY_INSTALLDIR': '1',
59+
'EASYBUILD_MODULE_EXTENSIONS': '1',
60+
'EASYBUILD_EXPERIMENTAL': '1',
61+
}
62+
63+
# Need a few other variables, but they are more dynamic
64+
# EASYBUILD_SYSROOT=${EPREFIX}
65+
# EASYBUILD_PREFIX=${WORKDIR}/easybuild
66+
# EASYBUILD_HOOKS=${EESSI_PREFIX}/init/easybuild/eb_hooks.py
67+
# EASYBUILD_INSTALLPATH=${EESSI_PREFIX}/software/${EESSI_OS_TYPE}/${EESSI_SOFTWARE_SUBDIR}
68+
# EASYBUILD_SOURCEPATH=${WORKDIR}/easybuild/sources:${EESSI_SOURCEPATH}
69+
#
70+
# And also some optional ones based on the kind of installation
71+
# EASYBUILD_SET_GID_BIT
72+
# EASYBUILD_GROUP_WRITABLE_INSTALLDIR
73+
# EASYBUILD_UMASK
74+
# EASYBUILD_STICKY_BIT
75+
modluafooter = """
76+
if (mode() == "load") then
77+
-- Use a working directory for temporary build files
78+
if (os.getenv("WORKING_DIR") == nil) then
79+
LmodMessage("-- Using /tmp/$USER as a temporary working directory for installations, you can override this by setting the environment variable WORKING_DIR and reloading the module (e.g., /dev/shm is a common option)")
80+
end
81+
end
82+
working_dir = os.getenv("WORKING_DIR") or pathJoin("/tmp", os.getenv("USER"))
83+
-- Gather the EPREFIX to use as a sysroot
84+
sysroot = os.getenv("EESSI_EPREFIX")
85+
-- Use an installation prefix that we _should_ have write access to
86+
if (os.getenv("NESSI_CVMFS_INSTALL") ~= nil) then
87+
-- Make sure no other NESSI install environment variables are set
88+
if ((os.getenv("NESSI_SITE_INSTALL") ~= nil) or (os.getenv("NESSI_PROJECT_INSTALL") ~= nil) or (os.getenv("NESSI_USER_INSTALL") ~= nil)) then
89+
LmodError("You cannot use NESSI_CVMFS_INSTALL in combination with any other NESSI_*_INSTALL environment variables")
90+
end
91+
eessi_cvmfs_install = true
92+
easybuild_installpath = os.getenv("EESSI_SOFTWARE_PATH")
93+
elseif (os.getenv("NESSI_SITE_INSTALL") ~= nil) then
94+
-- Make sure no other NESSI install environment variables are set
95+
if ((os.getenv("NESSI_PROJECT_INSTALL") ~= nil) or (os.getenv("NESSI_USER_INSTALL") ~= nil)) then
96+
LmodError("You cannot use NESSI_SITE_INSTALL in combination with any other NESSI_*_INSTALL environment variables")
97+
end
98+
easybuild_installpath = string.gsub(os.getenv("EESSI_SOFTWARE_PATH"), 'versions', 'host_injections')
99+
else
100+
-- Deal with user and project installs
101+
project_install = os.getenv("NESSI_PROJECT_INSTALL")
102+
project_modulepath = nil
103+
if (project_install ~= nil) then
104+
-- Check the folder exists
105+
if not isDir(project_install) then
106+
LmodError("The location of NESSI_PROJECT_INSTALL (" .. project_install .. ") does not exist or is not a folder")
107+
end
108+
if (mode() == "load") then
109+
LmodMessage("Configuring for use of NESSI_PROJECT_INSTALL under " .. project_install)
110+
end
111+
easybuild_installpath = string.gsub(os.getenv("EESSI_SOFTWARE_PATH"), os.getenv("EESSI_CVMFS_REPO"), project_install)
112+
project_modulepath = pathJoin(easybuild_installpath, 'modules', 'all')
113+
end
114+
user_install = os.getenv("NESSI_USER_INSTALL")
115+
user_modulepath = nil
116+
if (user_install ~= nil) then
117+
-- Check the folder exists
118+
if not isDir(user_install) then
119+
LmodError("The location of NESSI_USER_INSTALL (" .. user_install .. ") does not exist or is not a folder")
120+
end
121+
elseif (user_install == nil) and (project_install == nil) then
122+
-- No need to check for existence when we use a HOME subdir
123+
user_install = pathJoin(os.getenv("HOME"), "nessi")
124+
end
125+
if (user_install ~= nil) then
126+
if (mode() == "load") then
127+
LmodMessage("Configuring for use of NESSI_USER_INSTALL under " .. user_install)
128+
end
129+
easybuild_installpath = string.gsub(os.getenv("EESSI_SOFTWARE_PATH"), os.getenv("EESSI_CVMFS_REPO"), user_install)
130+
user_modulepath = pathJoin(easybuild_installpath, 'modules', 'all')
131+
end
132+
end
133+
if (mode() == "load") then
134+
LmodMessage("-- To create installations for NESSI, you _must_ have write permissions to " .. easybuild_installpath)
135+
-- Advise them to reuse sources
136+
if (os.getenv("EASYBUILD_SOURCEPATH") == nil) then
137+
LmodMessage("-- You may wish to configure a sources directory for EasyBuild (for example, via setting the environment variable EASYBUILD_SOURCEPATH) to allow you to reuse existing sources for packages.")
138+
end
139+
end
140+
-- Set the relevant universal environment variables for EasyBuild
141+
setenv ("EASYBUILD_SYSROOT", sysroot)
142+
setenv ("EASYBUILD_PREFIX", pathJoin(working_dir, "easybuild"))
143+
setenv ("EASYBUILD_INSTALLPATH", easybuild_installpath)
144+
setenv ("EASYBUILD_HOOKS", pathJoin(os.getenv("EESSI_PREFIX"), "init", "easybuild", "eb_hooks.py"))
145+
setenv ("EASYBUILD_UMASK", "002")
146+
147+
-- Set all related environment variables if we have project or user installations (including extending MODULEPATH)
148+
if (user_modulepath ~= nil) then
149+
-- Use a more restrictive umask for this case
150+
setenv ("EASYBUILD_UMASK", "022")
151+
setenv ("EASYBUILD_STICKY_BIT", "1")
152+
-- configure MODULEPATH
153+
if (project_modulepath ~= nil) then
154+
prepend_path("MODULEPATH", project_modulepath)
155+
end
156+
prepend_path("MODULEPATH", user_modulepath)
157+
elseif (project_modulepath ~= nil) then
158+
setenv ("EASYBUILD_SET_GID_BIT", "1")
159+
setenv ("EASYBUILD_GROUP_WRITABLE_INSTALLDIR", "1")
160+
setenv ("EASYBUILD_STICKY_BIT", "0")
161+
-- configure MODULEPATH
162+
prepend_path("MODULEPATH", project_modulepath)
163+
end
164+
-- Make sure EasyBuild itself is loaded
165+
if not ( isloaded("EasyBuild") ) then
166+
load("EasyBuild")
167+
end
168+
"""
169+
170+
moduleclass = 'devel'

EESSI-install-software.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,9 @@ fi
214214
# if not, an error is produced, and the bot flags the whole build as failed (even when not installing GPU software)
215215
# ${EESSI_PREFIX}/scripts/gpu_support/nvidia/link_nvidia_host_libraries.sh
216216

217+
# Don't run the Lmod GPU driver check when doing builds (may not have a GPU, and it's not relevant for vanilla builds anyway)
218+
export EESSI_OVERRIDE_GPU_CHECK=1
219+
217220
# use PR patch file to determine in which easystack files stuff was added
218221
changed_easystacks=$(cat ${pr_diff} | grep '^+++' | cut -f2 -d' ' | sed 's@^[a-z]/@@g' | grep '^easystacks/.*yml$' | egrep -v 'known-issues|missing')
219222
if [ -z "${changed_easystacks}" ]; then

configure_easybuild

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,12 @@ if [[ "$EESSI_CPU_FAMILY" == "aarch64" ]]; then
3333
DEPS_TO_FILTER="${DEPS_TO_FILTER},Yasm"
3434
fi
3535

36+
# Version 2023.06 of NESSI ships PSM2 in the compat layer, so we can filter this out while retaining support for OFA fabric
37+
# (longer term this is probably not the right move as PSM2 should be configured with accelerator support, hence the restricted version)
38+
if [[ "$EESSI_VERSION" == "2023.06" ]]; then
39+
DEPS_TO_FILTER="${DEPS_TO_FILTER},PSM2"
40+
fi
41+
3642
export EASYBUILD_FILTER_DEPS=$DEPS_TO_FILTER
3743

3844
export EASYBUILD_MODULE_EXTENSIONS=1

create_lmodsitepackage.py

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,19 @@
2121
end
2222
2323
local function from_eessi_prefix(t)
24-
-- eessi_prefix is the prefix with official EESSI modules
25-
-- e.g. /cvmfs/software.eessi.io/versions/2023.06
24+
-- eessi_prefix is the prefix with official NESSI modules
25+
-- e.g. /cvmfs/pilot.nessi.no/versions/2023.06
2626
local eessi_prefix = os.getenv("EESSI_PREFIX")
2727
28-
-- If EESSI_PREFIX wasn't defined, we cannot check if this module was from the EESSI environment
28+
-- If EESSI_PREFIX wasn't defined, we cannot check if this module was from the NESSI environment
2929
-- In that case, we assume it isn't, otherwise EESSI_PREFIX would (probably) have been set
3030
if eessi_prefix == nil then
3131
return False
3232
else
3333
-- NOTE: exact paths for site so may need to be updated later.
34-
-- See https://github.com/EESSI/software-layer/pull/371
34+
-- See https://github.com/NorESSI/software-layer/pull/358
3535
-- eessi_prefix_host_injections is the prefix with site-extensions (i.e. additional modules)
36-
-- to the official EESSI modules, e.g. /cvmfs/software.eessi.io/host_injections/2023.06
36+
-- to the official NESSI modules, e.g. /cvmfs/pilot.nessi.no/host_injections/2023.06
3737
local eessi_prefix_host_injections = string.gsub(eessi_prefix, 'versions', 'host_injections')
3838
3939
-- Check if the full modulepath starts with the eessi_prefix_*
@@ -42,9 +42,9 @@
4242
end
4343
4444
local function load_site_specific_hooks()
45-
-- This function will be run after the EESSI hooks are registered
45+
-- This function will be run after the NESSI hooks are registered
4646
-- It will load a local SitePackage.lua that is architecture independent (if it exists) from e.g.
47-
-- /cvmfs/software.eessi.io/host_injections/2023.06/.lmod/SitePackage.lua
47+
-- /cvmfs/pilot.nessi.no/host_injections/2023.06/.lmod/SitePackage.lua
4848
-- That can define a new hook
4949
--
5050
-- function site_specific_load_hook(t)
@@ -58,15 +58,15 @@
5858
-- site_specific_load_hook(t)
5959
-- end
6060
--
61-
-- Over overwrite the EESSI hook entirely:
61+
-- Or overwrite the NESSI hook entirely:
6262
--
6363
-- hook.register("load", final_load_hook)
6464
--
6565
-- Note that the appending procedure can be simplified once we have an lmod >= 8.7.36
6666
-- See https://github.com/TACC/Lmod/pull/696#issuecomment-1998765722
6767
--
6868
-- Subsequently, this function will look for an architecture-specific SitePackage.lua, e.g. from
69-
-- /cvmfs/software.eessi.io/host_injections/2023.06/software/linux/x86_64/amd/zen2/.lmod/SitePackage.lua
69+
-- /cvmfs/pilot.nessi.no/host_injections/2023.06/software/linux/x86_64/amd/zen2/.lmod/SitePackage.lua
7070
-- This can then register an additional hook, e.g.
7171
--
7272
-- function arch_specific_load_hook(t)
@@ -112,7 +112,7 @@
112112
local simpleName = string.match(t.modFullName, "(.-)/")
113113
-- If we try to load CUDA itself, check if the full CUDA SDK was installed on the host in host_injections.
114114
-- This is required for end users to build additional CUDA software. If the full SDK isn't present, refuse
115-
-- to load the CUDA module and print an informative message on how to set up GPU support for EESSI
115+
-- to load the CUDA module and print an informative message on how to set up GPU support for NESSI
116116
local refer_to_docs = "For more information on how to do this, see https://www.eessi.io/docs/gpu/.\\n"
117117
if simpleName == 'CUDA' then
118118
-- get the full host_injections path
@@ -121,26 +121,29 @@
121121
local cudaEasyBuildDir = hostInjections .. "/software/" .. t.modFullName .. "/easybuild"
122122
local cudaDirExists = isDir(cudaEasyBuildDir)
123123
if not cudaDirExists then
124-
local advice = "but while the module file exists, the actual software is not entirely shipped with EESSI "
125-
advice = advice .. "due to licencing. You will need to install a full copy of the CUDA SDK where EESSI "
124+
local advice = "but while the module file exists, the actual software is not entirely shipped with NESSI "
125+
advice = advice .. "due to licencing. You will need to install a full copy of the CUDA SDK where NESSI "
126126
advice = advice .. "can find it.\\n"
127127
advice = advice .. refer_to_docs
128128
LmodError("\\nYou requested to load ", simpleName, " ", advice)
129129
end
130130
end
131-
-- when loading CUDA enabled modules check if the necessary driver libraries are accessible to the EESSI linker,
131+
-- when loading CUDA enabled modules check if the necessary driver libraries are accessible to the NESSI linker,
132132
-- otherwise, refuse to load the requested module and print error message
133-
local haveGpu = mt:haveProperty(simpleName,"arch","gpu")
134-
if haveGpu then
133+
local checkGpu = mt:haveProperty(simpleName,"arch","gpu")
134+
local overrideGpuCheck = os.getenv("EESSI_OVERRIDE_GPU_CHECK")
135+
if checkGpu and (overrideGpuCheck == nil) then
135136
local arch = os.getenv("EESSI_CPU_FAMILY") or ""
136-
local cudaVersionFile = "/cvmfs/software.eessi.io/host_injections/nvidia/" .. arch .. "/latest/cuda_version.txt"
137-
local cudaDriverFile = "/cvmfs/software.eessi.io/host_injections/nvidia/" .. arch .. "/latest/libcuda.so"
137+
local cudaVersionFile = "/cvmfs/pilot.nessi.no/host_injections/nvidia/" .. arch .. "/latest/cuda_version.txt"
138+
local cudaDriverFile = "/cvmfs/pilot.nessi.no/host_injections/nvidia/" .. arch .. "/latest/libcuda.so"
138139
local cudaDriverExists = isFile(cudaDriverFile)
139140
local singularityCudaExists = isFile("/.singularity.d/libs/libcuda.so")
140141
if not (cudaDriverExists or singularityCudaExists) then
141142
local advice = "which relies on the CUDA runtime environment and driver libraries. "
142143
advice = advice .. "In order to be able to use the module, you will need "
143-
advice = advice .. "to make sure EESSI can find the GPU driver libraries on your host system.\\n"
144+
advice = advice .. "to make sure NESSI can find the GPU driver libraries on your host system. You can "
145+
advice = advice .. "override this check by setting the environment variable EESSI_OVERRIDE_GPU_CHECK but "
146+
advice = advice .. "the loaded application will not be able to execute on your system.\\n"
144147
advice = advice .. refer_to_docs
145148
LmodError("\\nYou requested to load ", simpleName, " ", advice)
146149
else
@@ -162,7 +165,7 @@
162165
if driver_libs_need_update == true then
163166
local advice = "but the module you want to load requires CUDA " .. cudaVersion_req .. ". "
164167
advice = advice .. "Please update your CUDA driver libraries and then "
165-
advice = advice .. "let EESSI know about the update.\\n"
168+
advice = advice .. "let NESSI know about the update.\\n"
166169
advice = advice .. refer_to_docs
167170
LmodError("\\nYour driver CUDA version is ", cudaVersion, " ", advice)
168171
end
@@ -174,7 +177,7 @@
174177
-- Combine both functions into a single one, as we can only register one function as load hook in lmod
175178
-- Also: make it non-local, so it can be imported and extended by other lmodrc files if needed
176179
function eessi_load_hook(t)
177-
-- Only apply CUDA hooks if the loaded module is in the EESSI prefix
180+
-- Only apply CUDA hooks if the loaded module is in the NESSI prefix
178181
-- This avoids getting an Lmod Error when trying to load a CUDA module from a local software stack
179182
if from_eessi_prefix(t) then
180183
eessi_cuda_enabled_load_hook(t)
@@ -183,7 +186,7 @@
183186
184187
hook.register("load", eessi_load_hook)
185188
186-
-- Note that this needs to happen at the end, so that any EESSI specific hooks can be overwritten by the site
189+
-- Note that this needs to happen at the end, so that any NESSI specific hooks can be overwritten by the site
187190
load_site_specific_hooks()
188191
"""
189192

create_tarball.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ fi
2828

2929
overlay_upper_dir="${eessi_tmpdir}/overlay-upper"
3030

31-
software_dir_overlay="${overlay_upper_dir}/versions/${eessi_version}/software/${os}/${cpu_arch_subdir}"
31+
software_dir_overlay="${overlay_upper_dir}/versions/${eessi_version}"
3232
if [ ! -d ${software_dir_overlay} ]; then
3333
echo "Software directory overlay ${software_dir_overlay} does not exist?!" >&2
3434
exit 3

easystacks/pilot.nessi.no/2023.06/eessi-2023.06-eb-4.9.1-001-system.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ easyconfigs:
22
- EasyBuild-4.9.1.eb:
33
options:
44
from-pr: 20299
5+
- EESSI-extend-2023.06-easybuild.eb
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# 2024.05.15
2+
# Originally shipped version forgot to bump the gmxapi version and source
3+
# tarball, it was still using an older version from the 2023.3 tarball. Looking
4+
# at https://gitlab.com/gromacs/gromacs/-/blob/v2024.1/python_packaging/gmxapi/src/gmxapi/version.py?ref_type=tags#L68,
5+
# the 2024.1 release includes gmxapi 0.5.0.
6+
#
7+
# This also introduced a new build dependency on scikit-build-core for GROMACS
8+
#
9+
easyconfigs:
10+
- scikit-build-core-0.9.3-GCCcore-13.2.0.eb:
11+
options:
12+
# from-commit: 61d07bff09afe63cfe1ae35dc58a0c8be01eed62
13+
# see https://github.com/easybuilders/easybuild-easyconfigs/pull/20526
14+
from-pr: 20526
15+
- GROMACS-2024.1-foss-2023b.eb:
16+
options:
17+
# from-commit: a0a467a88506c765a93a96b20d7a8fcb01d46b24
18+
# see https://github.com/easybuilders/easybuild-easyconfigs/pull/20522
19+
from-pr: 20522

init/Magic_Castle/bash

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ source $(dirname "$BASH_SOURCE")/../eessi_environment_variables
1010

1111
# Provide a clean MODULEPATH
1212
export MODULEPATH_ROOT=$EESSI_MODULEPATH
13-
export MODULEPATH=$EESSI_MODULEPATH
13+
export MODULEPATH=$EESSI_SITE_MODULEPATH:$EESSI_MODULEPATH
1414

1515
# Extensions are too many, let's not print them by default (requires Lmod 8.4.12)
1616
export LMOD_AVAIL_EXTENSIONS=no
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# ARM CPU architecture specifications
1+
# ARM CPU architecture specifications (see https://gpages.juszkiewicz.com.pl/arm-socs-table/arm-socs.html for guidance)
22
# Software path in EESSI | Vendor ID | List of defining CPU features
3-
"aarch64/neoverse_n1" "ARM" "asimd" # Ampere Altra
4-
"aarch64/neoverse_n1" "" "asimd" # AWS Graviton2
5-
"aarch64/neoverse_v1" "ARM" "asimd svei8mm"
6-
"aarch64/neoverse_v1" "" "asimd svei8mm" # AWS Graviton3
3+
"aarch64/neoverse_n1" "ARM" "asimddp" # Ampere Altra
4+
"aarch64/neoverse_n1" "" "asimddp" # AWS Graviton2
5+
"aarch64/neoverse_v1" "ARM" "asimddp svei8mm"
6+
"aarch64/neoverse_v1" "" "asimddp svei8mm" # AWS Graviton3

init/bash

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ if [ $? -eq 0 ]; then
2626
# prepend location of modules for EESSI software stack to $MODULEPATH
2727
show_msg "Prepending $EESSI_MODULEPATH to \$MODULEPATH..."
2828
module use $EESSI_MODULEPATH
29+
show_msg "Prepending site path $EESSI_SITE_MODULEPATH to \$MODULEPATH..."
30+
module use $EESSI_SITE_MODULEPATH
2931

3032
#show_msg ""
3133
#show_msg "*** Known problems in the ${EESSI_VERSION} software stack ***"

0 commit comments

Comments
 (0)