Skip to content

Commit c391499

Browse files
committed
Merge branch '2023.06-software.eessi.io' into 2023.06-software.eessi.io_GROMACS-foss-2023a
2 parents c6957ef + 1045ef0 commit c391499

34 files changed

+1252
-118
lines changed

.github/workflows/scorecards.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ jobs:
3535

3636
steps:
3737
- name: "Checkout code"
38-
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # v3.1.0
38+
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
3939
with:
4040
persist-credentials: false
4141

.github/workflows/test-software.eessi.io.yml

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ on: [push, pull_request, workflow_dispatch]
44
permissions:
55
contents: read # to fetch code (actions/checkout)
66
jobs:
7-
pilot:
7+
check_missing:
88
runs-on: ubuntu-22.04
99
strategy:
1010
fail-fast: false
@@ -22,10 +22,10 @@ jobs:
2222
- x86_64/generic
2323
steps:
2424
- name: Check out software-layer repository
25-
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # v3.1.0
25+
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
2626

2727
- name: Mount EESSI CernVM-FS pilot repository
28-
uses: cvmfs-contrib/github-action-cvmfs@d4641d0d591c9a5c3be23835ced2fb648b44c04b # v3.1
28+
uses: cvmfs-contrib/github-action-cvmfs@55899ca74cf78ab874bdf47f5a804e47c198743c # v4.0
2929
with:
3030
cvmfs_config_package: https://github.com/EESSI/filesystem-layer/releases/download/latest/cvmfs-config-eessi_latest_all.deb
3131
cvmfs_http_proxy: DIRECT
@@ -35,6 +35,9 @@ jobs:
3535
run: |
3636
export EESSI_SOFTWARE_SUBDIR_OVERRIDE=${{matrix.EESSI_SOFTWARE_SUBDIR_OVERRIDE}}
3737
source /cvmfs/software.eessi.io/versions/${{matrix.EESSI_VERSION}}/init/bash
38+
# set $EESSI_CPU_FAMILY to the CPU architecture that corresponds to $EESSI_SOFTWARE_SUBDIR_OVERRIDE (part before the first slash),
39+
# to prevent issues with checks in the Easybuild configuration that use this variable
40+
export EESSI_CPU_FAMILY=${EESSI_SOFTWARE_SUBDIR_OVERRIDE%%/*}
3841
module load EasyBuild
3942
which eb
4043
eb --version
@@ -53,6 +56,9 @@ jobs:
5356
run: |
5457
export EESSI_SOFTWARE_SUBDIR_OVERRIDE=${{matrix.EESSI_SOFTWARE_SUBDIR_OVERRIDE}}
5558
source /cvmfs/software.eessi.io/versions/${{matrix.EESSI_VERSION}}/init/bash
59+
# set $EESSI_CPU_FAMILY to the CPU architecture that corresponds to $EESSI_SOFTWARE_SUBDIR_OVERRIDE (part before the first slash),
60+
# to prevent issues with checks in the Easybuild configuration that use this variable
61+
export EESSI_CPU_FAMILY=${EESSI_SOFTWARE_SUBDIR_OVERRIDE%%/*}
5662
module load EasyBuild
5763
which eb
5864
eb --version

.github/workflows/test_eessi_container_script.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
#- save
2323
steps:
2424
- name: Check out software-layer repository
25-
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # v3.1.0
25+
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
2626

2727
- name: install Apptainer
2828
run: |
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# documentation: https://help.github.com/en/articles/workflow-syntax-for-github-actions
2+
name: Test software licenses
3+
on: [push, pull_request]
4+
permissions:
5+
contents: read # to fetch code (actions/checkout)
6+
jobs:
7+
build:
8+
runs-on: ubuntu-20.04
9+
steps:
10+
- name: Check out software-layer repository
11+
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
12+
13+
- name: set up Python
14+
uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0
15+
with:
16+
python-version: '3.9'
17+
18+
- name: Check software licenses
19+
run: |
20+
python licenses/spdx.py licenses/licenses.json

.github/workflows/tests.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ jobs:
1212
fail-fast: false
1313
steps:
1414
- name: checkout
15-
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # v3.1.0
15+
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
1616

1717
- name: set up Python
18-
uses: actions/setup-python@13ae5bb136fac2878aff31522b9efb785519f984 # v4.3.0
18+
uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0
1919
with:
2020
python-version: ${{matrix.python}}
2121
architecture: x64

.github/workflows/tests_archdetect.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@ jobs:
2222
fail-fast: false
2323
steps:
2424
- name: checkout
25-
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # v3.1.0
25+
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
2626

2727
- name: Mount EESSI CernVM-FS pilot repository
28-
uses: cvmfs-contrib/github-action-cvmfs@d4641d0d591c9a5c3be23835ced2fb648b44c04b # v3.1
28+
uses: cvmfs-contrib/github-action-cvmfs@55899ca74cf78ab874bdf47f5a804e47c198743c # v4.0
2929
with:
3030
cvmfs_config_package: https://github.com/EESSI/filesystem-layer/releases/download/latest/cvmfs-config-eessi_latest_all.deb
3131
cvmfs_http_proxy: DIRECT

.github/workflows/tests_init.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ jobs:
1212
fail-fast: false
1313
steps:
1414
- name: checkout
15-
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # v3.1.0
15+
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
1616

1717
- name: set up Python
18-
uses: actions/setup-python@13ae5bb136fac2878aff31522b9efb785519f984 # v4.3.0
18+
uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0
1919
with:
2020
python-version: ${{matrix.python}}
2121
architecture: x64

.github/workflows/tests_readme.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
runs-on: ubuntu-20.04
1818
steps:
1919
- name: Check out software-layer repository
20-
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # v3.1.0
20+
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
2121

2222
- name: verify if README.md is consistent with EESSI_VERSION from init/eessi_defaults
2323
run: |

.github/workflows/tests_scripts.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ jobs:
2929
runs-on: ubuntu-20.04
3030
steps:
3131
- name: checkout
32-
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # v3.1.0
32+
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
3333

3434
- name: install Apptainer
3535
run: |

EESSI-install-software.sh

Lines changed: 55 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -187,49 +187,70 @@ fi
187187
# assume there's only one diff file that corresponds to the PR patch file
188188
pr_diff=$(ls [0-9]*.diff | head -1)
189189

190-
# use PR patch file to determine in which easystack files stuff was added
191-
for easystack_file in $(cat ${pr_diff} | grep '^+++' | cut -f2 -d' ' | sed 's@^[a-z]/@@g' | grep '^easystacks/.*yml$' | egrep -v 'known-issues|missing'); do
192-
193-
echo -e "Processing easystack file ${easystack_file}...\n\n"
194-
195-
# determine version of EasyBuild module to load based on EasyBuild version included in name of easystack file
196-
eb_version=$(echo ${easystack_file} | sed 's/.*eb-\([0-9.]*\).*/\1/g')
197-
198-
# load EasyBuild module (will be installed if it's not available yet)
199-
source ${TOPDIR}/load_easybuild_module.sh ${eb_version}
190+
# install any additional required scripts
191+
# order is important: these are needed to install a full CUDA SDK in host_injections
192+
# for now, this just reinstalls all scripts. Note the most elegant, but works
193+
${TOPDIR}/install_scripts.sh --prefix ${EESSI_PREFIX}
200194

201-
${EB} --show-config
195+
# Install full CUDA SDK in host_injections
196+
# Hardcode this for now, see if it works
197+
# TODO: We should make a nice yaml and loop over all CUDA versions in that yaml to figure out what to install
198+
${EESSI_PREFIX}/scripts/gpu_support/nvidia/install_cuda_host_injections.sh -c 12.1.1 --accept-cuda-eula
202199

203-
echo_green "All set, let's start installing some software with EasyBuild v${eb_version} in ${EASYBUILD_INSTALLPATH}..."
200+
# Install drivers in host_injections
201+
# TODO: this is commented out for now, because the script assumes that nvidia-smi is available and works;
202+
# if not, an error is produced, and the bot flags the whole build as failed (even when not installing GPU software)
203+
# ${EESSI_PREFIX}/scripts/gpu_support/nvidia/link_nvidia_host_libraries.sh
204204

205-
if [ -f ${easystack_file} ]; then
206-
echo_green "Feeding easystack file ${easystack_file} to EasyBuild..."
207-
208-
${EB} --easystack ${TOPDIR}/${easystack_file} --robot
209-
ec=$?
210-
211-
# copy EasyBuild log file if EasyBuild exited with an error
212-
if [ ${ec} -ne 0 ]; then
213-
eb_last_log=$(unset EB_VERBOSE; eb --last-log)
214-
# copy to current working directory
215-
cp -a ${eb_last_log} .
216-
echo "Last EasyBuild log file copied from ${eb_last_log} to ${PWD}"
217-
# copy to build logs dir (with context added)
218-
copy_build_log "${eb_last_log}" "${build_logs_dir}"
205+
# use PR patch file to determine in which easystack files stuff was added
206+
changed_easystacks=$(cat ${pr_diff} | grep '^+++' | cut -f2 -d' ' | sed 's@^[a-z]/@@g' | grep '^easystacks/.*yml$' | egrep -v 'known-issues|missing')
207+
if [ -z ${changed_easystacks} ]; then
208+
echo "No missing installations, party time!" # Ensure the bot report success, as there was nothing to be build here
209+
else
210+
for easystack_file in ${changed_easystacks}; do
211+
212+
echo -e "Processing easystack file ${easystack_file}...\n\n"
213+
214+
# determine version of EasyBuild module to load based on EasyBuild version included in name of easystack file
215+
eb_version=$(echo ${easystack_file} | sed 's/.*eb-\([0-9.]*\).*/\1/g')
216+
217+
# load EasyBuild module (will be installed if it's not available yet)
218+
source ${TOPDIR}/load_easybuild_module.sh ${eb_version}
219+
220+
${EB} --show-config
221+
222+
echo_green "All set, let's start installing some software with EasyBuild v${eb_version} in ${EASYBUILD_INSTALLPATH}..."
223+
224+
if [ -f ${easystack_file} ]; then
225+
echo_green "Feeding easystack file ${easystack_file} to EasyBuild..."
226+
227+
${EB} --easystack ${TOPDIR}/${easystack_file} --robot
228+
ec=$?
229+
230+
# copy EasyBuild log file if EasyBuild exited with an error
231+
if [ ${ec} -ne 0 ]; then
232+
eb_last_log=$(unset EB_VERBOSE; eb --last-log)
233+
# copy to current working directory
234+
cp -a ${eb_last_log} .
235+
echo "Last EasyBuild log file copied from ${eb_last_log} to ${PWD}"
236+
# copy to build logs dir (with context added)
237+
copy_build_log "${eb_last_log}" "${build_logs_dir}"
238+
fi
239+
240+
$TOPDIR/check_missing_installations.sh ${TOPDIR}/${easystack_file}
241+
else
242+
fatal_error "Easystack file ${easystack_file} not found!"
219243
fi
220-
221-
$TOPDIR/check_missing_installations.sh ${TOPDIR}/${easystack_file}
222-
else
223-
fatal_error "Easystack file ${easystack_file} not found!"
224-
fi
225-
226-
done
244+
245+
done
246+
fi
227247

228248
### add packages here
229249

230250
echo ">> Creating/updating Lmod cache..."
231251
export LMOD_RC="${EASYBUILD_INSTALLPATH}/.lmod/lmodrc.lua"
232-
if [ ! -f $LMOD_RC ]; then
252+
lmodrc_changed=$(cat ${pr_diff} | grep '^+++' | cut -f2 -d' ' | sed 's@^[a-z]/@@g' | grep '^create_lmodrc.py$' > /dev/null; echo $?)
253+
if [ ! -f $LMOD_RC ] || [ ${lmodrc_changed} == '0' ]; then
233254
python3 $TOPDIR/create_lmodrc.py ${EASYBUILD_INSTALLPATH}
234255
check_exit_code $? "$LMOD_RC created" "Failed to create $LMOD_RC"
235256
fi

0 commit comments

Comments
 (0)