stackinator icon indicating copy to clipboard operation
stackinator copied to clipboard

modular sqfs

Open simonpintarelli opened this issue 8 months ago • 1 comments

  • 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
    1. squashfs-mount-wrapper.sh
    • mount base sqfs in $BUILDROOT/tmp/mounts/ via squashfs-mount
    1. bwrap-mutable-root.sh
    • make a mutable root (as squashfs-run does), 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.sh to 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.toolchain has been removed from environments.yaml. The json description can be used to generate the same constraints in spack.yaml
  • base uenvs expose their rootspecs via env/default/packages.yaml. The dependent uenvs then include these packages.yaml in spack.include. The python script used to generate packages.yaml from spack.lock is in gen_packages_yaml.py
  • [ ] packages from environments.yaml is ignored (it was in Makefile.compilers). Why not use packages (incl variants like in regular spack.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

simonpintarelli avatar Jun 05 '25 16:06 simonpintarelli

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

msimberg avatar Jun 17 '25 14:06 msimberg