88permissions :
99 contents : read # to fetch code (actions/checkout)
1010env :
11+ EESSI_VERSION : ' 2023.06'
1112 EESSI_ACCELERATOR_TARGETS : |
1213 x86_64/amd/zen2:
1314 - nvidia/cc80
1415 x86_64/amd/zen3:
1516 - nvidia/cc80
1617jobs :
1718 check_missing :
18- runs-on : ubuntu-24.04
1919 strategy :
2020 fail-fast : false
2121 matrix :
22- EESSI_VERSION :
23- - 2023.06
24- EESSI_SOFTWARE_SUBDIR_OVERRIDE :
25- - aarch64/generic
26- - aarch64/neoverse_n1
27- - aarch64/neoverse_v1
28- - x86_64/amd/zen2
29- - x86_64/amd/zen3
30- - x86_64/amd/zen4
31- - x86_64/intel/haswell
32- - x86_64/intel/sapphirerapids
33- - x86_64/intel/skylake_avx512
34- - x86_64/generic
22+ include :
23+ # Arm CPU targets
24+ - runs_on : ubuntu-24.04-arm
25+ EESSI_SOFTWARE_SUBDIR_OVERRIDE : aarch64/generic
26+ - runs_on : ubuntu-24.04-arm
27+ EESSI_SOFTWARE_SUBDIR_OVERRIDE : aarch64/neoverse_n1
28+ - runs_on : ubuntu-24.04-arm
29+ EESSI_SOFTWARE_SUBDIR_OVERRIDE : aarch64/neoverse_v1
30+ - runs_on : ubuntu-24.04-arm
31+ EESSI_SOFTWARE_SUBDIR_OVERRIDE : aarch64/nvidia/grace
32+ # x86_64 CPU targets
33+ - runs_on : ubuntu-24.04
34+ EESSI_SOFTWARE_SUBDIR_OVERRIDE : x86_64/amd/zen2
35+ - runs_on : ubuntu-24.04
36+ EESSI_SOFTWARE_SUBDIR_OVERRIDE : x86_64/amd/zen3
37+ - runs_on : ubuntu-24.04
38+ EESSI_SOFTWARE_SUBDIR_OVERRIDE : x86_64/amd/zen4
39+ - runs_on : ubuntu-24.04
40+ EESSI_SOFTWARE_SUBDIR_OVERRIDE : x86_64/intel/haswell
41+ - runs_on : ubuntu-24.04
42+ EESSI_SOFTWARE_SUBDIR_OVERRIDE : x86_64/intel/sapphirerapids
43+ - runs_on : ubuntu-24.04
44+ EESSI_SOFTWARE_SUBDIR_OVERRIDE : x86_64/intel/skylake_avx512
45+ - runs_on : ubuntu-24.04
46+ EESSI_SOFTWARE_SUBDIR_OVERRIDE : x86_64/intel/icelake
47+ - runs_on : ubuntu-24.04
48+ EESSI_SOFTWARE_SUBDIR_OVERRIDE : x86_64/intel/cascadelake
49+ - runs_on : ubuntu-24.04
50+ EESSI_SOFTWARE_SUBDIR_OVERRIDE : x86_64/generic
51+ runs-on : ${{ matrix.runs_on }}
3552 steps :
3653 - name : Check out software-layer repository
3754 uses : actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
55+ with :
56+ fetch-depth : 0 # Fetch all history for all branches and tags
57+
58+ - name : Show host system info
59+ run : |
60+ echo "/proc/cpuinfo:"
61+ cat /proc/cpuinfo
62+ echo
63+ echo "lscpu:"
64+ lscpu
3865
3966 - name : Mount EESSI CernVM-FS pilot repository
4067 uses : cvmfs-contrib/github-action-cvmfs@55899ca74cf78ab874bdf47f5a804e47c198743c # v4.0
@@ -46,21 +73,23 @@ jobs:
4673 - name : Test check_missing_installations.sh script
4774 run : |
4875 export EESSI_SOFTWARE_SUBDIR_OVERRIDE=${{matrix.EESSI_SOFTWARE_SUBDIR_OVERRIDE}}
49- source /cvmfs/software.eessi.io/versions/${{matrix. EESSI_VERSION} }/init/bash
76+ source /cvmfs/software.eessi.io/versions/${EESSI_VERSION}/init/bash
5077 # set $EESSI_CPU_FAMILY to the CPU architecture that corresponds to $EESSI_SOFTWARE_SUBDIR_OVERRIDE (part before the first slash),
5178 # to prevent issues with checks in the Easybuild configuration that use this variable
5279 export EESSI_CPU_FAMILY=${EESSI_SOFTWARE_SUBDIR_OVERRIDE%%/*}
53- module load EasyBuild
54- which eb
55- eb --version
56- export EESSI_PREFIX=/cvmfs/software.eessi.io/versions/${{matrix.EESSI_VERSION}}
80+ export EESSI_PREFIX=/cvmfs/software.eessi.io/versions/${EESSI_VERSION}
5781 export EESSI_OS_TYPE=linux
5882 env | grep ^EESSI | sort
5983
6084 # first check the CPU-only builds for this CPU target
61- echo "just run check_missing_installations.sh (should use easystacks/software.eessi.io/${{matrix.EESSI_VERSION}}/eessi-${{matrix.EESSI_VERSION}}-*.yml with latest EasyBuild release)"
62- for easystack_file in $(EESSI_VERSION=${{matrix.EESSI_VERSION}} .github/workflows/scripts/only_latest_easystacks.sh); do
63- echo "check missing installations for ${easystack_file}..."
85+ echo "first run check_missing_installations.sh for CPU-only builds"
86+ for easystack_file in $(EESSI_VERSION=${EESSI_VERSION} .github/workflows/scripts/only_latest_easystacks.sh); do
87+ eb_version=$(echo ${easystack_file} | sed 's/.*eb-\([0-9.]*\).*.yml/\1/g')
88+ echo "check missing installations for ${easystack_file} with EasyBuild ${eb_version}..."
89+ module purge
90+ module load EasyBuild/${eb_version}
91+ which eb
92+ eb --version
6493 ./check_missing_installations.sh ${easystack_file}
6594 ec=$?
6695 if [[ ${ec} -ne 0 ]]; then echo "missing installations found for ${easystack_file}!" >&2; exit ${ec}; fi
@@ -74,8 +103,13 @@ jobs:
74103 for accel in ${accelerators}; do
75104 module use ${EESSI_SOFTWARE_PATH}/accel/${accel}/modules/all
76105 echo "checking missing installations for accelerator ${accel} using modulepath: ${MODULEPATH}"
77- for easystack_file in $(EESSI_VERSION=${{matrix.EESSI_VERSION}} ACCEL_EASYSTACKS=1 .github/workflows/scripts/only_latest_easystacks.sh); do
78- echo "check missing installations for ${easystack_file}..."
106+ for easystack_file in $(EESSI_VERSION=${EESSI_VERSION} ACCEL_EASYSTACKS=1 .github/workflows/scripts/only_latest_easystacks.sh); do
107+ eb_version=$(echo ${easystack_file} | sed 's/.*eb-\([0-9.]*\).*.yml/\1/g')
108+ echo "check missing installations for ${easystack_file} with EasyBuild ${eb_version}..."
109+ module purge
110+ module load EasyBuild/${eb_version}
111+ which eb
112+ eb --version
79113 ./check_missing_installations.sh ${easystack_file}
80114 ec=$?
81115 if [[ ${ec} -ne 0 ]]; then echo "missing installations found for ${easystack_file}!" >&2; exit ${ec}; fi
@@ -87,14 +121,14 @@ jobs:
87121 - name : Test check_missing_installations.sh with missing package (GCC/8.3.0)
88122 run : |
89123 export EESSI_SOFTWARE_SUBDIR_OVERRIDE=${{matrix.EESSI_SOFTWARE_SUBDIR_OVERRIDE}}
90- source /cvmfs/software.eessi.io/versions/${{matrix. EESSI_VERSION} }/init/bash
124+ source /cvmfs/software.eessi.io/versions/${EESSI_VERSION}/init/bash
91125 # set $EESSI_CPU_FAMILY to the CPU architecture that corresponds to $EESSI_SOFTWARE_SUBDIR_OVERRIDE (part before the first slash),
92126 # to prevent issues with checks in the Easybuild configuration that use this variable
93127 export EESSI_CPU_FAMILY=${EESSI_SOFTWARE_SUBDIR_OVERRIDE%%/*}
94128 module load EasyBuild
95129 which eb
96130 eb --version
97- export EESSI_PREFIX=/cvmfs/software.eessi.io/versions/${{matrix. EESSI_VERSION} }
131+ export EESSI_PREFIX=/cvmfs/software.eessi.io/versions/${EESSI_VERSION}
98132 export EESSI_OS_TYPE=linux
99133 env | grep ^EESSI | sort
100134 # create dummy easystack file with a single entry (something that is not installed in EESSI)
@@ -115,3 +149,28 @@ jobs:
115149 echo "captured missing package; test PASSED"
116150 exit 0
117151 fi
152+
153+ - name : Check that EasyBuild hook is up to date
154+ if : ${{ github.event_name == 'pull_request' }}
155+ run : |
156+ FILE="eb_hooks.py"
157+ TEMP_FILE="$(mktemp)"
158+
159+ # Fetch base branch
160+ git fetch origin ${{ github.base_ref }}
161+
162+ # Check if the hooks has changed in the PR
163+ if git diff --name-only origin/${{ github.base_ref }}...HEAD | grep -q "^$FILE$"; then
164+ echo "Hooks changed in PR. Using PR version."
165+ cp "$FILE" "$TEMP_FILE"
166+ else
167+ echo "File not changed in PR. Using default branch version."
168+ git show origin/${{ github.base_ref }}:$FILE > "$TEMP_FILE"
169+ fi
170+
171+ # Compare the hooks to what is shipped in the repository
172+ # (it is overkill, but harmless, to do this for every architecture)
173+ export EESSI_SOFTWARE_SUBDIR_OVERRIDE=${{matrix.EESSI_SOFTWARE_SUBDIR_OVERRIDE}}
174+ source /cvmfs/software.eessi.io/versions/${EESSI_VERSION}/init/bash
175+ module load EESSI-extend
176+ diff "$TEMP_FILE" "$EASYBUILD_HOOKS"
0 commit comments