@@ -12,17 +12,20 @@ jobs:
1212 strategy :
1313 fail-fast : false
1414 matrix :
15- EESSI_VERSION :
16- - ' 2023.06'
17- - ' 2025.06'
15+ include :
16+ - eessi_version : ' 2023.06'
17+ rebuild_software : " BCFtools-1.18-GCC-12.3.0.eb"
18+ - eessi_version : ' 2025.06'
19+ rebuild_software : " make-4.4.1-GCCcore-13.3.0.eb"
20+
1821 steps :
1922 - name : Check out software-layer repository
2023 uses : actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
2124
2225 - name : Mount EESSI CernVM-FS repository
2326 uses : eessi/github-action-eessi@v3
2427 with :
25- eessi_stack_version : ${{matrix.EESSI_VERSION }}
28+ eessi_stack_version : ${{matrix.eessi_version }}
2629 use_eessi_module : true
2730
2831 - name : Install the EESSI-extend shipped with the repository
3841 check_disallowed_env_prefix EASYBUILD_
3942
4043 # Load the EESSI module
41- module load EESSI/${{matrix.EESSI_VERSION }}
44+ module load EESSI/${{matrix.eessi_version }}
4245 check_disallowed_env_prefix EASYBUILD_
4346
4447 # Load EasyBuild to install EESSI-extend
5053
5154 # Verify that we can pick the installed version up
5255 module use $MY_INSTALLATION_PATH/modules/all
53- module load EESSI-extend/${{matrix.EESSI_VERSION }}-easybuild
56+ module load EESSI-extend/${{matrix.eessi_version }}-easybuild
5457 echo $EBROOTEESSIMINEXTEND | grep $MY_INSTALLATION_PATH || { echo "ERROR: Installed version of EESSI-extend not picked up (loaded $EBROOTEESSIMINEXTEND)" >&2; exit 1; }
58+ # Do a test rebuild (with default and local hooks)
59+ echo "Testing a rebuild using the hooks shipped with EESSI"
60+ eb --rebuild ${{matrix.rebuild_software}}
61+ echo "Testing a rebuild using the hooks in the current branch"
62+ eb --rebuild --hooks=./eb_hooks.py ${{matrix.rebuild_software}}
63+ # Proceed with unload and checking the environment variables
5564 module unload EESSI-extend
5665 # That should have unset all EasyBuild envvars (including EASYBUILD_PREFIX)
5766 check_disallowed_env_prefix EASYBUILD_
@@ -68,19 +77,20 @@ jobs:
6877
6978 # Let's start from a clean slate
7079 module --force purge
71- module load EESSI/${{matrix.EESSI_VERSION }}
80+ module load EESSI/${{matrix.eessi_version }}
7281 # Access the installed EESSI-extend
7382 module use "$MY_INSTALLATION_PATH"/modules/all
7483 check_disallowed_env_prefix EASYBUILD_
7584
7685 # Configure for CVMFS install
86+ echo "Checking EESSI-extend CVMFS install"
7787 export EESSI_CVMFS_INSTALL=1
78- module load EESSI-extend/${{matrix.EESSI_VERSION }}-easybuild
88+ module load EESSI-extend/${{matrix.eessi_version }}-easybuild
7989 # check some common EasyBuild settings
8090 check_env_var "EASYBUILD_READ_ONLY_INSTALLDIR" "1"
8191 check_env_var "EASYBUILD_ALLOW_LOADED_MODULES" "EasyBuild,EESSI-extend"
8292 check_env_var "EASYBUILD_SYSROOT" "$EESSI_EPREFIX"
83- check_env_var "EASYBUILD_HOOKS" "/cvmfs/software.eessi.io/versions/${{matrix.EESSI_VERSION }}/init/easybuild/eb_hooks.py"
93+ check_env_var "EASYBUILD_HOOKS" "/cvmfs/software.eessi.io/versions/${{matrix.eessi_version }}/init/easybuild/eb_hooks.py"
8494 check_env_var "EASYBUILD_RPATH" "1"
8595 check_env_var "EASYBUILD_FILTER_ENV_VARS" "LD_LIBRARY_PATH"
8696 # check some specific ones
92102 check_env_var "EASYBUILD_FAIL_ON_MOD_FILES_GCCCORE" "1"
93103 check_env_var "EASYBUILD_LOCAL_VAR_NAMING_CHECK" "error"
94104 # Check some EESSI version specific settings
95- if [[ "${{ matrix.EESSI_VERSION }}" != "2023.06" ]]; then
105+ if [[ "${{ matrix.eessi_version }}" != "2023.06" ]]; then
96106 check_env_var "EASYBUILD_PREFER_PYTHON_SEARCH_PATH" "EBPYTHONPREFIXES"
97107 check_env_var "EASYBUILD_MODULE_SEARCH_PATH_HEADERS" "include_paths"
98108 check_env_var "EASYBUILD_SEARCH_PATH_CPP_HEADERS" "flags"
@@ -105,8 +115,9 @@ jobs:
105115 unset EESSI_CVMFS_INSTALL
106116
107117 # Now configure for a site
118+ echo "Checking EESSI-extend site install"
108119 export EESSI_SITE_INSTALL=1
109- module load EESSI-extend/${{matrix.EESSI_VERSION }}-easybuild
120+ module load EESSI-extend/${{matrix.eessi_version }}-easybuild
110121 # check some specific envvars
111122 check_env_var "EASYBUILD_INSTALLPATH" "$EESSI_SITE_SOFTWARE_PATH"
112123 check_env_var "EASYBUILD_UMASK" "022"
@@ -118,8 +129,9 @@ jobs:
118129 unset EESSI_SITE_INSTALL
119130
120131 # Now for a project
132+ echo "Checking EESSI-extend project install"
121133 export EESSI_PROJECT_INSTALL="$MY_INSTALLATION_PATH"
122- module load EESSI-extend/${{matrix.EESSI_VERSION }}-easybuild
134+ module load EESSI-extend/${{matrix.eessi_version }}-easybuild
123135 # check some specific envvars
124136 export EXPECTED_INSTALLATION_PATH="$MY_INSTALLATION_PATH/versions/$EESSI_VERSION/software/linux/$EESSI_SOFTWARE_SUBDIR"
125137 check_env_var "EASYBUILD_INSTALLPATH" "$EXPECTED_INSTALLATION_PATH"
@@ -133,9 +145,10 @@ jobs:
133145 unset EESSI_PROJECT_INSTALL
134146
135147 # Now for a user
148+ echo "Checking EESSI-extend user install"
136149 export EESSI_USER_INSTALL="$MY_INSTALLATION_PATH/$USER"
137150 mkdir -p $EESSI_USER_INSTALL # must exist
138- module load EESSI-extend/${{matrix.EESSI_VERSION }}-easybuild
151+ module load EESSI-extend/${{matrix.eessi_version }}-easybuild
139152 # check some specific envvars
140153 export EXPECTED_INSTALLATION_PATH="$MY_INSTALLATION_PATH/$USER/versions/$EESSI_VERSION/software/linux/$EESSI_SOFTWARE_SUBDIR"
141154 check_env_var "EASYBUILD_INSTALLPATH" "$EXPECTED_INSTALLATION_PATH"
@@ -163,66 +176,86 @@ jobs:
163176 # Let's start from a clean slate
164177 module --force purge
165178 export EESSI_ACCELERATOR_TARGET_OVERRIDE=$STORED_EESSI_ACCELERATOR_TARGET_OVERRIDE
166- module load EESSI/${{matrix.EESSI_VERSION }}
179+ module load EESSI/${{matrix.eessi_version }}
167180 # Access the installed EESSI-extend
168181 module use "$MY_INSTALLATION_PATH"/modules/all
169182 check_disallowed_env_prefix EASYBUILD_
170183
171184 # Configure for CVMFS install
185+ echo "Checking EESSI-extend CVMFS install"
172186 export EESSI_CVMFS_INSTALL=1
173- module load EESSI-extend/${{matrix.EESSI_VERSION }}-easybuild
187+ module load EESSI-extend/${{matrix.eessi_version }}-easybuild
174188 check_env_var "EASYBUILD_INSTALLPATH" "$EESSI_SOFTWARE_PATH" # installation path should be the same unless we ask for an explicit GPU installation
189+ check_env_var "EESSI_ACCELERATOR_TARGET" "$STORED_EESSI_ACCELERATOR_TARGET_OVERRIDE"
175190 check_env_var "EASYBUILD_CUDA_COMPUTE_CAPABILITIES" "$STORED_CUDA_CC"
191+ module unload EESSI-extend
176192 export EESSI_ACCELERATOR_INSTALL=1
177- module load EESSI-extend/${{matrix.EESSI_VERSION }}-easybuild # reload for an actual GPU installation
193+ module load EESSI-extend/${{matrix.eessi_version }}-easybuild # reload for an actual GPU installation
178194 check_env_var "EASYBUILD_INSTALLPATH" "${EESSI_SOFTWARE_PATH}/${EESSI_ACCELERATOR_TARGET_OVERRIDE}"
195+ check_env_var "EESSI_ACCELERATOR_TARGET" "$STORED_EESSI_ACCELERATOR_TARGET_OVERRIDE"
196+ check_env_var "EASYBUILD_CUDA_COMPUTE_CAPABILITIES" "$STORED_CUDA_CC"
179197 # unload and make sure the environment is clean again
180198 module unload EESSI-extend
181199 check_disallowed_env_prefix EASYBUILD_
182200 unset EESSI_ACCELERATOR_INSTALL
183201 unset EESSI_CVMFS_INSTALL
184202
185203 # Now configure for a site
204+ echo "Checking EESSI-extend site install"
186205 export EESSI_SITE_INSTALL=1
187- module load EESSI-extend/${{matrix.EESSI_VERSION }}-easybuild
206+ module load EESSI-extend/${{matrix.eessi_version }}-easybuild
188207 check_env_var "EASYBUILD_INSTALLPATH" "$EESSI_SITE_SOFTWARE_PATH" # installation path should be the same unless we ask for an explicit GPU installation
208+ check_env_var "EESSI_ACCELERATOR_TARGET" "$STORED_EESSI_ACCELERATOR_TARGET_OVERRIDE"
189209 check_env_var "EASYBUILD_CUDA_COMPUTE_CAPABILITIES" "$STORED_CUDA_CC"
210+ module unload EESSI-extend
190211 export EESSI_ACCELERATOR_INSTALL=1
191- module load EESSI-extend/${{matrix.EESSI_VERSION }}-easybuild # reload for an actual GPU installation
212+ module load EESSI-extend/${{matrix.eessi_version }}-easybuild # reload for an actual GPU installation
192213 check_env_var "EASYBUILD_INSTALLPATH" "${EESSI_SITE_SOFTWARE_PATH}/${EESSI_ACCELERATOR_TARGET_OVERRIDE}"
214+ check_env_var "EESSI_ACCELERATOR_TARGET" "$STORED_EESSI_ACCELERATOR_TARGET_OVERRIDE"
215+ check_env_var "EASYBUILD_CUDA_COMPUTE_CAPABILITIES" "$STORED_CUDA_CC"
193216 # unload and make sure the environment is clean again
194217 module unload EESSI-extend
195218 check_disallowed_env_prefix EASYBUILD_
196219 unset EESSI_ACCELERATOR_INSTALL
197220 unset EESSI_SITE_INSTALL
198221
199222 # Now for a project
223+ echo "Checking EESSI-extend project install"
200224 export EESSI_PROJECT_INSTALL="$MY_INSTALLATION_PATH"
201225 export EXPECTED_INSTALLATION_PATH="$MY_INSTALLATION_PATH/versions/$EESSI_VERSION/software/linux/$EESSI_SOFTWARE_SUBDIR"
202- module load EESSI-extend/${{matrix.EESSI_VERSION }}-easybuild
226+ module load EESSI-extend/${{matrix.eessi_version }}-easybuild
203227 check_env_var "EASYBUILD_INSTALLPATH" "$EXPECTED_INSTALLATION_PATH" # installation path should be the same unless we ask for an explicit GPU installation
228+ check_env_var "EESSI_ACCELERATOR_TARGET" "$STORED_EESSI_ACCELERATOR_TARGET_OVERRIDE"
204229 check_env_var "EASYBUILD_CUDA_COMPUTE_CAPABILITIES" "$STORED_CUDA_CC"
230+ module unload EESSI-extend
205231 export EESSI_ACCELERATOR_INSTALL=1
206- module load EESSI-extend/${{matrix.EESSI_VERSION }}-easybuild # reload for an GPU actual installation
232+ module load EESSI-extend/${{matrix.eessi_version }}-easybuild # reload for an GPU actual installation
207233 check_env_var "EASYBUILD_INSTALLPATH" "$EXPECTED_INSTALLATION_PATH" # installation path should be the same for project case
234+ check_env_var "EESSI_ACCELERATOR_TARGET" "$STORED_EESSI_ACCELERATOR_TARGET_OVERRIDE"
235+ check_env_var "EASYBUILD_CUDA_COMPUTE_CAPABILITIES" "$STORED_CUDA_CC"
208236 # unload and make sure the environment is clean again
209237 module unload EESSI-extend
210238 check_disallowed_env_prefix EASYBUILD_
211239 unset EESSI_ACCELERATOR_INSTALL
212240 unset EESSI_PROJECT_INSTALL
213241
214242 # Now for a user
243+ echo "Checking EESSI-extend user install"
215244 export EESSI_USER_INSTALL="$MY_INSTALLATION_PATH/$USER"
216245 mkdir -p $EESSI_USER_INSTALL # must exist
217- module load EESSI-extend/${{matrix.EESSI_VERSION }}-easybuild
246+ module load EESSI-extend/${{matrix.eessi_version }}-easybuild
218247 # check some specific envvars
219248 export EXPECTED_INSTALLATION_PATH="$MY_INSTALLATION_PATH/$USER/versions/$EESSI_VERSION/software/linux/$EESSI_SOFTWARE_SUBDIR"
220- module load EESSI-extend/${{matrix.EESSI_VERSION }}-easybuild
249+ module load EESSI-extend/${{matrix.eessi_version }}-easybuild
221250 check_env_var "EASYBUILD_INSTALLPATH" "$EXPECTED_INSTALLATION_PATH" # installation path should be the same unless we ask for an explicit GPU installation
251+ check_env_var "EESSI_ACCELERATOR_TARGET" "$STORED_EESSI_ACCELERATOR_TARGET_OVERRIDE"
222252 check_env_var "EASYBUILD_CUDA_COMPUTE_CAPABILITIES" "$STORED_CUDA_CC"
253+ module unload EESSI-extend
223254 export EESSI_ACCELERATOR_INSTALL=1
224- module load EESSI-extend/${{matrix.EESSI_VERSION }}-easybuild # reload for an actual GPU installation
255+ module load EESSI-extend/${{matrix.eessi_version }}-easybuild # reload for an actual GPU installation
225256 check_env_var "EASYBUILD_INSTALLPATH" "$EXPECTED_INSTALLATION_PATH" # installation path should be the same for user case
257+ check_env_var "EESSI_ACCELERATOR_TARGET" "$STORED_EESSI_ACCELERATOR_TARGET_OVERRIDE"
258+ check_env_var "EASYBUILD_CUDA_COMPUTE_CAPABILITIES" "$STORED_CUDA_CC"
226259 # unload and make sure the environment is clean again
227260 module unload EESSI-extend
228261 check_disallowed_env_prefix EASYBUILD_
0 commit comments