|
# documentation: https://help.github.com/en/articles/workflow-syntax-for-github-actions |
|
name: Tests for eessi_archdetect.sh |
|
on: |
|
push: |
|
branches: [ "main" ] |
|
pull_request: |
|
permissions: |
|
contents: read # to fetch code (actions/checkout) |
|
jobs: |
|
build: |
|
runs-on: ubuntu-24.04 |
|
strategy: |
|
matrix: |
|
proc_cpuinfo: |
|
- x86_64/intel/haswell/archspec-linux-E5-2680-v3 |
|
- x86_64/intel/sapphirerapids/AWS-Rocky8-8488C |
|
- x86_64/intel/skylake_avx512/archspec-linux-6132 |
|
- x86_64/amd/zen2/Azure-CentOS7-7V12 |
|
- x86_64/amd/zen3/Azure-CentOS7-7V73X |
|
- x86_64/amd/zen4/Azure-Alma8-9V33X |
|
- x86_64/amd/zen4/Shinx-RHEL8-9654 |
|
- x86_64/amd/zen5/AWS-Rocky9-9R45 |
|
- x86_64/amd/zen5/RUG-AlmaLinux8-9575F |
|
- aarch64/a64fx/Deucalion-Rocky85 |
|
- aarch64/neoverse_n1/Azure-Ubuntu20-Altra |
|
- aarch64/neoverse_n1/AWS-awslinux-graviton2 |
|
- aarch64/neoverse_v1/AWS-awslinux-graviton3 |
|
- aarch64/nvidia/grace/Jureca-Rocky95 |
|
- aarch64/google/axion/GCP-axion |
|
- riscv64/sifive/premier-Ubuntu24 |
|
- riscv64/spacemit/bananaf3-Armbian |
|
- riscv64/spacemit/bananaf3-k6.6 |
|
# commented out since these targets are currently not supported in software.eessi.io repo |
|
# (and some tests assume that the corresponding subdirectory in software layer is there) |
|
# - ppc64le/power9le/unknown-power9le |
|
fail-fast: false |
|
steps: |
|
- name: checkout |
|
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 eessi_archdetect.sh |
|
run: | |
|
export EESSI_MACHINE_TYPE=${{matrix.proc_cpuinfo}} |
|
export EESSI_MACHINE_TYPE=${EESSI_MACHINE_TYPE%%/*} |
|
export EESSI_PROC_CPUINFO=./tests/archdetect/${{matrix.proc_cpuinfo}}.cpuinfo |
|
# check that printing of best match works correctly |
|
CPU_ARCH=$(./init/eessi_archdetect.sh cpupath) |
|
if [[ $CPU_ARCH == "$( cat ./tests/archdetect/${{matrix.proc_cpuinfo}}.output )" ]]; then |
|
echo "Test for ${{matrix.proc_cpuinfo}} PASSED: $CPU_ARCH" |
|
else |
|
echo "Test for ${{matrix.proc_cpuinfo}} FAILED: $CPU_ARCH" >&2 |
|
exit 1 |
|
fi |
|
# check that $EESSI_SOFTWARE_SUBDIR_OVERRIDE is honored |
|
export EESSI_SOFTWARE_SUBDIR_OVERRIDE='dummy/cpu' |
|
CPU_ARCH=$(./init/eessi_archdetect.sh cpupath) |
|
if [[ $CPU_ARCH == "${EESSI_SOFTWARE_SUBDIR_OVERRIDE}" ]]; then |
|
echo "Test for picking up on \$EESSI_SOFTWARE_SUBDIR_OVERRIDE PASSED" |
|
else |
|
echo "Test for picking up on \$EESSI_SOFTWARE_SUBDIR_OVERRIDE FAILED" >&2 |
|
exit 1 |
|
fi |
|
unset EESSI_SOFTWARE_SUBDIR_OVERRIDE |
|
# check that printing of all matches works correctly (-a option for cpupath action) |
|
CPU_ARCHES=$(./init/eessi_archdetect.sh -a cpupath) |
|
if [[ $CPU_ARCHES == "$( cat ./tests/archdetect/${{matrix.proc_cpuinfo}}.all.output )" ]]; then |
|
echo "Test for ${{matrix.proc_cpuinfo}} PASSED: $CPU_ARCHES" |
|
else |
|
echo "Test for ${{matrix.proc_cpuinfo}} FAILED: $CPU_ARCHES" >&2 |
|
exit 1 |
|
fi |
|
# Check all those architectures actually exist (if this EESSI version has been populated already) |
|
if [ -d ${EESSI_PREFIX}/software/linux ]; then |
|
for dir in $(echo "$CPU_ARCHES" | tr ':' '\n'); do |
|
# Search all EESSI versions as we may drop support at some point |
|
ls -d ${EESSI_PREFIX}/software/linux/${dir} |
|
done |
|
fi |