modular sqfs
- remove compiler bootstrap (use a base uenv with a compiler or system gcc12)
- base images (for example
/user-environment/gcc/12.3.0) are regular stackinator sqfs images located in a subdirectory of the root image. - new sandbox
-
squashfs-mount-wrapper.sh
- mount base sqfs in
$BUILDROOT/tmp/mounts/viasquashfs-mount
-
bwrap-mutable-root.sh
- make a mutable root (as
squashfs-rundoes), this is required for building base images where mount-points don't exist (for example/user-environment/gcc) - bind mount base images from
$BUILDROOT/tmp/mounts/to their final destination.
-
- [ ] update
stack-debug.shto mount the base uenvs - a json/schema, example file is used to describe a modular uenv (used by uenv2) and during the build process
- uses spack@develop
- [ ]
compilers.toolchainhas been removed fromenvironments.yaml. The json description can be used to generate the same constraints inspack.yaml - base uenvs expose their rootspecs via
env/default/packages.yaml. The dependent uenvs then include thesepackages.yamlinspack.include. The python script used to generatepackages.yamlfromspack.lockis in gen_packages_yaml.py - [ ]
packagesfromenvironments.yamlis ignored (it was inMakefile.compilers). Why not usepackages(inclvariantslike in regularspack.yaml? And then use it as override for auto generated package section. - [ ] unit tests need to be updated (removed compilers.yaml)
The corresponding cluster-config is in https://github.com/eth-cscs/alps-cluster-config/tree/feat/modular-uenv. It contains the repo changes for spack 1.0 and gcc12 configured in packages.yaml for daint/eiger (overlaps/conflicts with https://github.com/eth-cscs/alps-cluster-config/pull/35)
Prototype for uenv start/run which can mount modular sqfs from the json description: https://github.com/eth-cscs/uenv2/pull/86
Example recipe for cuda/gcc and osu-micro-benchmarks: https://github.com/simonpintarelli/daint-modular-uenv
Summarizing the quick chat we had with @simonpintarelli, @albestro, and myself today:
Assuming that this PR keeps non-modular uenvs/recipes working exactly as before we try to merge this PR first for support for spack 1.0. The modular uenv stuff can be considered "experimental" and tested further on main. After merging this:
- Merge any remaining required changes from #215
- Merge #236
- Merge #210