using Spack on top of EESSI
There's interest from various parties to use Spack on top of EESSI, i.e. let Spack leverage software installations that are already present in EESSI as dependencies, rather than building them from source.
EESSI could expose its installations in a format that Spack can easily consume, like through Spack's support for external packages (packages.yaml), or by generating a Spack database.
I've briefly discussed this with @tgamblin, and here's the initial steps we could take:
- set up a proof-on-concept for building something with Spack on top of dependencies (and compiler) provided by EESSI;
- implement a script to generate a
packages.yamlor a Spack database for the software installations available in EESSI;
Information that needs to be exposed includes:
- software name and version;
- variants enabled (see Variants in Spack docs;
- flags;
- target (could just be an
archspecname); - OS (probably just something like
eessi); - platform (likely
linuxeverywhere we care); - dependency edges, including:
- dependency types (any/several of build, link, run)
- virtuals provided (e.g. mpi, c, cxx, fortran) (see Virtual dependencies);
- special nodes:
- a glibc node (for
glibcin EESSI compat layer); - compilers are nodes and need to be attached to packages with edges labeled c, cxx or fortran;
- a glibc node (for
So some mapping needs to be done from EasyBuild/EESSI to Spack lingo.