EESSI bash initialization to module file #10
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# documentation: https://help.github.com/en/articles/workflow-syntax-for-github-actions | |
name: Tests for eessi_module_functionality in software.eessi.io | |
on: | |
push: | |
branches: [ "*-software.eessi.io" ] | |
pull_request: | |
permissions: | |
contents: read # to fetch code (actions/checkout) | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
EESSI_VERSION: | |
- 2023.06 | |
steps: | |
- name: Check out software-layer repository | |
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
- name: Mount EESSI CernVM-FS pilot repository | |
uses: cvmfs-contrib/github-action-cvmfs@55899ca74cf78ab874bdf47f5a804e47c198743c # v4.0 | |
with: | |
cvmfs_config_package: https://github.com/EESSI/filesystem-layer/releases/download/latest/cvmfs-config-eessi_latest_all.deb | |
cvmfs_http_proxy: DIRECT | |
cvmfs_repositories: software.eessi.io | |
- name: Test for archdetect_cpu functionality with only one valid path | |
run: | | |
sudo sh -c 'printf "deb-src http://archive.ubuntu.com/ubuntu/ focal main restricted | |
deb-src http://archive.ubuntu.com/ubuntu/ focal-updates main restricted | |
deb-src http://archive.ubuntu.com/ubuntu/ focal universe | |
deb-src http://archive.ubuntu.com/ubuntu/ focal-updates universe | |
deb-src http://archive.ubuntu.com/ubuntu/ focal multiverse | |
deb-src http://archive.ubuntu.com/ubuntu/ focal-updates multiverse" > /etc/apt/sources.list' | |
sudo apt update | |
sudo apt -y build-dep lmod | |
lua_ver=$(which lua | xargs realpath -e | xargs basename) | |
sudo apt -y install lib${lua_ver}-dev tcl-dev | |
sudo apt --fix-broken install | |
export MODULEPATH=/cvmfs/software.eessi.io/versions/${{matrix.EESSI_VERSION}}/init/modules/:$MODULEPATH | |
CPU_ARCH=$(./init/eessi_archdetect.sh cpupath) | |
export EESSI_ARCHDETECT_OPTIONS=dummy/cpu:$CPU_ARCH:dummy1/cpu1 | |
if module load EESSI/${{matrix.EESSI_VERSION}}; then | |
if [[ $CPU_ARCH == "${EESSI_SOFTWARE_SUBDIR}" ]]; then | |
echo "Test for picking up on \$archdetect_cpu PASSED" | |
else | |
echo "Test for picking up on \$archdetect_cpu FAILED" >&2 | |
exit 1 | |
fi | |
module unload EESSI/${{matrix.EESSI_VERSION}} | |
fi | |
unset EESSI_ARCHDETECT_OPTIONS | |
- name: Test for archdetect_cpu functionality with invalid path | |
run: | | |
export MODULEPATH=/cvmfs/software.eessi.io/versions/${{matrix.EESSI_VERSION}}/init/modules/:$MODULEPATH | |
export EESSI_ARCHDETECT_OPTIONS=dummy/cpu | |
outfile=outfile.txt | |
module load EESSI/${{matrix.EESSI_VERSION}} > $outfile 2>&1 | |
result=$(grep "Software" $outfile) | |
if [[ "$result" == *"Software directory check for the detected architecture failed"* ]]; then | |
echo "Test for picking up invalid path on \$archdetect_cpu PASSED" | |
else | |
echo "Test for picking up invalid path on \$archdetect_cpu FAILED" >&2 | |
exit 1 | |
fi | |
unset EESSI_ARCHDETECT_OPTIONS | |
- name: Test for expected variables after loading EESSI module | |
run: | | |
export MODULEPATH=/cvmfs/software.eessi.io/versions/${{matrix.EESSI_VERSION}}/init/modules/:$MODULEPATH | |
moduleoutfile=moduleout.txt | |
sourceoutfile=sourceout.txt | |
module load EESSI/${{matrix.EESSI_VERSION}} | |
env | grep -E '^(EESSI_S|EESSI_C)' | sort | > ${moduleoutfile} | |
module unload EESSI/${{matrix.EESSI_VERSION}} | |
source /cvmfs/software.eessi.io/versions/${{matrix.EESSI_VERSION}}/init/bash | |
env | grep -E '^(EESSI_S|EESSI_C)' | sort | > ${sourceoutfile} | |
if (diff ${moduleoutfile} ${sourceoutfile} > /dev/null); then | |
echo "Test for checking env variables PASSED" | |
else | |
echo "Test for checking env variables FAILED" >&2 | |
exit 1 | |
fi | |