Support using software-layer-scripts changes directly in software-layer
Right now, when we need to change something (e.g. a hook) in software-layer-scripts in order to fix a build in software-layer, the procedure is:
- Introduce fix in
software-layer-scripts - Add temporary EasyStack to
software-layer-scripts - Do build on
software-layer-scriptsto prove the fix - Remove the
EasyStack - (optionally, if deploy is required) Do build on
software-layer-scriptsagain (if the fix requires a deploy, like theeb_hooks.pycurrently do) - (optionally, if deploy is required) Deploy on
software-layer-scripts - Merge
software-layer-scriptsPR - Go back to
software-layerand rebuild there - Deploy
software-layerPR - Merge
software-layerPR
This procedure is rather complex, but has been necessary since we split-off software-layer-scripts.
In the support meeting of 6 Jan 2026, we discussed an alternative approach:
- Introduce fix in
software-layer-scripts - Make
software-layeruse the feature branch with the fix (or probably even better: check out a particular commit, and define that commit in a file insoftware-layer) - Build
software-layerPR - (optionally, if deploy is required) Build
software-layer-scriptsPR (note: this won't have any temporary EasyStacks being added/removed!) - (optionally, if deploy is required) Deploy
software-layer-scriptsPR - Merge
software-layer-scriptsPR - Deploy
software-layerPR - Merge
software-layerPR
We should have checks in place to guarantee that software-layer builds only get deployed if they used build scripts from software-layer-scripts that actually got merged into the main branch. We also need to make sure that all deployments in software-layer-scripts are done (this is already taken care of by the current hook checking that eb_hooks.py changes get deployed). This is discussed in #216 .
The second procedure means less complication & rebuilding, since the actual software builds to prove the fix only needs to be done in one repo (software-layer), and since those can then actually be deployed.
One caveat is that it requires that EESSI-install-software.sh uses eb_hooks.py from the cloned software-layer-scripts repository, instead of from e.g. /cvmfs/software.eessi.io/versions/2025.06/init/easybuild/eb_hooks.py. What we want to avoid is differences in behavior between running EESSI-extend locally, and running builds in software-layer. Of course, provided that the above CI's are in place that guarantee that
a) deployment can only be done after the associated software-layer-scripts PR is merged and
b) merge of software-layer-scripts PR can only be done after eb_hooks.py updates are deployed
this essentially guarantees that synchronicity.
-
Requires a CI to be added that ensures deployment of scripts such as
install_cuda_and_libraries.shandlink_nvidia_host_libraries.sh(or do we have that already?)