Tutorial setup

If you have not done the prior sections, you’ll need to start the docker image:

docker run -it ghcr.io/spack/tutorial:sc25

and then set Spack up like this:

git clone --depth=2 --branch=releases/v1.1 https://github.com/spack/spack
. spack/share/spack/setup-env.sh
spack repo update builtin --tag v2025.11.0
spack tutorial -y
spack bootstrap now
spack compiler find

See the Basic Installation Tutorial for full details on setup. For more help, join us in the #tutorial channel on Slack – get an invitation at slack.spack.io

Stacks Tutorial

We’ve talked about Spack environments in the context of a unified user environment. But environments in Spack have much broader capabilities. In this tutorial we will consider how to use Spack environments to manage large deployments of software.

What usually differs between a typical environment for a single user, and an environment used to manage large deployments, is that in the latter case we often have a set of packages we want to install across a wide range of MPIs, LAPACKs or compilers.

Below, we’ll mimic the creation of a software stack built onto a cross-product of different LAPACK and MPI libraries, with a compiler that is more recent than the one provided by the host system.

First, we’ll focus on how to properly configure and install the software we want. We’ll learn how to pin certain requirements, and how to write a cross product of specs in a compact, and expressive, way.

We’ll consider how the software we install might be consumed by our users, and see the two main mechanisms that Spack provides for that: views and module files.

Note

Before we start this hands-on, make sure the EDITOR environment variable is set to your preferred editor, for instance:

$ export EDITOR='emacs -nw'

Setup the compiler

The first step to build our stack is to setup the compiler we want to use later. This is currently an iterative process that can be done in two ways:

  1. Install the compiler first, then install the rest of the environment

  2. Install the compiler outside the environment (either in another environment or standalone)

Below, we’ll use the first approach. For people interested, an example of composing a compiler from another environment can be found at this link.

Let’s start by creating an environment in a directory of our choice:

$ spack env activate --create ~/stacks
$ spack env status
==> In environment /home/spack/stacks

We can add from the command line a new compiler. We’ll also disable the generation of views for the time being, as we’ll come back to this topic later in the tutorial:

$ spack add gcc@12 %gcc@11
==> Adding gcc@12 %gcc@11 to environment /home/spack/stacks
$ spack env view disable
$ spack config edit

What you should see on screen now is the following spack.yaml file:

# This is a Spack Environment file.
#
# It describes a set of packages to be installed, along with
# configuration settings.
spack:
  specs:
  - gcc@12%gcc@11
  view: false
  concretizer:
    unify: true

The next step is to concretize and install our compiler:

$ spack concretize
==> Concretized 1 spec:
 -   fmnvqo4  gcc@12.3.0~binutils+bootstrap~graphite~mold~nvptx~piclibs~profiled~strip build_system=autotools build_type=RelWithDebInfo languages:='c,c++,fortran' platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
[+]  ntccuj2	  ^compiler-wrapper@1.0 build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3
[+]  cih4xrz	  ^diffutils@3.12 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  qtepnkr	      ^libiconv@1.18 build_system=autotools libs:=shared,static platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  irhvzch	  ^gawk@5.3.1~nls build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  bs5ujst	      ^libsigsegv@2.14 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  c6d2zlj	      ^readline@8.3 build_system=autotools patches:=21f0a03 platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[e]  ml7cem5	  ^gcc@11.4.0~binutils+bootstrap~graphite~nvptx~piclibs~profiled~strip build_system=autotools build_type=RelWithDebInfo languages:='c,c++,fortran' platform=linux os=ubuntu22.04 target=x86_64_v3
[+]  nokfxva	  ^gcc-runtime@11.4.0 build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3
[e]  qg7qyaz	  ^glibc@2.35 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3
[+]  4obn7cg	  ^gmake@4.4.1~guile build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  mj4re3l	  ^gmp@6.3.0+cxx build_system=autotools libs:=shared,static platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
[+]  fgsf5ij	      ^autoconf@2.72 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3
[+]  pzmnwzm	      ^automake@1.16.5 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  lxvpwti	      ^m4@1.4.20+sigsegv build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
[+]  yt7ajy4	  ^libtool@2.4.7 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  irvryts	      ^findutils@4.10.0 build_system=autotools patches:=440b954 platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  sczvrku	  ^mpc@1.3.1 build_system=autotools libs:=shared,static platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  m3nwalt	  ^mpfr@4.2.1 build_system=autotools libs:=shared,static patches:=3ec29a6 platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  7p7gq7u	      ^autoconf-archive@2023.02.20 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3
[+]  62kt5y4	  ^perl@5.42.0+cpanm+opcode+open+shared+threads build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  vdgigsw	      ^berkeley-db@18.1.40+cxx~docs+stl build_system=autotools patches:=26090f4,b231fcc platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
[+]  x7t4naj	      ^bzip2@1.0.8~debug~pic+shared build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  aq7qwy6	      ^gdbm@1.25 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  k6ygirs	  ^texinfo@7.2~xs build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
[+]  cakgj4n	      ^gettext@0.23.1+bzip2+curses+git~libunistring+libxml2+pic+shared+tar+xz build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
[+]  5trxrsw		  ^libxml2@2.13.5~http+pic~python+shared build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  lfgvgva		  ^tar@1.35 build_system=autotools zip=pigz platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  kaz756e		      ^pigz@2.8 build_system=makefile platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  yzaocbs		  ^xz@5.6.3~pic build_system=autotools libs:=shared,static platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  ncdxq3j	      ^ncurses@6.5-20250705~symlinks+termlib abi=none build_system=autotools patches:=7a351bc platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
[+]  f4qiprw		  ^pkgconf@2.5.1 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  qlavhjb	  ^zlib-ng@2.0.7 cflags=-O3 +compat+new_strategies+opt+pic+shared build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
[+]  foiizhd	  ^zstd@1.5.7+programs build_system=makefile compression:=none libs:=shared,static platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0

$ spack install
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2
[+] /usr (external glibc-2.35-qg7qyazcn2fwrck5vgr3mxq3i4uxkhlo)
[+] /usr (external gcc-11.4.0-ml7cem5pfeoluzbhb7jsiisemvoauaz5)
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gcc-runtime-11.4.0-nokfxvaa4aklxfhoymvz6hlvbqw3kwnh
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/berkeley-db-18.1.40-vdgigswy4fvttrivbedl4cp7bl72esma
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/zlib-ng-2.0.7-qlavhjbsgqyboovfvsultjdwzz5nvthw
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gmake-4.4.1-4obn7cgqfwoxyvmnpeedud63bsjhoqma
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libiconv-1.18-qtepnkrdvqazp3jmfnheapckbemejrhq
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libsigsegv-2.14-bs5ujst3rrdcbj3r726bekzjfdddck4w
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/bzip2-1.0.8-x7t4najic2jb46srjiebkrf55utda3nl
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/xz-5.6.3-yzaocbs7geczi5d7qyvmqwrxi4r7dvph
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/pigz-2.8-kaz756eya6nj3ardls4b6aiaclkaux7i
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/zstd-1.5.7-foiizhdg2mc4jdjtuddksbzvr64roxea
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/ncurses-6.5-20250705-ncdxq3juvboefpavgmovg5rb5bx76ohz
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gmp-6.3.0-mj4re3lp3bqk56rx5yblhufkzpmppdsu
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/findutils-4.10.0-irvrytslmleivpkraggqq5brluhluert
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/diffutils-3.12-cih4xrzw7ysoceclj2x33hdgo23nuvmk
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libxml2-2.13.5-5trxrsws5dig3bf63uc4xzcbsywsqtjo
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/tar-1.35-lfgvgvawnpdxxz7prdfn4vsfgtwruxjc
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/readline-8.3-c6d2zljdklrjdya4xy236brmpdonc2xo
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/mpfr-4.2.1-m3nwaltjkwzqahxlfylauzm5nxkuk2ud
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libtool-2.4.7-yt7ajy4c3zwh2ks6dawvycaxrydjibel
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gettext-0.23.1-cakgj4ntlncc4zsgty5z6sa7f7mwvlt7
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gdbm-1.25-aq7qwy6yezwhtwdrsyqen65rmjmlth27
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/mpc-1.3.1-sczvrkuwv7wbcfnejrzrwt5yzbuk5hog
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gawk-5.3.1-irhvzcha2sysowm6prf7zkvjitpykaxd
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/perl-5.42.0-62kt5y4kl7uhwljviixr3m4dyf5vre7t
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/texinfo-7.2-k6ygirswvbp5fb5ijcgwyfck6hax5xix
==> Fetching file:///mirror/blobs/sha256/1f/1fc94cabbbd6e9c052ea3a10d368fcbd30d3b2c4f18da478323a5e354cec9596
    [100%]  651.91 MB @	 371.4 GB/s
==> Extracting gcc-12.3.0-fmnvqo44pcnyj4dpc6kng6rhp5uwdrwc from binary cache
==> Wrote new spec file to /home/spack/spack/opt/spack/linux-x86_64_v3/gcc-12.3.0-fmnvqo44pcnyj4dpc6kng6rhp5uwdrwc/lib/gcc/x86_64-pc-linux-gnu/12.3.0/specs
==> gcc: Successfully installed gcc-12.3.0-fmnvqo44pcnyj4dpc6kng6rhp5uwdrwc
  Search: 0.00s.  Fetch: 1.28s.	 Install: 12.52s.  Extract: 11.04s.  Relocate: 1.44s.  Total: 13.81s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gcc-12.3.0-fmnvqo44pcnyj4dpc6kng6rhp5uwdrwc
==> Installing gcc-12.3.0-fmnvqo44pcnyj4dpc6kng6rhp5uwdrwc [29/29]

We are ready to build more software with our newly installed GCC!

Install a software stack

Now that we have a compiler ready, the next objective is to build software with it. We’ll start by trying to add different versions of netlib-scalapack, linked against different MPI implementations:

$ spack add netlib-scalapack %gcc@12 ^openblas ^openmpi
==> Adding netlib-scalapack %gcc@12 ^openblas ^openmpi to environment /home/spack/stacks
$ spack add netlib-scalapack %gcc@12 ^openblas ^mpich
==> Adding netlib-scalapack %gcc@12 ^mpich ^openblas to environment /home/spack/stacks

If we try to concretize the environment, we’ll get an error. We cannot unify an environment with two different configurations of the same package.

Tuning concretizer options for a stack

Whenever we concretize an environment with more than one root spec, we can configure Spack to be more or less strict with duplicate nodes in the sub-DAG obtained by following link and run edges starting from the roots. We usually call this sub-DAG the root unification set.

A diagram might help visualize the concept:

_images/stacks-unify.svg

The image above represents the current environment, with our three root specs highlighted by a thicker dashed line. Any node that could be reached following a link or run edge is part of the root unification set. Pure build dependencies might fall outside of it.

The config option determining which nodes are allowed to be in the root unification set is concretizer:unify. Let’s check its value:

$ spack config get concretizer | grep unify
  unify: true

concretizer:unify:true means that only a single configuration for each package can be present. This value is good for single project environments, since it ensures we can construct a view of all the software, with the usual structure expected on a Unix-ish system, and without risks of collisions between installations.

We can’t respect this requirement, as our roots already contain two different configurations of netlib-scalapack. Set the value to false, and try to re-concretize:

$ spack config add concretizer:unify:false
$ spack concretize
==> Starting concretization pool with 2 processes
==> Concretized 2 specs:
 -   3t7cajd  netlib-scalapack@2.2.2~ipo~pic+shared build_system=cmake build_type=Release generator=make platform=linux os=ubuntu22.04 target=x86_64_v3 %c,fortran=gcc@12.3.0
 -   4a7thjg	  ^cmake@3.31.9~doc+ncurses+ownlibs~qtgui build_system=generic build_type=Release platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
 -   zianoaa	      ^curl@8.15.0~gssapi~ldap~libidn2~librtmp~libssh~libssh2+nghttp2 build_system=autotools libs:=shared,static tls:=openssl platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
[+]  ft5kpbd		  ^nghttp2@1.48.0 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
 -   q4fenfo		  ^openssl@3.6.0~docs+shared build_system=generic certs=mozilla platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
[+]  etqlnw5		      ^ca-certificates-mozilla@2025-08-12 build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3
 -   ytk4y2k	      ^ncurses@6.5-20250705~symlinks+termlib abi=none build_system=autotools patches:=7a351bc platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
 -   4tglvhv	      ^zlib-ng@2.2.4+compat+new_strategies+opt+pic+shared build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
[+]  ntccuj2	  ^compiler-wrapper@1.0 build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3
[+]  fmnvqo4	  ^gcc@12.3.0~binutils+bootstrap~graphite~mold~nvptx~piclibs~profiled~strip build_system=autotools build_type=RelWithDebInfo languages:='c,c++,fortran' platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
[+]  cih4xrz	      ^diffutils@3.12 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  qtepnkr		  ^libiconv@1.18 build_system=autotools libs:=shared,static platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  irhvzch	      ^gawk@5.3.1~nls build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  bs5ujst		  ^libsigsegv@2.14 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  c6d2zlj		  ^readline@8.3 build_system=autotools patches:=21f0a03 platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[e]  ml7cem5	      ^gcc@11.4.0~binutils+bootstrap~graphite~nvptx~piclibs~profiled~strip build_system=autotools build_type=RelWithDebInfo languages:='c,c++,fortran' platform=linux os=ubuntu22.04 target=x86_64_v3
[+]  nokfxva	      ^gcc-runtime@11.4.0 build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3
[+]  mj4re3l	      ^gmp@6.3.0+cxx build_system=autotools libs:=shared,static platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
[+]  fgsf5ij		  ^autoconf@2.72 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3
[+]  pzmnwzm		  ^automake@1.16.5 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  lxvpwti		  ^m4@1.4.20+sigsegv build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
[+]  yt7ajy4	      ^libtool@2.4.7 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  sczvrku	      ^mpc@1.3.1 build_system=autotools libs:=shared,static platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  m3nwalt	      ^mpfr@4.2.1 build_system=autotools libs:=shared,static patches:=3ec29a6 platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  7p7gq7u		  ^autoconf-archive@2023.02.20 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3
[+]  62kt5y4	      ^perl@5.42.0+cpanm+opcode+open+shared+threads build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  vdgigsw		  ^berkeley-db@18.1.40+cxx~docs+stl build_system=autotools patches:=26090f4,b231fcc platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
[+]  x7t4naj		  ^bzip2@1.0.8~debug~pic+shared build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  aq7qwy6		  ^gdbm@1.25 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  k6ygirs	      ^texinfo@7.2~xs build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
[+]  cakgj4n		  ^gettext@0.23.1+bzip2+curses+git~libunistring+libxml2+pic+shared+tar+xz build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
[+]  5trxrsw		      ^libxml2@2.13.5~http+pic~python+shared build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  lfgvgva		      ^tar@1.35 build_system=autotools zip=pigz platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  kaz756e			  ^pigz@2.8 build_system=makefile platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  yzaocbs		      ^xz@5.6.3~pic build_system=autotools libs:=shared,static platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  ncdxq3j		  ^ncurses@6.5-20250705~symlinks+termlib abi=none build_system=autotools patches:=7a351bc platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
[+]  qlavhjb	      ^zlib-ng@2.0.7 cflags=-O3 +compat+new_strategies+opt+pic+shared build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
[+]  foiizhd	      ^zstd@1.5.7+programs build_system=makefile compression:=none libs:=shared,static platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
 -   pgwnyw7	  ^gcc-runtime@12.3.0 build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3
[e]  qg7qyaz	  ^glibc@2.35 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3
[+]  4obn7cg	  ^gmake@4.4.1~guile build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
 -   uaioo2h	  ^mpich@4.3.2~argobots~cuda+fortran+hwloc+hydra~level_zero+libxml2+pci~rocm+romio~slurm~vci~verbs+wrapperrpath~xpmem build_system=autotools datatype-engine=auto device=ch4 netmod=ofi pmi=default platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx,fortran=gcc@12.3.0
[+]  irvryts	      ^findutils@4.10.0 build_system=autotools patches:=440b954 platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
 -   wkj6z6m	      ^hwloc@2.12.2~cairo~cuda~gl~level_zero~libudev+libxml2~nvml~opencl+pci~rocm build_system=autotools libs:=shared,static platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
 -   7imejdf	      ^libfabric@2.3.1~cuda~debug~kdreg~level_zero~rocm~uring build_system=autotools fabrics:=sockets,tcp,udp platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   p7g23cj	      ^libpciaccess@0.17 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
[+]  hwxnwvm		  ^util-macros@1.20.1 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3
 -   idam6zh	      ^libxml2@2.13.5~http+pic~python+shared build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   g3zxoz6		  ^libiconv@1.18 build_system=autotools libs:=shared,static platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   643vviq		  ^xz@5.6.3~pic build_system=autotools libs:=shared,static platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
[+]  f4qiprw	      ^pkgconf@2.5.1 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
 -   7jn3viv	      ^yaksa@0.4~cuda~level_zero~rocm build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   yvs3szq		  ^python@3.14.0+bz2+ctypes+dbm~debug+libxml2+lzma~optimizations+pic+pyexpat+pythoncmd+readline+shared+sqlite3+ssl~tkinter+uuid+zlib+zstd build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
 -   ikeoatl		      ^expat@2.7.3+libbsd build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
 -   zb37a5t			  ^libbsd@0.12.2 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   cq4lpjp			      ^libmd@1.1.0 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   3f5v73y		      ^gettext@0.23.1+bzip2+curses+git~libunistring+libxml2+pic+shared+tar+xz build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
 -   wfarfth			  ^tar@1.35 build_system=autotools zip=pigz platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   bs2taxm			      ^pigz@2.8 build_system=makefile platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   s56v4gf		      ^libffi@3.5.2 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
 -   eyfbskp		      ^readline@8.3 build_system=autotools patches:=21f0a03 platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   plzt2nd		      ^sqlite@3.50.4+column_metadata+fts+rtree build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   b4npzn6		      ^util-linux-uuid@2.41 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   fj5u5hm		      ^zstd@1.5.7+programs build_system=makefile compression:=none libs:=shared,static platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
 -   dwjd7g2	  ^openblas@0.3.30~bignuma~consistent_fpcsr+dynamic_dispatch+fortran~ilp64+locking+pic+shared build_system=makefile symbol_suffix=none threads=openmp platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx,fortran=gcc@12.3.0
 -   yxweja4  netlib-scalapack@2.2.2~ipo~pic+shared build_system=cmake build_type=Release generator=make platform=linux os=ubuntu22.04 target=x86_64_v3 %c,fortran=gcc@12.3.0
 -   p2gmhau	  ^openmpi@5.0.8+atomics~cuda~debug+fortran~gpfs~internal-hwloc~internal-libevent~internal-pmix~ipv6~java~lustre~memchecker~openshmem~rocm~romio+rsh~static~two_level_namespace+vt+wrapper-rpath build_system=autotools fabrics:=none romio-filesystem:=none schedulers:=none platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx,fortran=gcc@12.3.0
 -   nzbffup	      ^autoconf@2.72 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3
 -   zmzk4bb	      ^automake@1.16.5 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   fn26hil	      ^libevent@2.1.12+openssl build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   t2nikrt	      ^numactl@2.0.18 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   lip7jtp	      ^openssh@9.9p1+gssapi build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
 -   onmo4bv		  ^krb5@1.21.3+shared build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
[+]  n7yzkyl		      ^bison@3.8.2~color build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
 -   msusunh		      ^diffutils@3.12 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   c5o6gvv		  ^libedit@3.1-20240808 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   drjmmlw		  ^libxcrypt@4.4.38~obsolete_api build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   jpuw66s	      ^perl@5.42.0+cpanm+opcode+open+shared+threads build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   zom5syd		  ^bzip2@1.0.8~debug~pic+shared build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   y5bsvao		  ^gdbm@1.25 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   76oyav4	      ^pmix@6.0.0~munge~python build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   zalt7cs	      ^prrte@4.0.0 build_system=autotools schedulers:=none platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
[+]  gmhq65u		  ^flex@2.6.3+lex~nls build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0

This time concretization succeeded. Setting concretizer:unify:false is effectively concretizing each root spec on its own, and then merging the results into the environment. This allows us to have the duplicates we need.

Note

If the environment is expected to have only a few duplicate nodes, then there’s another value we might consider:

$ spack config add concretizer:unify:when_possible

With this option Spack will try to unify the environment in an eager way, solving it in multiple rounds. The concretization at round n will contain all the specs that could not be unified at round n-1, and will consider all the specs from previous rounds for reuse.

Spec matrices

Let’s further expand our stack and consider also linking against different LAPACK providers. We could, of course, add new specs explicitly:

$ spack add netlib-scalapack %gcc@12 ^netlib-lapack ^openmpi
==> Adding netlib-scalapack %gcc@12 ^netlib-lapack ^openmpi to environment /home/spack/stacks
$ spack add netlib-scalapack %gcc@12 ^netlib-lapack ^mpich
==> Adding netlib-scalapack %gcc@12 ^mpich ^netlib-lapack to environment /home/spack/stacks

This way of proceeding, though, will become very tedious once more software is requested. The best way to express a cross-product like this in Spack is instead through a matrix:

# This is a Spack Environment file.
#
# It describes a set of packages to be installed, along with
# configuration settings.
spack:
  specs:
  - gcc@12%gcc@11
  - matrix:
    - [netlib-scalapack]
    - [^openmpi, ^mpich]
    - [^openblas, ^netlib-lapack]
    - ["%gcc@12"]
  view: false
  concretizer:
    unify: false

Matrices will expand to the cross-product of their rows, so this matrix:

- matrix:
  - ["netlib-scalapack"]
  - ["^openmpi", "^mpich"]
  - ["^openblas", "^netlib-lapack"]
  - ["%gcc@12"]

is equivalent to this list of specs:

- "netlib-scalapack %gcc@12 ^openblas ^openmpi"
- "netlib-scalapack %gcc@12 ^openblas ^mpich"
- "netlib-scalapack %gcc@12 ^netlib-lapack ^openmpi"
- "netlib-scalapack %gcc@12 ^netlib-lapack ^mpich"

We are now ready to concretize and install the environment:

$ spack concretize
==> Starting concretization pool with 2 processes
==> Concretized 2 specs:
 -   pglf7pu  netlib-scalapack@2.2.2~ipo~pic+shared build_system=cmake build_type=Release generator=make platform=linux os=ubuntu22.04 target=x86_64_v3 %c,fortran=gcc@12.3.0
 -   4a7thjg	  ^cmake@3.31.9~doc+ncurses+ownlibs~qtgui build_system=generic build_type=Release platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
 -   zianoaa	      ^curl@8.15.0~gssapi~ldap~libidn2~librtmp~libssh~libssh2+nghttp2 build_system=autotools libs:=shared,static tls:=openssl platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
[+]  ft5kpbd		  ^nghttp2@1.48.0 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
 -   q4fenfo		  ^openssl@3.6.0~docs+shared build_system=generic certs=mozilla platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
[+]  etqlnw5		      ^ca-certificates-mozilla@2025-08-12 build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3
 -   ytk4y2k	      ^ncurses@6.5-20250705~symlinks+termlib abi=none build_system=autotools patches:=7a351bc platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
 -   4tglvhv	      ^zlib-ng@2.2.4+compat+new_strategies+opt+pic+shared build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
[+]  ntccuj2	  ^compiler-wrapper@1.0 build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3
[+]  fmnvqo4	  ^gcc@12.3.0~binutils+bootstrap~graphite~mold~nvptx~piclibs~profiled~strip build_system=autotools build_type=RelWithDebInfo languages:='c,c++,fortran' platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
[+]  cih4xrz	      ^diffutils@3.12 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  qtepnkr		  ^libiconv@1.18 build_system=autotools libs:=shared,static platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  irhvzch	      ^gawk@5.3.1~nls build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  bs5ujst		  ^libsigsegv@2.14 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  c6d2zlj		  ^readline@8.3 build_system=autotools patches:=21f0a03 platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[e]  ml7cem5	      ^gcc@11.4.0~binutils+bootstrap~graphite~nvptx~piclibs~profiled~strip build_system=autotools build_type=RelWithDebInfo languages:='c,c++,fortran' platform=linux os=ubuntu22.04 target=x86_64_v3
[+]  nokfxva	      ^gcc-runtime@11.4.0 build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3
[+]  mj4re3l	      ^gmp@6.3.0+cxx build_system=autotools libs:=shared,static platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
[+]  fgsf5ij		  ^autoconf@2.72 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3
[+]  pzmnwzm		  ^automake@1.16.5 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  lxvpwti		  ^m4@1.4.20+sigsegv build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
[+]  yt7ajy4	      ^libtool@2.4.7 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  sczvrku	      ^mpc@1.3.1 build_system=autotools libs:=shared,static platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  m3nwalt	      ^mpfr@4.2.1 build_system=autotools libs:=shared,static patches:=3ec29a6 platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  7p7gq7u		  ^autoconf-archive@2023.02.20 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3
[+]  62kt5y4	      ^perl@5.42.0+cpanm+opcode+open+shared+threads build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  vdgigsw		  ^berkeley-db@18.1.40+cxx~docs+stl build_system=autotools patches:=26090f4,b231fcc platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
[+]  x7t4naj		  ^bzip2@1.0.8~debug~pic+shared build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  aq7qwy6		  ^gdbm@1.25 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  k6ygirs	      ^texinfo@7.2~xs build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
[+]  cakgj4n		  ^gettext@0.23.1+bzip2+curses+git~libunistring+libxml2+pic+shared+tar+xz build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
[+]  5trxrsw		      ^libxml2@2.13.5~http+pic~python+shared build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  lfgvgva		      ^tar@1.35 build_system=autotools zip=pigz platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  kaz756e			  ^pigz@2.8 build_system=makefile platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  yzaocbs		      ^xz@5.6.3~pic build_system=autotools libs:=shared,static platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  ncdxq3j		  ^ncurses@6.5-20250705~symlinks+termlib abi=none build_system=autotools patches:=7a351bc platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
[+]  qlavhjb	      ^zlib-ng@2.0.7 cflags=-O3 +compat+new_strategies+opt+pic+shared build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
[+]  foiizhd	      ^zstd@1.5.7+programs build_system=makefile compression:=none libs:=shared,static platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
 -   pgwnyw7	  ^gcc-runtime@12.3.0 build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3
[e]  qg7qyaz	  ^glibc@2.35 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3
[+]  4obn7cg	  ^gmake@4.4.1~guile build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
 -   uaioo2h	  ^mpich@4.3.2~argobots~cuda+fortran+hwloc+hydra~level_zero+libxml2+pci~rocm+romio~slurm~vci~verbs+wrapperrpath~xpmem build_system=autotools datatype-engine=auto device=ch4 netmod=ofi pmi=default platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx,fortran=gcc@12.3.0
[+]  irvryts	      ^findutils@4.10.0 build_system=autotools patches:=440b954 platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
 -   wkj6z6m	      ^hwloc@2.12.2~cairo~cuda~gl~level_zero~libudev+libxml2~nvml~opencl+pci~rocm build_system=autotools libs:=shared,static platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
 -   7imejdf	      ^libfabric@2.3.1~cuda~debug~kdreg~level_zero~rocm~uring build_system=autotools fabrics:=sockets,tcp,udp platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   p7g23cj	      ^libpciaccess@0.17 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
[+]  hwxnwvm		  ^util-macros@1.20.1 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3
 -   idam6zh	      ^libxml2@2.13.5~http+pic~python+shared build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   g3zxoz6		  ^libiconv@1.18 build_system=autotools libs:=shared,static platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   643vviq		  ^xz@5.6.3~pic build_system=autotools libs:=shared,static platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
[+]  f4qiprw	      ^pkgconf@2.5.1 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
 -   7jn3viv	      ^yaksa@0.4~cuda~level_zero~rocm build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   yvs3szq		  ^python@3.14.0+bz2+ctypes+dbm~debug+libxml2+lzma~optimizations+pic+pyexpat+pythoncmd+readline+shared+sqlite3+ssl~tkinter+uuid+zlib+zstd build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
 -   ikeoatl		      ^expat@2.7.3+libbsd build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
 -   zb37a5t			  ^libbsd@0.12.2 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   cq4lpjp			      ^libmd@1.1.0 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   3f5v73y		      ^gettext@0.23.1+bzip2+curses+git~libunistring+libxml2+pic+shared+tar+xz build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
 -   wfarfth			  ^tar@1.35 build_system=autotools zip=pigz platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   bs2taxm			      ^pigz@2.8 build_system=makefile platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   s56v4gf		      ^libffi@3.5.2 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
 -   eyfbskp		      ^readline@8.3 build_system=autotools patches:=21f0a03 platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   plzt2nd		      ^sqlite@3.50.4+column_metadata+fts+rtree build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   b4npzn6		      ^util-linux-uuid@2.41 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   fj5u5hm		      ^zstd@1.5.7+programs build_system=makefile compression:=none libs:=shared,static platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
 -   rhz3uek	  ^netlib-lapack@3.12.1~external-blas~ipo+lapacke+pic+shared~xblas build_system=cmake build_type=Release generator=make patches:=3059ebf,b1af8b6,e318340 platform=linux os=ubuntu22.04 target=x86_64_v3 %c,fortran=gcc@12.3.0
 -   apaz22o  netlib-scalapack@2.2.2~ipo~pic+shared build_system=cmake build_type=Release generator=make platform=linux os=ubuntu22.04 target=x86_64_v3 %c,fortran=gcc@12.3.0
 -   p2gmhau	  ^openmpi@5.0.8+atomics~cuda~debug+fortran~gpfs~internal-hwloc~internal-libevent~internal-pmix~ipv6~java~lustre~memchecker~openshmem~rocm~romio+rsh~static~two_level_namespace+vt+wrapper-rpath build_system=autotools fabrics:=none romio-filesystem:=none schedulers:=none platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx,fortran=gcc@12.3.0
 -   nzbffup	      ^autoconf@2.72 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3
 -   zmzk4bb	      ^automake@1.16.5 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   fn26hil	      ^libevent@2.1.12+openssl build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   t2nikrt	      ^numactl@2.0.18 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   lip7jtp	      ^openssh@9.9p1+gssapi build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
 -   onmo4bv		  ^krb5@1.21.3+shared build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
[+]  n7yzkyl		      ^bison@3.8.2~color build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
 -   msusunh		      ^diffutils@3.12 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   c5o6gvv		  ^libedit@3.1-20240808 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   drjmmlw		  ^libxcrypt@4.4.38~obsolete_api build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   jpuw66s	      ^perl@5.42.0+cpanm+opcode+open+shared+threads build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   zom5syd		  ^bzip2@1.0.8~debug~pic+shared build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   y5bsvao		  ^gdbm@1.25 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   76oyav4	      ^pmix@6.0.0~munge~python build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   zalt7cs	      ^prrte@4.0.0 build_system=autotools schedulers:=none platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
[+]  gmhq65u		  ^flex@2.6.3+lex~nls build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0

$ spack install
[+] /usr (external glibc-2.35-qg7qyazcn2fwrck5vgr3mxq3i4uxkhlo)
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/ca-certificates-mozilla-2025-08-12-etqlnw5hd6o35feimkxa53omtrjxuf5l
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/util-macros-1.20.1-hwxnwvmn44zotq6y6cifufosug2utt5b
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gcc-runtime-11.4.0-nokfxvaa4aklxfhoymvz6hlvbqw3kwnh
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gmake-4.4.1-4obn7cgqfwoxyvmnpeedud63bsjhoqma
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/nghttp2-1.48.0-ft5kpbdiz6kctcooz4ksam37pskskehg
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/pkgconf-2.5.1-f4qiprwjcd2q3fp63uzgp47f3kw66r5h
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libsigsegv-2.14-bs5ujst3rrdcbj3r726bekzjfdddck4w
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/zstd-1.5.7-foiizhdg2mc4jdjtuddksbzvr64roxea
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/berkeley-db-18.1.40-vdgigswy4fvttrivbedl4cp7bl72esma
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/flex-2.6.3-gmhq65uhcnj2elzqkz3o7yg2652tmnqj
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/findutils-4.10.0-irvrytslmleivpkraggqq5brluhluert
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gmp-6.3.0-mj4re3lp3bqk56rx5yblhufkzpmppdsu
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/zlib-ng-2.0.7-qlavhjbsgqyboovfvsultjdwzz5nvthw
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/m4-1.4.20-lxvpwtivihagmvso5cxgs3b7olqmac2g
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/mpfr-4.2.1-m3nwaltjkwzqahxlfylauzm5nxkuk2ud
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/bison-3.8.2-n7yzkylf4gs7cnu6scau27gxbodinprr
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libtool-2.4.7-yt7ajy4c3zwh2ks6dawvycaxrydjibel
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/mpc-1.3.1-sczvrkuwv7wbcfnejrzrwt5yzbuk5hog
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gcc-12.3.0-fmnvqo44pcnyj4dpc6kng6rhp5uwdrwc
==> Fetching file:///mirror/blobs/sha256/36/36172444f4f2bb59d9c46d83a54e80f6b53f70ab5768074e9205b1c1b87fc873
    [100%]   19.80 MB @	 401.3 GB/s
==> Extracting gcc-runtime-12.3.0-pgwnyw7ukf64qshxkhmfe4i3mnhnz2ed from binary cache
==> gcc-runtime: Successfully installed gcc-runtime-12.3.0-pgwnyw7ukf64qshxkhmfe4i3mnhnz2ed
  Search: 0.00s.  Fetch: 0.22s.	 Install: 0.49s.  Extract: 0.40s.  Relocate: 0.06s.  Total: 0.71s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gcc-runtime-12.3.0-pgwnyw7ukf64qshxkhmfe4i3mnhnz2ed
==> Installing gcc-runtime-12.3.0-pgwnyw7ukf64qshxkhmfe4i3mnhnz2ed [22/68]
==> Fetching file:///mirror/blobs/sha256/86/862c573b5bef92d895569fa027e03913df8fff50fa9490b29faec83668897933
    [100%]   63.82 MB @	 391.2 GB/s
==> Extracting util-linux-uuid-2.41-b4npzn6ixc2runjxjalulilgkmhpnmeq from binary cache
==> util-linux-uuid: Successfully installed util-linux-uuid-2.41-b4npzn6ixc2runjxjalulilgkmhpnmeq
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.13s.  Extract: 0.10s.  Relocate: 0.01s.  Total: 0.15s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/util-linux-uuid-2.41-b4npzn6ixc2runjxjalulilgkmhpnmeq
==> Installing util-linux-uuid-2.41-b4npzn6ixc2runjxjalulilgkmhpnmeq [23/68]
==> Fetching file:///mirror/blobs/sha256/41/41f2130514252891e6c314cecaf4a52055b27d244fb7101864dd61d1a2087804
    [100%]  181.45 KB @	 544.8 MB/s
==> Extracting libpciaccess-0.17-p7g23cjqjlm6bqct2miagkzxxxq76jjk from binary cache
==> libpciaccess: Successfully installed libpciaccess-0.17-p7g23cjqjlm6bqct2miagkzxxxq76jjk
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.04s.  Extract: 0.01s.  Relocate: 0.01s.  Total: 0.05s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libpciaccess-0.17-p7g23cjqjlm6bqct2miagkzxxxq76jjk
==> Installing libpciaccess-0.17-p7g23cjqjlm6bqct2miagkzxxxq76jjk [24/68]
==> Fetching file:///mirror/blobs/sha256/e9/e97c67351cfa8c848abedbbf642835f1d646723cfa9f1259bb973420bf22db51
    [100%]  176.78 KB @	 519.2 MB/s
==> Extracting libmd-1.1.0-cq4lpjpcxcz5lrsu7twuxqlfcvxw4x5b from binary cache
==> libmd: Successfully installed libmd-1.1.0-cq4lpjpcxcz5lrsu7twuxqlfcvxw4x5b
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.11s.  Extract: 0.02s.  Relocate: 0.01s.  Total: 0.11s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libmd-1.1.0-cq4lpjpcxcz5lrsu7twuxqlfcvxw4x5b
==> Installing libmd-1.1.0-cq4lpjpcxcz5lrsu7twuxqlfcvxw4x5b [25/68]
==> Fetching file:///mirror/blobs/sha256/6e/6e3df487eecba3fdcb80039153b860279f89f7d7fe5d257897ec1fd14fcb791e
    [100%]   66.90 MB @	 441.3 GB/s
==> Extracting ncurses-6.5-20250705-ytk4y2kvs7h2vlkltndotzgejrlj4ylb from binary cache
==> ncurses: Successfully installed ncurses-6.5-20250705-ytk4y2kvs7h2vlkltndotzgejrlj4ylb
  Search: 0.00s.  Fetch: 0.02s.	 Install: 0.57s.  Extract: 0.53s.  Relocate: 0.02s.  Total: 0.59s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/ncurses-6.5-20250705-ytk4y2kvs7h2vlkltndotzgejrlj4ylb
==> Installing ncurses-6.5-20250705-ytk4y2kvs7h2vlkltndotzgejrlj4ylb [26/68]
==> Fetching file:///mirror/blobs/sha256/f3/f31bb9ea0b55f915a9d6adf2e586d545541104e33e7635a62a86ca71b61ebcc6
    [100%]   62.16 MB @	 381.2 GB/s
==> Extracting libiconv-1.18-g3zxoz6huo7tpvkqhsmrmogb4wp6mzly from binary cache
==> libiconv: Successfully installed libiconv-1.18-g3zxoz6huo7tpvkqhsmrmogb4wp6mzly
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.09s.  Extract: 0.05s.  Relocate: 0.01s.  Total: 0.10s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libiconv-1.18-g3zxoz6huo7tpvkqhsmrmogb4wp6mzly
==> Installing libiconv-1.18-g3zxoz6huo7tpvkqhsmrmogb4wp6mzly [27/68]
==> Fetching file:///mirror/blobs/sha256/29/29613d409d98fb74f79f9b80ed750f77d5c80a4c67038a6580985d8611eb9c3b
    [100%]   61.26 MB @	 371.0 GB/s
==> Extracting libfabric-2.3.1-7imejdfjnycxqaiaswob5cylcjiwal3t from binary cache
==> libfabric: Successfully installed libfabric-2.3.1-7imejdfjnycxqaiaswob5cylcjiwal3t
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.09s.  Extract: 0.06s.  Relocate: 0.01s.  Total: 0.10s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libfabric-2.3.1-7imejdfjnycxqaiaswob5cylcjiwal3t
==> Installing libfabric-2.3.1-7imejdfjnycxqaiaswob5cylcjiwal3t [28/68]
==> Fetching file:///mirror/blobs/sha256/58/58598af6ef3e490496ac23b2deb5734aa393484b5d18dc1035cab0bd3c9be2ae
    [100%]   61.83 MB @	 421.1 GB/s
==> Extracting xz-5.6.3-643vviqh75hvv5zwyghppl72gqfr64rx from binary cache
==> xz: Successfully installed xz-5.6.3-643vviqh75hvv5zwyghppl72gqfr64rx
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.11s.  Extract: 0.07s.  Relocate: 0.01s.  Total: 0.12s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/xz-5.6.3-643vviqh75hvv5zwyghppl72gqfr64rx
==> Installing xz-5.6.3-643vviqh75hvv5zwyghppl72gqfr64rx [29/68]
==> Fetching file:///mirror/blobs/sha256/f9/f9a5ab24dbae32b158abfff1177d2600787e7a09e902f5692967bcc2aa8549dc
    [100%]  223.87 KB @	 563.6 MB/s
==> Extracting zlib-ng-2.2.4-4tglvhvqq7j2ftxifhnwsqx7ykr2gdiq from binary cache
==> zlib-ng: Successfully installed zlib-ng-2.2.4-4tglvhvqq7j2ftxifhnwsqx7ykr2gdiq
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.05s.  Extract: 0.01s.  Relocate: 0.01s.  Total: 0.05s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/zlib-ng-2.2.4-4tglvhvqq7j2ftxifhnwsqx7ykr2gdiq
==> Installing zlib-ng-2.2.4-4tglvhvqq7j2ftxifhnwsqx7ykr2gdiq [30/68]
==> Fetching file:///mirror/blobs/sha256/fc/fcab35e1e2b8b1ac6104ce475a848415564d9a6b6e2ee25641bd19ac1daa8532
    [100%]   24.13 MB @	 411.3 GB/s
==> Extracting openblas-0.3.30-dwjd7g2k2xnn4qekllidmd3mbibk2pmm from binary cache
==> openblas: Successfully installed openblas-0.3.30-dwjd7g2k2xnn4qekllidmd3mbibk2pmm
  Search: 0.00s.  Fetch: 0.04s.	 Install: 0.61s.  Extract: 0.54s.  Relocate: 0.04s.  Total: 0.65s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/openblas-0.3.30-dwjd7g2k2xnn4qekllidmd3mbibk2pmm
==> Installing openblas-0.3.30-dwjd7g2k2xnn4qekllidmd3mbibk2pmm [31/68]
==> Fetching file:///mirror/blobs/sha256/ff/ff0044f4698c048ab4a225c71b0e7e5d8c6c902d4eeee7010343dbad8803b5cf
    [100%]   93.01 KB @	 382.1 MB/s
==> Extracting libffi-3.5.2-s56v4gfjyubrphm3pwte4xkkpzsbalmd from binary cache
==> libffi: Successfully installed libffi-3.5.2-s56v4gfjyubrphm3pwte4xkkpzsbalmd
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.04s.  Extract: 0.01s.  Relocate: 0.01s.  Total: 0.05s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libffi-3.5.2-s56v4gfjyubrphm3pwte4xkkpzsbalmd
==> Installing libffi-3.5.2-s56v4gfjyubrphm3pwte4xkkpzsbalmd [32/68]
==> Fetching file:///mirror/blobs/sha256/86/865d78f9fc5654ff92ec4a1d58beea89732ebc1d7a0f516611fb038dd8f6b97a
    [100%]   61.56 MB @	 421.1 GB/s
==> Extracting zstd-1.5.7-fj5u5hmzffnxn433whymaz2n5uhajwqw from binary cache
==> zstd: Successfully installed zstd-1.5.7-fj5u5hmzffnxn433whymaz2n5uhajwqw
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.07s.  Extract: 0.04s.  Relocate: 0.01s.  Total: 0.08s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/zstd-1.5.7-fj5u5hmzffnxn433whymaz2n5uhajwqw
==> Installing zstd-1.5.7-fj5u5hmzffnxn433whymaz2n5uhajwqw [33/68]
==> Fetching file:///mirror/blobs/sha256/48/489fa0369ae5bf3380f64f36d50d3d0ccc3983233891034db55034baabff36e5
    [100%]  453.19 KB @	 762.5 MB/s
==> Extracting libbsd-0.12.2-zb37a5t5npeobk3tjjqcukstmpiwgv5b from binary cache
==> libbsd: Successfully installed libbsd-0.12.2-zb37a5t5npeobk3tjjqcukstmpiwgv5b
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.09s.  Extract: 0.05s.  Relocate: 0.01s.  Total: 0.09s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libbsd-0.12.2-zb37a5t5npeobk3tjjqcukstmpiwgv5b
==> Installing libbsd-0.12.2-zb37a5t5npeobk3tjjqcukstmpiwgv5b [34/68]
==> Fetching file:///mirror/blobs/sha256/e9/e9d8fec78b25d94d102e47a5dd47d72183ae15ceb15b4cb9b05bd04e027b94b0
    [100%]   61.67 MB @	 371.1 GB/s
==> Extracting readline-8.3-eyfbskp7ur7n6y3ceyawjxyncivdlo3k from binary cache
==> readline: Successfully installed readline-8.3-eyfbskp7ur7n6y3ceyawjxyncivdlo3k
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.08s.  Extract: 0.04s.  Relocate: 0.01s.  Total: 0.09s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/readline-8.3-eyfbskp7ur7n6y3ceyawjxyncivdlo3k
==> Installing readline-8.3-eyfbskp7ur7n6y3ceyawjxyncivdlo3k [35/68]
==> Fetching file:///mirror/blobs/sha256/32/324c4ccb22f78c92b236568acb2da1e09c59771808f29c40cafb6402bbf731d1
    [100%]  905.22 KB @	 957.1 MB/s
==> Extracting libedit-3.1-20240808-c5o6gvvaovwqjx4d6dei3437rycaxpef from binary cache
==> libedit: Successfully installed libedit-3.1-20240808-c5o6gvvaovwqjx4d6dei3437rycaxpef
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.13s.  Extract: 0.03s.  Relocate: 0.01s.  Total: 0.14s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libedit-3.1-20240808-c5o6gvvaovwqjx4d6dei3437rycaxpef
==> Installing libedit-3.1-20240808-c5o6gvvaovwqjx4d6dei3437rycaxpef [36/68]
==> Fetching file:///mirror/blobs/sha256/0e/0eeb5b2d0a3c05e415efdc30fa7dd71d997ce5ffb024ccce8afc60746e4ec94c
    [100%]   61.13 MB @	 995.1 MB/s
==> Extracting diffutils-3.12-msusunhi5vdgrgniq3n6f6el4d3sdmns from binary cache
==> diffutils: Successfully installed diffutils-3.12-msusunhi5vdgrgniq3n6f6el4d3sdmns
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.08s.  Extract: 0.04s.  Relocate: 0.01s.  Total: 0.09s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/diffutils-3.12-msusunhi5vdgrgniq3n6f6el4d3sdmns
==> Installing diffutils-3.12-msusunhi5vdgrgniq3n6f6el4d3sdmns [37/68]
==> Fetching file:///mirror/blobs/sha256/2f/2f26acbf32bf55c31b3de49c96c5d859685365fa4450f9c8c24b647692428f0a
    [100%]   94.20 KB @	 437.1 MB/s
==> Extracting pigz-2.8-bs2taxmcalqybzx3ekltr74adkskotaz from binary cache
==> pigz: Successfully installed pigz-2.8-bs2taxmcalqybzx3ekltr74adkskotaz
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.04s.  Extract: 0.01s.  Relocate: 0.01s.  Total: 0.05s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/pigz-2.8-bs2taxmcalqybzx3ekltr74adkskotaz
==> Installing pigz-2.8-bs2taxmcalqybzx3ekltr74adkskotaz [38/68]
==> Fetching file:///mirror/blobs/sha256/1c/1cea6db67250561dd1373dc9670e764f9bd4d1a2db16419aed63c78c4e3fb059
    [100%]   62.72 MB @	 431.2 GB/s
==> Extracting libxml2-2.13.5-idam6zhjw4pckpaqppqomwiivjkuyu5d from binary cache
==> libxml2: Successfully installed libxml2-2.13.5-idam6zhjw4pckpaqppqomwiivjkuyu5d
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.12s.  Extract: 0.07s.  Relocate: 0.02s.  Total: 0.13s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libxml2-2.13.5-idam6zhjw4pckpaqppqomwiivjkuyu5d
==> Installing libxml2-2.13.5-idam6zhjw4pckpaqppqomwiivjkuyu5d [39/68]
==> Fetching file:///mirror/blobs/sha256/1b/1be051dbb0f6934499136055dd4f9bf8cf503081b6de57e687c080378120ba80
    [100%]  636.27 KB @	 855.4 MB/s
==> Extracting expat-2.7.3-ikeoatlzkkhg67u2gvk66yrplhodsa7t from binary cache
==> expat: Successfully installed expat-2.7.3-ikeoatlzkkhg67u2gvk66yrplhodsa7t
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.06s.  Extract: 0.02s.  Relocate: 0.01s.  Total: 0.07s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/expat-2.7.3-ikeoatlzkkhg67u2gvk66yrplhodsa7t
==> Installing expat-2.7.3-ikeoatlzkkhg67u2gvk66yrplhodsa7t [40/68]
==> Fetching file:///mirror/blobs/sha256/76/76ff26587fa3e1f2dd890da3b097517feae500866b81207fd5d457b3b274154e
    [100%]  961.91 KB @	 987.2 MB/s
==> Extracting gdbm-1.25-y5bsvao3cxpaqhcskqoe2wwm4reknblj from binary cache
==> gdbm: Successfully installed gdbm-1.25-y5bsvao3cxpaqhcskqoe2wwm4reknblj
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.07s.  Extract: 0.03s.  Relocate: 0.01s.  Total: 0.08s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gdbm-1.25-y5bsvao3cxpaqhcskqoe2wwm4reknblj
==> Installing gdbm-1.25-y5bsvao3cxpaqhcskqoe2wwm4reknblj [41/68]
==> Fetching file:///mirror/blobs/sha256/89/8964358e0481e7c998f1230ff59859b619ba331783c35723c33722fce7b34a6e
    [100%]   10.85 MB @	 421.3 GB/s
==> Extracting sqlite-3.50.4-plzt2ndvbqjwuh52b5es4vkokl5voxxq from binary cache
==> sqlite: Successfully installed sqlite-3.50.4-plzt2ndvbqjwuh52b5es4vkokl5voxxq
  Search: 0.00s.  Fetch: 0.02s.	 Install: 0.26s.  Extract: 0.20s.  Relocate: 0.02s.  Total: 0.28s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/sqlite-3.50.4-plzt2ndvbqjwuh52b5es4vkokl5voxxq
==> Installing sqlite-3.50.4-plzt2ndvbqjwuh52b5es4vkokl5voxxq [42/68]
==> Fetching file:///mirror/blobs/sha256/34/34e8cea4eb46b5807dece8e59b0b598c87af1cec25310557de4df6afcca1acd9
    [100%]  294.79 KB @	 611.5 MB/s
==> Extracting bzip2-1.0.8-zom5sydb4bski4vwb4db4ah4d6ykcxgu from binary cache
==> bzip2: Successfully installed bzip2-1.0.8-zom5sydb4bski4vwb4db4ah4d6ykcxgu
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.05s.  Extract: 0.01s.  Relocate: 0.01s.  Total: 0.06s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/bzip2-1.0.8-zom5sydb4bski4vwb4db4ah4d6ykcxgu
==> Installing bzip2-1.0.8-zom5sydb4bski4vwb4db4ah4d6ykcxgu [43/68]
==> Fetching file:///mirror/blobs/sha256/21/21c47a6f0358fbd071972268ba8bf53a3a03bf6bd5d91142e14e4c1aa1eb757c
    [100%]   64.96 MB @	 351.3 GB/s
==> Extracting hwloc-2.12.2-wkj6z6mxkax4joosfjb3j6c55b7lqzuf from binary cache
==> hwloc: Successfully installed hwloc-2.12.2-wkj6z6mxkax4joosfjb3j6c55b7lqzuf
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.20s.  Extract: 0.15s.  Relocate: 0.02s.  Total: 0.22s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/hwloc-2.12.2-wkj6z6mxkax4joosfjb3j6c55b7lqzuf
==> Installing hwloc-2.12.2-wkj6z6mxkax4joosfjb3j6c55b7lqzuf [44/68]
==> Fetching file:///mirror/blobs/sha256/56/564f99054e6e373a7230aabb09056f1c50c144df54bfdc16141af219b4f7aa5a
    [100%]   15.62 MB @	 421.3 GB/s
==> Extracting perl-5.42.0-jpuw66splunzfj35iooigoy5bpzpmage from binary cache
==> perl: Successfully installed perl-5.42.0-jpuw66splunzfj35iooigoy5bpzpmage
  Search: 0.00s.  Fetch: 0.03s.	 Install: 0.78s.  Extract: 0.64s.  Relocate: 0.10s.  Total: 0.81s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/perl-5.42.0-jpuw66splunzfj35iooigoy5bpzpmage
==> Installing perl-5.42.0-jpuw66splunzfj35iooigoy5bpzpmage [45/68]
==> Fetching file:///mirror/blobs/sha256/5f/5fa5f095a919483f2a90b969dff19bc1f8d0f6fb8cfab861976bedd2591f3860
    [100%]   61.27 MB @	 381.1 GB/s
==> Extracting tar-1.35-wfarfthvpwnuxoxzaznsrvply2sgx2zl from binary cache
==> tar: Successfully installed tar-1.35-wfarfthvpwnuxoxzaznsrvply2sgx2zl
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.08s.  Extract: 0.03s.  Relocate: 0.02s.  Total: 0.09s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/tar-1.35-wfarfthvpwnuxoxzaznsrvply2sgx2zl
==> Installing tar-1.35-wfarfthvpwnuxoxzaznsrvply2sgx2zl [46/68]
==> Fetching file:///mirror/blobs/sha256/45/451b1a76f21be01ee2a8e62f7489947eb894d4cee6f80c80ce0f9b0e212cdb50
    [100%]   61.03 MB @	 999.9 MB/s
==> Extracting autoconf-2.72-nzbffupyigbbaxqhjt4qxa2tdt6ezhxb from binary cache
==> autoconf: Successfully installed autoconf-2.72-nzbffupyigbbaxqhjt4qxa2tdt6ezhxb
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.15s.  Extract: 0.04s.  Relocate: 0.01s.  Total: 0.16s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/autoconf-2.72-nzbffupyigbbaxqhjt4qxa2tdt6ezhxb
==> Installing autoconf-2.72-nzbffupyigbbaxqhjt4qxa2tdt6ezhxb [47/68]
==> Fetching file:///mirror/blobs/sha256/1a/1a81221c52b2afa4b6f99340ee1b621ed6bb3ee2b5e35b9a943b358555dfcddd
    [100%]  744.42 KB @	 833.7 MB/s
==> Extracting libxcrypt-4.4.38-drjmmlw4cw7xa42jvz2zkj7fhmvflbzs from binary cache
==> libxcrypt: Successfully installed libxcrypt-4.4.38-drjmmlw4cw7xa42jvz2zkj7fhmvflbzs
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.06s.  Extract: 0.02s.  Relocate: 0.01s.  Total: 0.07s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libxcrypt-4.4.38-drjmmlw4cw7xa42jvz2zkj7fhmvflbzs
==> Installing libxcrypt-4.4.38-drjmmlw4cw7xa42jvz2zkj7fhmvflbzs [48/68]
==> Fetching file:///mirror/blobs/sha256/ae/aeff6cfb3399681a46f38c63b4c28b54cf1378cc9d87070693ea9a857701efe0
    [100%]   68.14 MB @	 571.3 GB/s
==> Extracting openssl-3.6.0-q4fenforztsbdicbojnnh2ursudyzygb from binary cache
==> openssl: Successfully installed openssl-3.6.0-q4fenforztsbdicbojnnh2ursudyzygb
  Search: 0.00s.  Fetch: 0.02s.	 Install: 0.23s.  Extract: 0.18s.  Relocate: 0.02s.  Total: 0.25s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/openssl-3.6.0-q4fenforztsbdicbojnnh2ursudyzygb
==> Installing openssl-3.6.0-q4fenforztsbdicbojnnh2ursudyzygb [49/68]
==> Fetching file:///mirror/blobs/sha256/fe/fec353efd4775021067e3abd226d8eaf7d2f4162f826a22bd6e7ba98f652eb80
    [100%]   12.71 MB @	 401.3 GB/s
==> Extracting gettext-0.23.1-3f5v73yqnfdtac6tgkv43ceywl5ujlbt from binary cache
==> gettext: Successfully installed gettext-0.23.1-3f5v73yqnfdtac6tgkv43ceywl5ujlbt
  Search: 0.00s.  Fetch: 0.02s.	 Install: 0.59s.  Extract: 0.52s.  Relocate: 0.04s.  Total: 0.62s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gettext-0.23.1-3f5v73yqnfdtac6tgkv43ceywl5ujlbt
==> Installing gettext-0.23.1-3f5v73yqnfdtac6tgkv43ceywl5ujlbt [50/68]
==> Fetching file:///mirror/blobs/sha256/42/425a9cf5a729fa652891db98cb363e0ca2f8211e677f5bc770426866c79c4059
    [100%]  710.71 KB @	 827.6 MB/s
==> Extracting automake-1.16.5-zmzk4bb3og3uivh4e75edsiyc3pjid55 from binary cache
==> automake: Successfully installed automake-1.16.5-zmzk4bb3og3uivh4e75edsiyc3pjid55
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.09s.  Extract: 0.04s.  Relocate: 0.02s.  Total: 0.10s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/automake-1.16.5-zmzk4bb3og3uivh4e75edsiyc3pjid55
==> Installing automake-1.16.5-zmzk4bb3og3uivh4e75edsiyc3pjid55 [51/68]
==> Fetching file:///mirror/blobs/sha256/5e/5e7eafb9fd0f7cc61c2c32ca35d98b88f343174b8c89743ced108fbb319cd019
    [100%]   62.87 MB @	 461.2 GB/s
==> Extracting libevent-2.1.12-fn26hildnamhqbytlfpq7hnnb5buy36v from binary cache
==> libevent: Successfully installed libevent-2.1.12-fn26hildnamhqbytlfpq7hnnb5buy36v
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.11s.  Extract: 0.07s.  Relocate: 0.01s.  Total: 0.12s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libevent-2.1.12-fn26hildnamhqbytlfpq7hnnb5buy36v
==> Installing libevent-2.1.12-fn26hildnamhqbytlfpq7hnnb5buy36v [52/68]
==> Fetching file:///mirror/blobs/sha256/d6/d65881cbe8859834a37e6b54c6fa0fddd637046905b5039a30464235c6151caa
    [100%]   61.27 MB @	 471.1 GB/s
==> Extracting curl-8.15.0-zianoaa5jzrbwhxsmm7bnhaxrdbq6jpb from binary cache
==> curl: Successfully installed curl-8.15.0-zianoaa5jzrbwhxsmm7bnhaxrdbq6jpb
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.08s.  Extract: 0.03s.  Relocate: 0.01s.  Total: 0.09s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/curl-8.15.0-zianoaa5jzrbwhxsmm7bnhaxrdbq6jpb
==> Installing curl-8.15.0-zianoaa5jzrbwhxsmm7bnhaxrdbq6jpb [53/68]
==> Fetching file:///mirror/blobs/sha256/09/094ee8e5047a450a9b1cdfad98834cb3ccff10f0f334a05725cb5a2cc0a4c812
    [100%]   98.78 MB @	 421.4 GB/s
==> Extracting python-3.14.0-yvs3szqzvvdlgtd5oih22mie2uyjgz42 from binary cache
==> python: Successfully installed python-3.14.0-yvs3szqzvvdlgtd5oih22mie2uyjgz42
  Search: 0.00s.  Fetch: 0.15s.	 Install: 3.34s.  Extract: 3.16s.  Relocate: 0.15s.  Total: 3.49s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/python-3.14.0-yvs3szqzvvdlgtd5oih22mie2uyjgz42
==> Installing python-3.14.0-yvs3szqzvvdlgtd5oih22mie2uyjgz42 [54/68]
==> Fetching file:///mirror/blobs/sha256/a1/a1f963fa003e46337cc051275b09233f0177fc5f3623d50ae22feceaf41606ad
    [100%]   61.97 MB @	 401.2 GB/s
==> Extracting krb5-1.21.3-onmo4bvd2j5t6x3udrswlorxjaxxmc3z from binary cache
==> krb5: Successfully installed krb5-1.21.3-onmo4bvd2j5t6x3udrswlorxjaxxmc3z
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.14s.  Extract: 0.07s.  Relocate: 0.04s.  Total: 0.15s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/krb5-1.21.3-onmo4bvd2j5t6x3udrswlorxjaxxmc3z
==> Installing krb5-1.21.3-onmo4bvd2j5t6x3udrswlorxjaxxmc3z [55/68]
==> Fetching file:///mirror/blobs/sha256/05/0569b4297d99ee9477064f75a150f847a27d25c96922219f56801bfbab932779
    [100%]  398.05 KB @	 681.2 MB/s
==> Extracting numactl-2.0.18-t2nikrtxvuwdjvtutokwb374p2sbinlr from binary cache
==> numactl: Successfully installed numactl-2.0.18-t2nikrtxvuwdjvtutokwb374p2sbinlr
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.06s.  Extract: 0.02s.  Relocate: 0.01s.  Total: 0.07s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/numactl-2.0.18-t2nikrtxvuwdjvtutokwb374p2sbinlr
==> Installing numactl-2.0.18-t2nikrtxvuwdjvtutokwb374p2sbinlr [56/68]
==> Fetching file:///mirror/blobs/sha256/28/28ba9baff735b81352c4bad8ab64b6ea66027700414916fb16864cca30e7fff9
    [100%]   66.40 MB @	 411.3 GB/s
==> Extracting pmix-6.0.0-76oyav4s3nnn3iba2rxxip3gvv6rrybc from binary cache
==> pmix: Successfully installed pmix-6.0.0-76oyav4s3nnn3iba2rxxip3gvv6rrybc
  Search: 0.00s.  Fetch: 0.02s.	 Install: 0.22s.  Extract: 0.16s.  Relocate: 0.03s.  Total: 0.23s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/pmix-6.0.0-76oyav4s3nnn3iba2rxxip3gvv6rrybc
==> Installing pmix-6.0.0-76oyav4s3nnn3iba2rxxip3gvv6rrybc [57/68]
==> Fetching file:///mirror/blobs/sha256/d8/d811fdb2a0072d2cae1a35bdfb03d5a06d2e0c3cde85e53e988b283d1c5381cf
    [100%]   29.85 MB @	 411.3 GB/s
==> Extracting cmake-3.31.9-4a7thjgehxuwjfswyxnyoquuj5lmtzku from binary cache
==> cmake: Successfully installed cmake-3.31.9-4a7thjgehxuwjfswyxnyoquuj5lmtzku
  Search: 0.00s.  Fetch: 0.05s.	 Install: 1.25s.  Extract: 1.14s.  Relocate: 0.08s.  Total: 1.30s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/cmake-3.31.9-4a7thjgehxuwjfswyxnyoquuj5lmtzku
==> Installing cmake-3.31.9-4a7thjgehxuwjfswyxnyoquuj5lmtzku [58/68]
==> Fetching file:///mirror/blobs/sha256/de/de3cbf2d958183636005db17720a60422a0c80633cf667cdd27517b30e9bf1da
    [100%]   63.84 MB @	 431.3 GB/s
==> Extracting yaksa-0.4-7jn3vivsnjknixt6nr4il7jdglpprcob from binary cache
==> yaksa: Successfully installed yaksa-0.4-7jn3vivsnjknixt6nr4il7jdglpprcob
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.13s.  Extract: 0.08s.  Relocate: 0.01s.  Total: 0.14s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/yaksa-0.4-7jn3vivsnjknixt6nr4il7jdglpprcob
==> Installing yaksa-0.4-7jn3vivsnjknixt6nr4il7jdglpprcob [59/68]
==> Fetching file:///mirror/blobs/sha256/93/93ab17395a7dee9efb5790ad264cac9523df6f8df86665cdbbaec7ebcf719b74
    [100%]   63.10 MB @	 371.2 GB/s
==> Extracting openssh-9.9p1-lip7jtpgcoxwbzodoemijlvwudtfkjz5 from binary cache
==> openssh: Successfully installed openssh-9.9p1-lip7jtpgcoxwbzodoemijlvwudtfkjz5
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.15s.  Extract: 0.07s.  Relocate: 0.04s.  Total: 0.16s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/openssh-9.9p1-lip7jtpgcoxwbzodoemijlvwudtfkjz5
==> Installing openssh-9.9p1-lip7jtpgcoxwbzodoemijlvwudtfkjz5 [60/68]
==> Fetching file:///mirror/blobs/sha256/00/00732a5a39401d9757fab35e1dab15cc6f35ca2b6372091a58f099e992dbed47
    [100%]   64.86 MB @	 421.3 GB/s
==> Extracting prrte-4.0.0-zalt7csrlsooyok5gqhodzwtab3qvoc3 from binary cache
==> prrte: Successfully installed prrte-4.0.0-zalt7csrlsooyok5gqhodzwtab3qvoc3
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.17s.  Extract: 0.11s.  Relocate: 0.02s.  Total: 0.19s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/prrte-4.0.0-zalt7csrlsooyok5gqhodzwtab3qvoc3
==> Installing prrte-4.0.0-zalt7csrlsooyok5gqhodzwtab3qvoc3 [61/68]
==> Fetching file:///mirror/blobs/sha256/77/7769e2156df5ee688e458a9f42ba5dd745e734269e963baf3ca27785328fd4d8
    [100%]   69.90 MB @	 471.3 GB/s
==> Extracting netlib-lapack-3.12.1-rhz3ueke3w4sennowbhe5wkehj32jcyt from binary cache
==> netlib-lapack: Successfully installed netlib-lapack-3.12.1-rhz3ueke3w4sennowbhe5wkehj32jcyt
  Search: 0.00s.  Fetch: 0.02s.	 Install: 0.35s.  Extract: 0.22s.  Relocate: 0.03s.  Total: 0.38s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/netlib-lapack-3.12.1-rhz3ueke3w4sennowbhe5wkehj32jcyt
==> Installing netlib-lapack-3.12.1-rhz3ueke3w4sennowbhe5wkehj32jcyt [62/68]
==> Fetching file:///mirror/blobs/sha256/b1/b169e3b2207480bfd2f4e5eb790791ce8ab0d3d9ca489d9783cf700c6862848b
    [100%]   15.15 MB @	 471.4 GB/s
==> Extracting mpich-4.3.2-uaioo2homcambwkqlfarew27bk6dqgqa from binary cache
==> mpich: Successfully installed mpich-4.3.2-uaioo2homcambwkqlfarew27bk6dqgqa
  Search: 0.00s.  Fetch: 0.03s.	 Install: 0.95s.  Extract: 0.88s.  Relocate: 0.04s.  Total: 0.98s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/mpich-4.3.2-uaioo2homcambwkqlfarew27bk6dqgqa
==> Installing mpich-4.3.2-uaioo2homcambwkqlfarew27bk6dqgqa [63/68]
==> Fetching file:///mirror/blobs/sha256/d2/d263c358d41e304231d8f8d07132398600fd36c64c4877cd5f5b111423512a62
    [100%]   14.55 MB @	 441.4 GB/s
==> Extracting openmpi-5.0.8-p2gmhau5kodki37wh5qws6a6b3jclhf6 from binary cache
==> openmpi: Successfully installed openmpi-5.0.8-p2gmhau5kodki37wh5qws6a6b3jclhf6
  Search: 0.00s.  Fetch: 0.03s.	 Install: 0.72s.  Extract: 0.65s.  Relocate: 0.04s.  Total: 0.75s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-p2gmhau5kodki37wh5qws6a6b3jclhf6
==> Installing openmpi-5.0.8-p2gmhau5kodki37wh5qws6a6b3jclhf6 [64/68]
==> Fetching file:///mirror/blobs/sha256/8b/8be728f429fd697cbd43ec01a478621520fec33a0c863fc06e8c51cad76e68a6
    [100%]   62.72 MB @	 461.2 GB/s
==> Extracting netlib-scalapack-2.2.2-3t7cajdej6kytam44sv3h6hermemexli from binary cache
==> netlib-scalapack: Successfully installed netlib-scalapack-2.2.2-3t7cajdej6kytam44sv3h6hermemexli
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.20s.  Extract: 0.06s.  Relocate: 0.03s.  Total: 0.21s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/netlib-scalapack-2.2.2-3t7cajdej6kytam44sv3h6hermemexli
==> Installing netlib-scalapack-2.2.2-3t7cajdej6kytam44sv3h6hermemexli [65/68]
==> Fetching file:///mirror/blobs/sha256/0a/0a453b08ef1a681c9bde495eeb29e416b91b5c46cde573767ff61fd2524f2ba8
    [100%]   62.72 MB @	 421.2 GB/s
==> Extracting netlib-scalapack-2.2.2-pglf7pu6w2t7p2itr5sq5arvlc2xmrjt from binary cache
==> netlib-scalapack: Successfully installed netlib-scalapack-2.2.2-pglf7pu6w2t7p2itr5sq5arvlc2xmrjt
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.13s.  Extract: 0.06s.  Relocate: 0.03s.  Total: 0.14s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/netlib-scalapack-2.2.2-pglf7pu6w2t7p2itr5sq5arvlc2xmrjt
==> Installing netlib-scalapack-2.2.2-pglf7pu6w2t7p2itr5sq5arvlc2xmrjt [66/68]
==> Fetching file:///mirror/blobs/sha256/9d/9dc420645aca7c0b19bb8eba80b5781d3e688b6b2f1a6b8cb8b5a57b3425d394
    [100%]   62.73 MB @	 371.2 GB/s
==> Extracting netlib-scalapack-2.2.2-apaz22ojhzvggduhgoqhdd2paxix3azc from binary cache
==> netlib-scalapack: Successfully installed netlib-scalapack-2.2.2-apaz22ojhzvggduhgoqhdd2paxix3azc
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.14s.  Extract: 0.06s.  Relocate: 0.03s.  Total: 0.15s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/netlib-scalapack-2.2.2-apaz22ojhzvggduhgoqhdd2paxix3azc
==> Installing netlib-scalapack-2.2.2-apaz22ojhzvggduhgoqhdd2paxix3azc [67/68]
==> Fetching file:///mirror/blobs/sha256/14/140755102624721dcb4e526fd3aad57a7e612d977a05f94f2f8f97cd6fea7408
    [100%]   62.73 MB @	 391.0 GB/s
==> Extracting netlib-scalapack-2.2.2-yxweja4r47huk5yxgel4byighydafl5q from binary cache
==> netlib-scalapack: Successfully installed netlib-scalapack-2.2.2-yxweja4r47huk5yxgel4byighydafl5q
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.21s.  Extract: 0.06s.  Relocate: 0.03s.  Total: 0.22s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/netlib-scalapack-2.2.2-yxweja4r47huk5yxgel4byighydafl5q
==> Installing netlib-scalapack-2.2.2-yxweja4r47huk5yxgel4byighydafl5q [68/68]

Let’s double check which specs we have installed:

$ spack find
==> In environment /home/spack/stacks
==> 5 root specs
-- no arch / no compilers ---------------------------------------
[+] gcc@12	      [+] netlib-scalapack  [+] netlib-scalapack
[+] netlib-scalapack  [+] netlib-scalapack

-- linux-ubuntu22.04-x86_64_v3 / %c,cxx,fortran=gcc@12.3.0 ------
mpich@4.3.2  openblas@0.3.30  openmpi@5.0.8

-- linux-ubuntu22.04-x86_64_v3 / %c,cxx=gcc@11.4.0 --------------
berkeley-db@18.1.40  gcc@12.3.0	     m4@1.4.20		   texinfo@7.2
bison@3.8.2	     gettext@0.23.1  ncurses@6.5-20250705  zlib-ng@2.0.7
flex@2.6.3	     gmp@6.3.0	     nghttp2@1.48.0	   zstd@1.5.7

-- linux-ubuntu22.04-x86_64_v3 / %c,cxx=gcc@12.3.0 --------------
cmake@3.31.9  gettext@0.23.1  libffi@3.5.2	    openssl@3.6.0  zstd@1.5.7
curl@8.15.0   hwloc@2.12.2    ncurses@6.5-20250705  python@3.14.0
expat@2.7.3   krb5@1.21.3     openssh@9.9p1	    zlib-ng@2.2.4

-- linux-ubuntu22.04-x86_64_v3 / %c,fortran=gcc@12.3.0 ----------
netlib-lapack@3.12.1	netlib-scalapack@2.2.2	netlib-scalapack@2.2.2
netlib-scalapack@2.2.2	netlib-scalapack@2.2.2

-- linux-ubuntu22.04-x86_64_v3 / %c=gcc@11.4.0 ------------------
automake@1.16.5	  gawk@5.3.1	 libsigsegv@2.14  mpfr@4.2.1	 readline@8.3
bzip2@1.0.8	  gdbm@1.25	 libtool@2.4.7	  perl@5.42.0	 tar@1.35
diffutils@3.12	  gmake@4.4.1	 libxml2@2.13.5	  pigz@2.8	 xz@5.6.3
findutils@4.10.0  libiconv@1.18	 mpc@1.3.1	  pkgconf@2.5.1

-- linux-ubuntu22.04-x86_64_v3 / %c=gcc@12.3.0 ------------------
automake@1.16.5	 libedit@3.1-20240808  libpciaccess@0.17  pigz@2.8	 tar@1.35
bzip2@1.0.8	 libevent@2.1.12       libxcrypt@4.4.38	  pmix@6.0.0	 util-linux-uuid@2.41
diffutils@3.12	 libfabric@2.3.1       libxml2@2.13.5	  prrte@4.0.0	 xz@5.6.3
gdbm@1.25	 libiconv@1.18	       numactl@2.0.18	  readline@8.3	 yaksa@0.4
libbsd@0.12.2	 libmd@1.1.0	       perl@5.42.0	  sqlite@3.50.4

-- linux-ubuntu22.04-x86_64_v3 / no compilers -------------------
autoconf@2.72			    compiler-wrapper@1.0  glibc@2.35
autoconf@2.72			    gcc@11.4.0		  util-macros@1.20.1
autoconf-archive@2023.02.20	    gcc-runtime@11.4.0
ca-certificates-mozilla@2025-08-12  gcc-runtime@12.3.0
==> 86 installed packages
==> 0 concretized packages to be installed (show with `spack find -c`)

As we can see we have our four variations of netlib-scalapack installed.

Reusable definitions

So far, we have seen how we can use spec matrices to generate cross-product specs from rows containing a list of constraints. A common situation you will encounter with large deployments is the necessity to add multiple matrices to the list of specs, that possibly share some of those rows.

To reduce the amount of duplication needed in the manifest file, and thus the maintenance burden, Spack allows to define lists of constraints under the definitions attribute, and expand them later when needed. Let’s rewrite our manifest accordingly:

# This is a Spack Environment file.
#
# It describes a set of packages to be installed, along with
# configuration settings.
spack:
  definitions:
    - mpis: [ openmpi, mpich ]
    - lapacks: [ openblas, netlib-lapack ]
    - compilers: [ "gcc@12" ]
    - mpi_packages: [ netlib-scalapack ]

  specs:
  - gcc@12%gcc@11
  - matrix:
    - [$mpi_packages]
    - [$^mpis]
    - [$^lapacks]
    - [$%compilers]

  view: false
  concretizer:
    unify: false

Check that re-concretizing won’t change the environment:

$ spack concretize
==> No new specs to concretize.
$ spack find -l
==> In environment /home/spack/stacks
==> 5 root specs
-- no arch / no compilers ---------------------------------------
[+] fmnvqo4 gcc@12	      [+] 3t7cajd netlib-scalapack  [+] yxweja4 netlib-scalapack
[+] pglf7pu netlib-scalapack  [+] apaz22o netlib-scalapack

-- linux-ubuntu22.04-x86_64_v3 / %c,cxx,fortran=gcc@12.3.0 ------
uaioo2h mpich@4.3.2  dwjd7g2 openblas@0.3.30  p2gmhau openmpi@5.0.8

-- linux-ubuntu22.04-x86_64_v3 / %c,cxx=gcc@11.4.0 --------------
vdgigsw berkeley-db@18.1.40  cakgj4n gettext@0.23.1	   ft5kpbd nghttp2@1.48.0
n7yzkyl bison@3.8.2	     mj4re3l gmp@6.3.0		   k6ygirs texinfo@7.2
gmhq65u flex@2.6.3	     lxvpwti m4@1.4.20		   qlavhjb zlib-ng@2.0.7
fmnvqo4 gcc@12.3.0	     ncdxq3j ncurses@6.5-20250705  foiizhd zstd@1.5.7

-- linux-ubuntu22.04-x86_64_v3 / %c,cxx=gcc@12.3.0 --------------
4a7thjg cmake@3.31.9	onmo4bv krb5@1.21.3	      yvs3szq python@3.14.0
zianoaa curl@8.15.0	s56v4gf libffi@3.5.2	      4tglvhv zlib-ng@2.2.4
ikeoatl expat@2.7.3	ytk4y2k ncurses@6.5-20250705  fj5u5hm zstd@1.5.7
3f5v73y gettext@0.23.1	lip7jtp openssh@9.9p1
wkj6z6m hwloc@2.12.2	q4fenfo openssl@3.6.0

-- linux-ubuntu22.04-x86_64_v3 / %c,fortran=gcc@12.3.0 ----------
rhz3uek netlib-lapack@3.12.1	apaz22o netlib-scalapack@2.2.2
pglf7pu netlib-scalapack@2.2.2	yxweja4 netlib-scalapack@2.2.2
3t7cajd netlib-scalapack@2.2.2

-- linux-ubuntu22.04-x86_64_v3 / %c=gcc@11.4.0 ------------------
pzmnwzm automake@1.16.5	  qtepnkr libiconv@1.18	   kaz756e pigz@2.8
x7t4naj bzip2@1.0.8	  bs5ujst libsigsegv@2.14  f4qiprw pkgconf@2.5.1
cih4xrz diffutils@3.12	  yt7ajy4 libtool@2.4.7	   c6d2zlj readline@8.3
irvryts findutils@4.10.0  5trxrsw libxml2@2.13.5   lfgvgva tar@1.35
irhvzch gawk@5.3.1	  sczvrku mpc@1.3.1	   yzaocbs xz@5.6.3
aq7qwy6 gdbm@1.25	  m3nwalt mpfr@4.2.1
4obn7cg gmake@4.4.1	  62kt5y4 perl@5.42.0

-- linux-ubuntu22.04-x86_64_v3 / %c=gcc@12.3.0 ------------------
zmzk4bb automake@1.16.5	      g3zxoz6 libiconv@1.18	 76oyav4 pmix@6.0.0
zom5syd bzip2@1.0.8	      cq4lpjp libmd@1.1.0	 zalt7cs prrte@4.0.0
msusunh diffutils@3.12	      p7g23cj libpciaccess@0.17	 eyfbskp readline@8.3
y5bsvao gdbm@1.25	      drjmmlw libxcrypt@4.4.38	 plzt2nd sqlite@3.50.4
zb37a5t libbsd@0.12.2	      idam6zh libxml2@2.13.5	 wfarfth tar@1.35
c5o6gvv libedit@3.1-20240808  t2nikrt numactl@2.0.18	 b4npzn6 util-linux-uuid@2.41
fn26hil libevent@2.1.12	      jpuw66s perl@5.42.0	 643vviq xz@5.6.3
7imejdf libfabric@2.3.1	      bs2taxm pigz@2.8		 7jn3viv yaksa@0.4

-- linux-ubuntu22.04-x86_64_v3 / no compilers -------------------
nzbffup autoconf@2.72			    ml7cem5 gcc@11.4.0
fgsf5ij autoconf@2.72			    nokfxva gcc-runtime@11.4.0
7p7gq7u autoconf-archive@2023.02.20	    pgwnyw7 gcc-runtime@12.3.0
etqlnw5 ca-certificates-mozilla@2025-08-12  qg7qyaz glibc@2.35
ntccuj2 compiler-wrapper@1.0		    hwxnwvm util-macros@1.20.1
==> 86 installed packages
==> 0 concretized packages to be installed (show with `spack find -c`)

Now we can use those definitions to add e.g. serial packages built against the LAPACK libraries. Let’s try to do that by using py-scipy as an example:

Another useful ability is excluding specific entries from a cross-product matrix. We can do that with the exclude keyword, in the same item as the matrix. Try to remove py-scipy ^netlib-lapack from our matrix:

# This is a Spack Environment file.
#
# It describes a set of packages to be installed, along with
# configuration settings.
spack:
  definitions:
    - mpis: [ openmpi, mpich ]
    - lapacks: [ openblas, netlib-lapack ]
    - compilers: [ "gcc@12" ]
    - mpi_packages: [ netlib-scalapack ]
    - serial_packages: [py-scipy]

  specs:
  - gcc@12%gcc@11
  - matrix:
    - [$mpi_packages]
    - [$^mpis]
    - [$^lapacks]
    - [$%compilers]
  - matrix:
    - [$serial_packages]
    - [$^lapacks]
    - [$%compilers]
    exclude:
      - "py-scipy ^netlib-lapack"
  view: false
  concretizer:
    unify: false

Concretize the environment and install the specs again:

$ spack concretize
==> Starting concretization
==> Concretized 1 spec:
 -   igjijid  py-scipy@1.16.3 build_system=python_pip platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx,fortran=gcc@12.3.0
[+]  ntccuj2	  ^compiler-wrapper@1.0 build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3
[+]  fmnvqo4	  ^gcc@12.3.0~binutils+bootstrap~graphite~mold~nvptx~piclibs~profiled~strip build_system=autotools build_type=RelWithDebInfo languages:='c,c++,fortran' platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
[+]  cih4xrz	      ^diffutils@3.12 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  qtepnkr		  ^libiconv@1.18 build_system=autotools libs:=shared,static platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  irhvzch	      ^gawk@5.3.1~nls build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  bs5ujst		  ^libsigsegv@2.14 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  c6d2zlj		  ^readline@8.3 build_system=autotools patches:=21f0a03 platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[e]  ml7cem5	      ^gcc@11.4.0~binutils+bootstrap~graphite~nvptx~piclibs~profiled~strip build_system=autotools build_type=RelWithDebInfo languages:='c,c++,fortran' platform=linux os=ubuntu22.04 target=x86_64_v3
[+]  nokfxva	      ^gcc-runtime@11.4.0 build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3
[+]  4obn7cg	      ^gmake@4.4.1~guile build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  mj4re3l	      ^gmp@6.3.0+cxx build_system=autotools libs:=shared,static platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
[+]  fgsf5ij		  ^autoconf@2.72 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3
[+]  pzmnwzm		  ^automake@1.16.5 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  lxvpwti		  ^m4@1.4.20+sigsegv build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
[+]  yt7ajy4	      ^libtool@2.4.7 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  irvryts		  ^findutils@4.10.0 build_system=autotools patches:=440b954 platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  sczvrku	      ^mpc@1.3.1 build_system=autotools libs:=shared,static platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  m3nwalt	      ^mpfr@4.2.1 build_system=autotools libs:=shared,static patches:=3ec29a6 platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  7p7gq7u		  ^autoconf-archive@2023.02.20 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3
[+]  62kt5y4	      ^perl@5.42.0+cpanm+opcode+open+shared+threads build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  vdgigsw		  ^berkeley-db@18.1.40+cxx~docs+stl build_system=autotools patches:=26090f4,b231fcc platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
[+]  x7t4naj		  ^bzip2@1.0.8~debug~pic+shared build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  aq7qwy6		  ^gdbm@1.25 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  k6ygirs	      ^texinfo@7.2~xs build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
[+]  cakgj4n		  ^gettext@0.23.1+bzip2+curses+git~libunistring+libxml2+pic+shared+tar+xz build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
[+]  5trxrsw		      ^libxml2@2.13.5~http+pic~python+shared build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  lfgvgva		      ^tar@1.35 build_system=autotools zip=pigz platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  kaz756e			  ^pigz@2.8 build_system=makefile platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  yzaocbs		      ^xz@5.6.3~pic build_system=autotools libs:=shared,static platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  ncdxq3j		  ^ncurses@6.5-20250705~symlinks+termlib abi=none build_system=autotools patches:=7a351bc platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
[+]  qlavhjb	      ^zlib-ng@2.0.7 cflags=-O3 +compat+new_strategies+opt+pic+shared build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
[+]  foiizhd	      ^zstd@1.5.7+programs build_system=makefile compression:=none libs:=shared,static platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
[+]  pgwnyw7	  ^gcc-runtime@12.3.0 build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3
[e]  qg7qyaz	  ^glibc@2.35 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3
[+]  dwjd7g2	  ^openblas@0.3.30~bignuma~consistent_fpcsr+dynamic_dispatch+fortran~ilp64+locking+pic+shared build_system=makefile symbol_suffix=none threads=openmp platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx,fortran=gcc@12.3.0
[+]  f4qiprw	  ^pkgconf@2.5.1 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
 -   apuchub	  ^py-cython@3.1.3 build_system=python_pip platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
 -   urwrpfo	      ^py-setuptools@80.9.0 build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3
 -   o6u3um7	  ^py-meson-python@0.18.0 build_system=python_pip platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   c5mkho7	      ^meson@1.8.5 build_system=python_pip patches:=0f0b1bd platform=linux os=ubuntu22.04 target=x86_64_v3
[+]  2stmhpc	      ^ninja@1.13.0+re2c build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
[+]  rbf2x4i		  ^python@3.11.14+bz2+crypt+ctypes+dbm~debug+libxml2+lzma~optimizations+pic+pyexpat+pythoncmd+readline+shared+sqlite3+ssl~tkinter+uuid+zlib build_system=generic patches:=13fa8bf,b0615b2,ebdca64,f2fd060 platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
[+]  7yr5v6w		      ^expat@2.7.3+libbsd build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
[+]  ucrhsyw			  ^libbsd@0.12.2 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  gth3ii5			      ^libmd@1.1.0 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  zgro4tw		      ^libffi@3.5.2 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
[+]  yiij42p		      ^libxcrypt@4.4.38~obsolete_api build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  gv7wpik		      ^openssl@3.6.0~docs+shared build_system=generic certs=mozilla platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
[+]  elvodyb		      ^sqlite@3.50.4+column_metadata+fts+rtree build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  n45otd3		      ^util-linux-uuid@2.41 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
[+]  axmwics		  ^re2c@3.1 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
 -   j3t7cjg	      ^py-packaging@25.0 build_system=python_pip platform=linux os=ubuntu22.04 target=x86_64_v3
 -   55omqj2		  ^py-flit-core@3.12.0 build_system=python_pip platform=linux os=ubuntu22.04 target=x86_64_v3
 -   sypchiv	      ^py-pyproject-metadata@0.9.1 build_system=python_pip platform=linux os=ubuntu22.04 target=x86_64_v3
 -   ucqh5ku	  ^py-numpy@2.3.4 build_system=python_pip patches:=873745d platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
 -   qwew5rg	  ^py-pip@25.1.1 build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3
 -   b7sx7ll	  ^py-pybind11@3.0.1+ipo build_system=cmake build_type=Release generator=ninja platform=linux os=ubuntu22.04 target=x86_64_v3 %cxx=gcc@12.3.0
[+]  4a7thjg	      ^cmake@3.31.9~doc+ncurses+ownlibs~qtgui build_system=generic build_type=Release platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
[+]  zianoaa		  ^curl@8.15.0~gssapi~ldap~libidn2~librtmp~libssh~libssh2+nghttp2 build_system=autotools libs:=shared,static tls:=openssl platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
[+]  ft5kpbd		      ^nghttp2@1.48.0 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
 -   5r47zyp	      ^py-scikit-build-core@0.11.5~pyproject build_system=python_pip platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx,fortran=gcc@12.3.0
 -   44uhp2g		  ^py-hatch-vcs@0.5.0 build_system=python_pip platform=linux os=ubuntu22.04 target=x86_64_v3
 -   xcq4max		      ^py-setuptools-scm@8.2.1+toml build_system=python_pip platform=linux os=ubuntu22.04 target=x86_64_v3
 -   aim3224			  ^git@2.48.1+man+nls+perl+subtree~tcltk build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
[+]  nzbffup			      ^autoconf@2.72 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3
[+]  zmzk4bb			      ^automake@1.16.5 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   gntupl3			      ^libidn2@2.3.7 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
 -   x5b7oet				  ^libunistring@1.2 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
[+]  lip7jtp			      ^openssh@9.9p1+gssapi build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
[+]  onmo4bv				  ^krb5@1.21.3+shared build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
[+]  n7yzkyl				      ^bison@3.8.2~color build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@11.4.0
[+]  c5o6gvv				  ^libedit@3.1-20240808 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
[+]  drjmmlw				  ^libxcrypt@4.4.38~obsolete_api build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
[+]  z5vjj7q			      ^pcre2@10.44~jit+multibyte+pic build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@11.4.0
 -   qb7x6jy		  ^py-hatchling@1.27.0 build_system=python_pip platform=linux os=ubuntu22.04 target=x86_64_v3
 -   2c2amjc		      ^py-pluggy@1.6.0 build_system=python_pip platform=linux os=ubuntu22.04 target=x86_64_v3
 -   cwn5qw7		      ^py-trove-classifiers@2025.9.11.17 build_system=python_pip platform=linux os=ubuntu22.04 target=x86_64_v3
 -   gnnyu6h			  ^py-calver@2025.4.17 build_system=python_pip platform=linux os=ubuntu22.04 target=x86_64_v3
 -   wvr3fhe		  ^py-pathspec@0.12.1 build_system=python_pip platform=linux os=ubuntu22.04 target=x86_64_v3
 -   w4fhoiy	  ^py-pythran@0.18.0 build_system=python_pip platform=linux os=ubuntu22.04 target=x86_64_v3 %cxx=gcc@12.3.0
 -   g6mqwbr	      ^py-beniget@0.4.2.post1 build_system=python_pip platform=linux os=ubuntu22.04 target=x86_64_v3
 -   xrd6sez	      ^py-gast@0.6.0 build_system=python_pip platform=linux os=ubuntu22.04 target=x86_64_v3
 -   xgx3hu4	      ^py-ply@3.11 build_system=python_pip platform=linux os=ubuntu22.04 target=x86_64_v3
 -   vs4xbx3	  ^py-wheel@0.45.1 build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3
[+]  yvs3szq	  ^python@3.14.0+bz2+ctypes+dbm~debug+libxml2+lzma~optimizations+pic+pyexpat+pythoncmd+readline+shared+sqlite3+ssl~tkinter+uuid+zlib+zstd build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
[+]  zom5syd	      ^bzip2@1.0.8~debug~pic+shared build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
[+]  msusunh		  ^diffutils@3.12 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
[+]  ikeoatl	      ^expat@2.7.3+libbsd build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
[+]  zb37a5t		  ^libbsd@0.12.2 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
[+]  cq4lpjp		      ^libmd@1.1.0 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
[+]  y5bsvao	      ^gdbm@1.25 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
[+]  3f5v73y	      ^gettext@0.23.1+bzip2+curses+git~libunistring+libxml2+pic+shared+tar+xz build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
[+]  g3zxoz6		  ^libiconv@1.18 build_system=autotools libs:=shared,static platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
[+]  idam6zh		  ^libxml2@2.13.5~http+pic~python+shared build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
[+]  wfarfth		  ^tar@1.35 build_system=autotools zip=pigz platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
[+]  bs2taxm		      ^pigz@2.8 build_system=makefile platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
[+]  s56v4gf	      ^libffi@3.5.2 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
[+]  ytk4y2k	      ^ncurses@6.5-20250705~symlinks+termlib abi=none build_system=autotools patches:=7a351bc platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
[+]  q4fenfo	      ^openssl@3.6.0~docs+shared build_system=generic certs=mozilla platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
[+]  etqlnw5		  ^ca-certificates-mozilla@2025-08-12 build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3
[+]  jpuw66s		  ^perl@5.42.0+cpanm+opcode+open+shared+threads build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
[+]  eyfbskp	      ^readline@8.3 build_system=autotools patches:=21f0a03 platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
[+]  plzt2nd	      ^sqlite@3.50.4+column_metadata+fts+rtree build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
[+]  b4npzn6	      ^util-linux-uuid@2.41 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
[+]  643vviq	      ^xz@5.6.3~pic build_system=autotools libs:=shared,static platform=linux os=ubuntu22.04 target=x86_64_v3 %c=gcc@12.3.0
[+]  4tglvhv	      ^zlib-ng@2.2.4+compat+new_strategies+opt+pic+shared build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
[+]  fj5u5hm	      ^zstd@1.5.7+programs build_system=makefile compression:=none libs:=shared,static platform=linux os=ubuntu22.04 target=x86_64_v3 %c,cxx=gcc@12.3.0
 -   nrdm37j	  ^python-venv@1.0 build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3

$ spack install
[+] /usr (external glibc-2.35-qg7qyazcn2fwrck5vgr3mxq3i4uxkhlo)
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/compiler-wrapper-1.0-ntccuj2fi3y7asqifeq3i4iylrbxakw2
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gcc-runtime-12.3.0-pgwnyw7ukf64qshxkhmfe4i3mnhnz2ed
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gcc-runtime-11.4.0-nokfxvaa4aklxfhoymvz6hlvbqw3kwnh
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/openblas-0.3.30-dwjd7g2k2xnn4qekllidmd3mbibk2pmm
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libxcrypt-4.4.38-drjmmlw4cw7xa42jvz2zkj7fhmvflbzs
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/zstd-1.5.7-fj5u5hmzffnxn433whymaz2n5uhajwqw
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/util-linux-uuid-2.41-b4npzn6ixc2runjxjalulilgkmhpnmeq
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libffi-3.5.2-s56v4gfjyubrphm3pwte4xkkpzsbalmd
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/netlib-lapack-3.12.1-rhz3ueke3w4sennowbhe5wkehj32jcyt
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libmd-1.1.0-cq4lpjpcxcz5lrsu7twuxqlfcvxw4x5b
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/numactl-2.0.18-t2nikrtxvuwdjvtutokwb374p2sbinlr
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libiconv-1.18-g3zxoz6huo7tpvkqhsmrmogb4wp6mzly
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/bzip2-1.0.8-zom5sydb4bski4vwb4db4ah4d6ykcxgu
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libpciaccess-0.17-p7g23cjqjlm6bqct2miagkzxxxq76jjk
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libfabric-2.3.1-7imejdfjnycxqaiaswob5cylcjiwal3t
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/xz-5.6.3-643vviqh75hvv5zwyghppl72gqfr64rx
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/yaksa-0.4-7jn3vivsnjknixt6nr4il7jdglpprcob
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/zlib-ng-2.2.4-4tglvhvqq7j2ftxifhnwsqx7ykr2gdiq
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/ncurses-6.5-20250705-ytk4y2kvs7h2vlkltndotzgejrlj4ylb
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/pcre2-10.44-z5vjj7qwopnby63vu35fgh5ojadzfc4x
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/zlib-ng-2.0.7-qlavhjbsgqyboovfvsultjdwzz5nvthw
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gmake-4.4.1-4obn7cgqfwoxyvmnpeedud63bsjhoqma
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/ninja-1.13.0-2stmhpcux6apkymvlm34reuwmddvngjm
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/pkgconf-2.5.1-f4qiprwjcd2q3fp63uzgp47f3kw66r5h
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/findutils-4.10.0-irvrytslmleivpkraggqq5brluhluert
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/pigz-2.8-bs2taxmcalqybzx3ekltr74adkskotaz
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gmp-6.3.0-mj4re3lp3bqk56rx5yblhufkzpmppdsu
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/readline-8.3-eyfbskp7ur7n6y3ceyawjxyncivdlo3k
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/diffutils-3.12-msusunhi5vdgrgniq3n6f6el4d3sdmns
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libsigsegv-2.14-bs5ujst3rrdcbj3r726bekzjfdddck4w
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/berkeley-db-18.1.40-vdgigswy4fvttrivbedl4cp7bl72esma
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/zstd-1.5.7-foiizhdg2mc4jdjtuddksbzvr64roxea
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libbsd-0.12.2-zb37a5t5npeobk3tjjqcukstmpiwgv5b
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/openssl-3.6.0-q4fenforztsbdicbojnnh2ursudyzygb
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libedit-3.1-20240808-c5o6gvvaovwqjx4d6dei3437rycaxpef
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libxml2-2.13.5-idam6zhjw4pckpaqppqomwiivjkuyu5d
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/nghttp2-1.48.0-ft5kpbdiz6kctcooz4ksam37pskskehg
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libtool-2.4.7-yt7ajy4c3zwh2ks6dawvycaxrydjibel
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/tar-1.35-wfarfthvpwnuxoxzaznsrvply2sgx2zl
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/sqlite-3.50.4-plzt2ndvbqjwuh52b5es4vkokl5voxxq
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gdbm-1.25-y5bsvao3cxpaqhcskqoe2wwm4reknblj
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/m4-1.4.20-lxvpwtivihagmvso5cxgs3b7olqmac2g
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/expat-2.7.3-ikeoatlzkkhg67u2gvk66yrplhodsa7t
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libevent-2.1.12-fn26hildnamhqbytlfpq7hnnb5buy36v
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/hwloc-2.12.2-wkj6z6mxkax4joosfjb3j6c55b7lqzuf
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/curl-8.15.0-zianoaa5jzrbwhxsmm7bnhaxrdbq6jpb
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gettext-0.23.1-3f5v73yqnfdtac6tgkv43ceywl5ujlbt
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/perl-5.42.0-jpuw66splunzfj35iooigoy5bpzpmage
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/mpfr-4.2.1-m3nwaltjkwzqahxlfylauzm5nxkuk2ud
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/pmix-6.0.0-76oyav4s3nnn3iba2rxxip3gvv6rrybc
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/mpich-4.3.2-uaioo2homcambwkqlfarew27bk6dqgqa
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/cmake-3.31.9-4a7thjgehxuwjfswyxnyoquuj5lmtzku
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/python-3.14.0-yvs3szqzvvdlgtd5oih22mie2uyjgz42
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/krb5-1.21.3-onmo4bvd2j5t6x3udrswlorxjaxxmc3z
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/automake-1.16.5-zmzk4bb3og3uivh4e75edsiyc3pjid55
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/autoconf-2.72-nzbffupyigbbaxqhjt4qxa2tdt6ezhxb
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/mpc-1.3.1-sczvrkuwv7wbcfnejrzrwt5yzbuk5hog
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/netlib-scalapack-2.2.2-3t7cajdej6kytam44sv3h6hermemexli
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/netlib-scalapack-2.2.2-pglf7pu6w2t7p2itr5sq5arvlc2xmrjt
==> Fetching file:///mirror/blobs/sha256/81/814bb309cb856dddb13d4d98e061a15b8ba3eec88ccc77c023f5ba5d334f4df5
    [100%]   17.79 KB @	 111.4 MB/s
==> Extracting python-venv-1.0-nrdm37joniuvt4jfj6tajmu3za4vkpak from binary cache
==> python-venv: Successfully installed python-venv-1.0-nrdm37joniuvt4jfj6tajmu3za4vkpak
  Search: 0.00s.  Fetch: 0.18s.	 Install: 0.08s.  Extract: 0.04s.  Relocate: 0.01s.  Total: 0.27s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/python-venv-1.0-nrdm37joniuvt4jfj6tajmu3za4vkpak
==> Installing python-venv-1.0-nrdm37joniuvt4jfj6tajmu3za4vkpak [61/94]
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/openssh-9.9p1-lip7jtpgcoxwbzodoemijlvwudtfkjz5
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/prrte-4.0.0-zalt7csrlsooyok5gqhodzwtab3qvoc3
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/gcc-12.3.0-fmnvqo44pcnyj4dpc6kng6rhp5uwdrwc
==> Fetching file:///mirror/blobs/sha256/a6/a6d81e462f8065bbacf57740c65fa85e638cad01bdd4c3dd31c99f31ea8680fa
    [100%]   64.18 MB @	 401.2 GB/s
==> Extracting py-pip-25.1.1-qwew5rgzuujgyohcvicralh7ftlbovfz from binary cache
==> py-pip: Successfully installed py-pip-25.1.1-qwew5rgzuujgyohcvicralh7ftlbovfz
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.26s.  Extract: 0.21s.  Relocate: 0.01s.  Total: 0.28s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/py-pip-25.1.1-qwew5rgzuujgyohcvicralh7ftlbovfz
==> Installing py-pip-25.1.1-qwew5rgzuujgyohcvicralh7ftlbovfz [65/94]
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/openmpi-5.0.8-p2gmhau5kodki37wh5qws6a6b3jclhf6
==> Fetching file:///mirror/blobs/sha256/bd/bd4a5a9651c3f67b2d3eacbbe8f8e7f32e0db6bec82089542ee4c74b9606383c
    [100%]   63.28 MB @	 411.2 GB/s
==> Extracting libunistring-1.2-x5b7oeto7bjq43zcvwutli3l6atwbvps from binary cache
==> libunistring: Successfully installed libunistring-1.2-x5b7oeto7bjq43zcvwutli3l6atwbvps
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.20s.  Extract: 0.07s.  Relocate: 0.01s.  Total: 0.21s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libunistring-1.2-x5b7oeto7bjq43zcvwutli3l6atwbvps
==> Installing libunistring-1.2-x5b7oeto7bjq43zcvwutli3l6atwbvps [67/94]
==> Fetching file:///mirror/blobs/sha256/0d/0d4dead6e72865c30b79abf0966ef4929438668153c5494ef40a3c63c858f266
    [100%]   63.02 MB @	 351.0 GB/s
==> Extracting py-setuptools-80.9.0-urwrpfosir5bsqujgsywyinsjltws5ft from binary cache
==> py-setuptools: Successfully installed py-setuptools-80.9.0-urwrpfosir5bsqujgsywyinsjltws5ft
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.24s.  Extract: 0.19s.  Relocate: 0.01s.  Total: 0.25s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/py-setuptools-80.9.0-urwrpfosir5bsqujgsywyinsjltws5ft
==> Installing py-setuptools-80.9.0-urwrpfosir5bsqujgsywyinsjltws5ft [68/94]
==> Fetching file:///mirror/blobs/sha256/18/184a896cdfc7520a22f84afe1ed8f950429f4f9ecd181251bc0737970cab23fa
    [100%]  202.72 KB @	 493.8 MB/s
==> Extracting py-wheel-0.45.1-vs4xbx3m62sptk4ch3fs5oozhru53eae from binary cache
==> py-wheel: Successfully installed py-wheel-0.45.1-vs4xbx3m62sptk4ch3fs5oozhru53eae
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.07s.  Extract: 0.02s.  Relocate: 0.01s.  Total: 0.07s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/py-wheel-0.45.1-vs4xbx3m62sptk4ch3fs5oozhru53eae
==> Installing py-wheel-0.45.1-vs4xbx3m62sptk4ch3fs5oozhru53eae [69/94]
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/netlib-scalapack-2.2.2-apaz22ojhzvggduhgoqhdd2paxix3azc
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/netlib-scalapack-2.2.2-yxweja4r47huk5yxgel4byighydafl5q
==> Fetching file:///mirror/blobs/sha256/6e/6e871d5a6e612e1cfa930b5d5ecf61910720ca704aca344c7484c64a5e18cc4c
    [100%]  521.92 KB @	 861.2 MB/s
==> Extracting libidn2-2.3.7-gntupl34gn7ghsb44ybuohibki52dfwa from binary cache
==> libidn2: Successfully installed libidn2-2.3.7-gntupl34gn7ghsb44ybuohibki52dfwa
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.07s.  Extract: 0.03s.  Relocate: 0.01s.  Total: 0.08s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/libidn2-2.3.7-gntupl34gn7ghsb44ybuohibki52dfwa
==> Installing libidn2-2.3.7-gntupl34gn7ghsb44ybuohibki52dfwa [72/94]
==> Fetching file:///mirror/blobs/sha256/3f/3fdbe64a0223f88017656e072a0c834e1d9812518669de26b3945316a7037d67
    [100%]   63.09 MB @	 401.2 GB/s
==> Extracting meson-1.8.5-c5mkho7hg3354cm5522zpotkrkflvxk6 from binary cache
==> meson: Successfully installed meson-1.8.5-c5mkho7hg3354cm5522zpotkrkflvxk6
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.19s.  Extract: 0.14s.  Relocate: 0.01s.  Total: 0.20s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/meson-1.8.5-c5mkho7hg3354cm5522zpotkrkflvxk6
==> Installing meson-1.8.5-c5mkho7hg3354cm5522zpotkrkflvxk6 [73/94]
==> Fetching file:///mirror/blobs/sha256/05/05468a8127a10d28153e2c6c43b9e00aad774c993727726b004d90e7faebe181
    [100%]  141.85 KB @	 415.8 MB/s
==> Extracting py-ply-3.11-xgx3hu4hlcph2m57ehnmndnp76tmju6b from binary cache
==> py-ply: Successfully installed py-ply-3.11-xgx3hu4hlcph2m57ehnmndnp76tmju6b
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.06s.  Extract: 0.01s.  Relocate: 0.01s.  Total: 0.06s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/py-ply-3.11-xgx3hu4hlcph2m57ehnmndnp76tmju6b
==> Installing py-ply-3.11-xgx3hu4hlcph2m57ehnmndnp76tmju6b [74/94]
==> Fetching file:///mirror/blobs/sha256/70/702d48b4c1e390c3e0b3f55dd651bd3d30113e4f61413be9d3a3acd8d5d667c6
    [100%]   15.06 MB @	 411.2 GB/s
==> Extracting py-cython-3.1.3-apuchub6dg7aq6almwsbcbcbolixfr5f from binary cache
==> py-cython: Successfully installed py-cython-3.1.3-apuchub6dg7aq6almwsbcbcbolixfr5f
  Search: 0.00s.  Fetch: 0.03s.	 Install: 0.55s.  Extract: 0.35s.  Relocate: 0.15s.  Total: 0.57s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/py-cython-3.1.3-apuchub6dg7aq6almwsbcbcbolixfr5f
==> Installing py-cython-3.1.3-apuchub6dg7aq6almwsbcbcbolixfr5f [75/94]
==> Fetching file:///mirror/blobs/sha256/4e/4e44dfcc1e6b3781705ef00e627647add329779aa3cee51f6b2c118a59154bd2
    [100%]  137.36 KB @	 470.7 MB/s
==> Extracting py-flit-core-3.12.0-55omqj2ucvxm5haltjpcktwthiiqx4gg from binary cache
==> py-flit-core: Successfully installed py-flit-core-3.12.0-55omqj2ucvxm5haltjpcktwthiiqx4gg
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.06s.  Extract: 0.02s.  Relocate: 0.01s.  Total: 0.07s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/py-flit-core-3.12.0-55omqj2ucvxm5haltjpcktwthiiqx4gg
==> Installing py-flit-core-3.12.0-55omqj2ucvxm5haltjpcktwthiiqx4gg [76/94]
==> Fetching file:///mirror/blobs/sha256/1a/1af3c86479ca912856ba95337d685cc8c567b90bc60f4f89d04409c196d9fa69
    [100%]   22.90 KB @	 166.2 MB/s
==> Extracting py-calver-2025.4.17-gnnyu6h5kxryhtjplbj6gn3ojdyzamxj from binary cache
==> py-calver: Successfully installed py-calver-2025.4.17-gnnyu6h5kxryhtjplbj6gn3ojdyzamxj
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.05s.  Extract: 0.01s.  Relocate: 0.01s.  Total: 0.06s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/py-calver-2025.4.17-gnnyu6h5kxryhtjplbj6gn3ojdyzamxj
==> Installing py-calver-2025.4.17-gnnyu6h5kxryhtjplbj6gn3ojdyzamxj [77/94]
==> Fetching file:///mirror/blobs/sha256/60/60054f411e5e4792e707f485791b9342d8fdbb9882cde6d8b8a45064e82a4a7b
    [100%]   80.75 KB @	 371.8 MB/s
==> Extracting py-gast-0.6.0-xrd6sez3xnzdg3fjs34whdod3msbamgp from binary cache
==> py-gast: Successfully installed py-gast-0.6.0-xrd6sez3xnzdg3fjs34whdod3msbamgp
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.06s.  Extract: 0.01s.  Relocate: 0.01s.  Total: 0.06s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/py-gast-0.6.0-xrd6sez3xnzdg3fjs34whdod3msbamgp
==> Installing py-gast-0.6.0-xrd6sez3xnzdg3fjs34whdod3msbamgp [78/94]
==> Fetching file:///mirror/blobs/sha256/6e/6ef69795d15b583c186d375fc9b2b4310df1c0108f66ec99a525aca6b498389b
    [100%]   63.56 MB @	 411.4 GB/s
==> Extracting git-2.48.1-aim32246bedbrqnty77sopsyhea6gwcu from binary cache
==> git: Successfully installed git-2.48.1-aim32246bedbrqnty77sopsyhea6gwcu
  Search: 0.00s.  Fetch: 0.10s.	 Install: 1.41s.  Extract: 1.19s.  Relocate: 0.17s.  Total: 1.51s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/git-2.48.1-aim32246bedbrqnty77sopsyhea6gwcu
==> Installing git-2.48.1-aim32246bedbrqnty77sopsyhea6gwcu [79/94]
==> Fetching file:///mirror/blobs/sha256/0d/0d88c32ed44b626a50154210f9befa1ab9c519bdabdb4aecc4f3e77a17580caf
    [100%]  181.82 KB @	 593.5 MB/s
==> Extracting py-packaging-25.0-j3t7cjg7qdefoqnyiycarurgegdq3rzo from binary cache
==> py-packaging: Successfully installed py-packaging-25.0-j3t7cjg7qdefoqnyiycarurgegdq3rzo
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.15s.  Extract: 0.01s.  Relocate: 0.01s.  Total: 0.16s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/py-packaging-25.0-j3t7cjg7qdefoqnyiycarurgegdq3rzo
==> Installing py-packaging-25.0-j3t7cjg7qdefoqnyiycarurgegdq3rzo [80/94]
==> Fetching file:///mirror/blobs/sha256/bc/bc6d75995d7beef0e1d74b08be8b2e80ebbd2384c8a56a02ae74867115547005
    [100%]   72.06 KB @	 310.0 MB/s
==> Extracting py-pathspec-0.12.1-wvr3fheyxtq7r63itflim6rf55mxpk4n from binary cache
==> py-pathspec: Successfully installed py-pathspec-0.12.1-wvr3fheyxtq7r63itflim6rf55mxpk4n
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.06s.  Extract: 0.01s.  Relocate: 0.01s.  Total: 0.06s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/py-pathspec-0.12.1-wvr3fheyxtq7r63itflim6rf55mxpk4n
==> Installing py-pathspec-0.12.1-wvr3fheyxtq7r63itflim6rf55mxpk4n [81/94]
==> Fetching file:///mirror/blobs/sha256/bc/bc23fb8e5ea0e883c90decd7f6ccbabacaedaa64ac85b4189abed13374d95dff
    [100%]   45.95 KB @	 275.7 MB/s
==> Extracting py-trove-classifiers-2025.9.11.17-cwn5qw7ibd5afs2nm3ortj752cpydzwi from binary cache
==> py-trove-classifiers: Successfully installed py-trove-classifiers-2025.9.11.17-cwn5qw7ibd5afs2nm3ortj752cpydzwi
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.06s.  Extract: 0.01s.  Relocate: 0.01s.  Total: 0.06s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/py-trove-classifiers-2025.9.11.17-cwn5qw7ibd5afs2nm3ortj752cpydzwi
==> Installing py-trove-classifiers-2025.9.11.17-cwn5qw7ibd5afs2nm3ortj752cpydzwi [82/94]
==> Fetching file:///mirror/blobs/sha256/5c/5c54a464640f8879cf84c3fb44f49fd5748a4d5edb03ddb040faf1ce841df1b4
    [100%]   68.34 KB @	 267.2 MB/s
==> Extracting py-beniget-0.4.2.post1-g6mqwbrfiyaec7n52og2aj3exkas2dfr from binary cache
==> py-beniget: Successfully installed py-beniget-0.4.2.post1-g6mqwbrfiyaec7n52og2aj3exkas2dfr
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.06s.  Extract: 0.01s.  Relocate: 0.01s.  Total: 0.06s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/py-beniget-0.4.2.post1-g6mqwbrfiyaec7n52og2aj3exkas2dfr
==> Installing py-beniget-0.4.2.post1-g6mqwbrfiyaec7n52og2aj3exkas2dfr [83/94]
==> Fetching file:///mirror/blobs/sha256/f9/f99d6c344e2a4d8118297a8399978fa7ab007f69980f025e878e7d04690366cb
    [100%]  124.74 KB @	 488.1 MB/s
==> Extracting py-setuptools-scm-8.2.1-xcq4maxl4uvt4fzgvckb5dxabce5kgla from binary cache
==> py-setuptools-scm: Successfully installed py-setuptools-scm-8.2.1-xcq4maxl4uvt4fzgvckb5dxabce5kgla
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.07s.  Extract: 0.02s.  Relocate: 0.01s.  Total: 0.08s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/py-setuptools-scm-8.2.1-xcq4maxl4uvt4fzgvckb5dxabce5kgla
==> Installing py-setuptools-scm-8.2.1-xcq4maxl4uvt4fzgvckb5dxabce5kgla [84/94]
==> Fetching file:///mirror/blobs/sha256/17/17ba06d9a2de6c868c9edc332607a2695308e0e0d4d86562c9d223ef76e2f1d3
    [100%]   61.10 KB @	 338.1 MB/s
==> Extracting py-pyproject-metadata-0.9.1-sypchiv5kanvcsa2jltzimi4yfeaoj7d from binary cache
==> py-pyproject-metadata: Successfully installed py-pyproject-metadata-0.9.1-sypchiv5kanvcsa2jltzimi4yfeaoj7d
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.14s.  Extract: 0.01s.  Relocate: 0.01s.  Total: 0.15s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/py-pyproject-metadata-0.9.1-sypchiv5kanvcsa2jltzimi4yfeaoj7d
==> Installing py-pyproject-metadata-0.9.1-sypchiv5kanvcsa2jltzimi4yfeaoj7d [85/94]
==> Fetching file:///mirror/blobs/sha256/75/7559f321f491a13d67f4f769064810681cf9611541b1aeb374ad3a32f93dd151
    [100%]   70.56 KB @	 277.4 MB/s
==> Extracting py-pluggy-1.6.0-2c2amjcima3ytgzfpe6e2vpsnufbxbdy from binary cache
==> py-pluggy: Successfully installed py-pluggy-1.6.0-2c2amjcima3ytgzfpe6e2vpsnufbxbdy
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.06s.  Extract: 0.01s.  Relocate: 0.01s.  Total: 0.07s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/py-pluggy-1.6.0-2c2amjcima3ytgzfpe6e2vpsnufbxbdy
==> Installing py-pluggy-1.6.0-2c2amjcima3ytgzfpe6e2vpsnufbxbdy [86/94]
==> Fetching file:///mirror/blobs/sha256/85/858437ca532078963b27d9446e5d3e8a7f149002ea5c66e74f2248afec4b3824
    [100%]   99.86 KB @	 363.0 MB/s
==> Extracting py-meson-python-0.18.0-o6u3um7xjpxbhw7qvrqpcxetc7kayuth from binary cache
==> py-meson-python: Successfully installed py-meson-python-0.18.0-o6u3um7xjpxbhw7qvrqpcxetc7kayuth
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.07s.  Extract: 0.01s.  Relocate: 0.01s.  Total: 0.07s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/py-meson-python-0.18.0-o6u3um7xjpxbhw7qvrqpcxetc7kayuth
==> Installing py-meson-python-0.18.0-o6u3um7xjpxbhw7qvrqpcxetc7kayuth [87/94]
==> Fetching file:///mirror/blobs/sha256/2a/2a1d6fa351776a4aba752aa2e01368598dd7dcc101d443919e5a402e9a5e6a75
    [100%]  230.20 KB @	 621.7 MB/s
==> Extracting py-hatchling-1.27.0-qb7x6jyrjbqihor6e2w7ignu74vujzwk from binary cache
==> py-hatchling: Successfully installed py-hatchling-1.27.0-qb7x6jyrjbqihor6e2w7ignu74vujzwk
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.09s.  Extract: 0.03s.  Relocate: 0.01s.  Total: 0.10s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/py-hatchling-1.27.0-qb7x6jyrjbqihor6e2w7ignu74vujzwk
==> Installing py-hatchling-1.27.0-qb7x6jyrjbqihor6e2w7ignu74vujzwk [88/94]
==> Fetching file:///mirror/blobs/sha256/e2/e29502c35959a031a6b10f1cb507e35977e904c2e9e44fb82e4fd1855c5191c7
    [100%]   12.25 MB @	 401.3 GB/s
==> Extracting py-numpy-2.3.4-ucqh5kunp6zmwio5o7bazmu5gx7yxcu2 from binary cache
==> py-numpy: Successfully installed py-numpy-2.3.4-ucqh5kunp6zmwio5o7bazmu5gx7yxcu2
  Search: 0.00s.  Fetch: 0.02s.	 Install: 0.64s.  Extract: 0.44s.  Relocate: 0.06s.  Total: 0.66s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/py-numpy-2.3.4-ucqh5kunp6zmwio5o7bazmu5gx7yxcu2
==> Installing py-numpy-2.3.4-ucqh5kunp6zmwio5o7bazmu5gx7yxcu2 [89/94]
==> Fetching file:///mirror/blobs/sha256/c2/c262ee6c0255d34ff1f1935f81b4252f4283c6f4e3d47984663bd227f84fa11e
    [100%]   28.60 KB @	 165.9 MB/s
==> Extracting py-hatch-vcs-0.5.0-44uhp2gd536qdfjmes5mjziueiakfrfr from binary cache
==> py-hatch-vcs: Successfully installed py-hatch-vcs-0.5.0-44uhp2gd536qdfjmes5mjziueiakfrfr
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.07s.  Extract: 0.01s.  Relocate: 0.01s.  Total: 0.07s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/py-hatch-vcs-0.5.0-44uhp2gd536qdfjmes5mjziueiakfrfr
==> Installing py-hatch-vcs-0.5.0-44uhp2gd536qdfjmes5mjziueiakfrfr [90/94]
==> Fetching file:///mirror/blobs/sha256/a4/a4f39e5253d88260161bec5a7b78bee9d003fe42a3dd618cdb688dc01094c040
    [100%]   63.35 MB @	 371.2 GB/s
==> Extracting py-pythran-0.18.0-w4fhoiyknplbtmf6m53wm72chgsmvq2r from binary cache
==> py-pythran: Successfully installed py-pythran-0.18.0-w4fhoiyknplbtmf6m53wm72chgsmvq2r
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.75s.  Extract: 0.69s.  Relocate: 0.01s.  Total: 0.76s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/py-pythran-0.18.0-w4fhoiyknplbtmf6m53wm72chgsmvq2r
==> Installing py-pythran-0.18.0-w4fhoiyknplbtmf6m53wm72chgsmvq2r [91/94]
==> Fetching file:///mirror/blobs/sha256/24/247103da0e19b58f9c313a76b48d35f86f08dd7011f7834fa1853361c860f7e1
    [100%]  410.53 KB @	 710.9 MB/s
==> Extracting py-scikit-build-core-0.11.5-5r47zypnbtkwfvfsodcshtfgahqrlfxq from binary cache
==> py-scikit-build-core: Successfully installed py-scikit-build-core-0.11.5-5r47zypnbtkwfvfsodcshtfgahqrlfxq
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.10s.  Extract: 0.04s.  Relocate: 0.01s.  Total: 0.11s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/py-scikit-build-core-0.11.5-5r47zypnbtkwfvfsodcshtfgahqrlfxq
==> Installing py-scikit-build-core-0.11.5-5r47zypnbtkwfvfsodcshtfgahqrlfxq [92/94]
==> Fetching file:///mirror/blobs/sha256/81/81f33dd00b3e657306c4c0055ac4124295f75a5d8ea6f112ae5c15bac05d1a31
    [100%]  560.56 KB @	 786.1 MB/s
==> Extracting py-pybind11-3.0.1-b7sx7ll7umjvkjv2qalti2iqppheryso from binary cache
==> py-pybind11: Successfully installed py-pybind11-3.0.1-b7sx7ll7umjvkjv2qalti2iqppheryso
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.19s.  Extract: 0.04s.  Relocate: 0.01s.  Total: 0.20s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/py-pybind11-3.0.1-b7sx7ll7umjvkjv2qalti2iqppheryso
==> Installing py-pybind11-3.0.1-b7sx7ll7umjvkjv2qalti2iqppheryso [93/94]
==> Fetching file:///mirror/blobs/sha256/08/0824e3670aba080202229e3bb01f3174c6a5800c3699f18e4427b1eae13de246
    [100%]   34.55 MB @	 351.3 GB/s
==> Extracting py-scipy-1.16.3-igjijidvsqssk52ucfm55gzaa4ug4agb from binary cache
==> py-scipy: Successfully installed py-scipy-1.16.3-igjijidvsqssk52ucfm55gzaa4ug4agb
  Search: 0.00s.  Fetch: 0.06s.	 Install: 1.20s.  Extract: 1.02s.  Relocate: 0.12s.  Total: 1.26s
[+] /home/spack/spack/opt/spack/linux-x86_64_v3/py-scipy-1.16.3-igjijidvsqssk52ucfm55gzaa4ug4agb
==> Installing py-scipy-1.16.3-igjijidvsqssk52ucfm55gzaa4ug4agb [94/94]

At this point, the environment contains only py-scipy ^openblas. Verify it:

$ spack find -ld py-scipy
==> In environment /home/spack/stacks
==> 6 root specs
-- no arch / no compilers ---------------------------------------
[+] fmnvqo4 gcc@12
     -	------- gcc@11

[+] pglf7pu netlib-scalapack
     -	------- gcc@12
     -	------- mpich
     -	------- netlib-lapack

[+] 3t7cajd netlib-scalapack
     -	------- gcc@12
     -	------- mpich
     -	------- openblas

[+] apaz22o netlib-scalapack
     -	------- gcc@12
     -	------- netlib-lapack
     -	------- openmpi

[+] yxweja4 netlib-scalapack
     -	------- gcc@12
     -	------- openblas
     -	------- openmpi

[+] igjijid py-scipy
     -	------- gcc@12
     -	------- openblas


-- linux-ubuntu22.04-x86_64_v3 / %c,cxx,fortran=gcc@12.3.0 ------
igjijid py-scipy@1.16.3
ntccuj2	    compiler-wrapper@1.0
fmnvqo4	    gcc@12.3.0
cih4xrz		diffutils@3.12
qtepnkr		    libiconv@1.18
irhvzch		gawk@5.3.1
bs5ujst		    libsigsegv@2.14
c6d2zlj		    readline@8.3
ml7cem5		gcc@11.4.0
nokfxva		gcc-runtime@11.4.0
4obn7cg		gmake@4.4.1
mj4re3l		gmp@6.3.0
fgsf5ij		    autoconf@2.72
pzmnwzm		    automake@1.16.5
lxvpwti		    m4@1.4.20
yt7ajy4		libtool@2.4.7
irvryts		    findutils@4.10.0
sczvrku		mpc@1.3.1
m3nwalt		mpfr@4.2.1
7p7gq7u		    autoconf-archive@2023.02.20
62kt5y4		perl@5.42.0
vdgigsw		    berkeley-db@18.1.40
x7t4naj		    bzip2@1.0.8
aq7qwy6		    gdbm@1.25
k6ygirs		texinfo@7.2
cakgj4n		    gettext@0.23.1
5trxrsw			libxml2@2.13.5
lfgvgva			tar@1.35
kaz756e			    pigz@2.8
yzaocbs			xz@5.6.3
ncdxq3j		    ncurses@6.5-20250705
qlavhjb		zlib-ng@2.0.7
foiizhd		zstd@1.5.7
pgwnyw7	    gcc-runtime@12.3.0
qg7qyaz	    glibc@2.35
dwjd7g2	    openblas@0.3.30
f4qiprw	    pkgconf@2.5.1
apuchub	    py-cython@3.1.3
urwrpfo		py-setuptools@80.9.0
o6u3um7	    py-meson-python@0.18.0
c5mkho7		meson@1.8.5
2stmhpc		ninja@1.13.0
rbf2x4i		    python@3.11.14
7yr5v6w			expat@2.7.3
ucrhsyw			    libbsd@0.12.2
gth3ii5				libmd@1.1.0
zgro4tw			libffi@3.5.2
yiij42p			libxcrypt@4.4.38
gv7wpik			openssl@3.6.0
elvodyb			sqlite@3.50.4
n45otd3			util-linux-uuid@2.41
axmwics		    re2c@3.1
j3t7cjg		py-packaging@25.0
55omqj2		    py-flit-core@3.12.0
sypchiv		py-pyproject-metadata@0.9.1
ucqh5ku	    py-numpy@2.3.4
qwew5rg	    py-pip@25.1.1
b7sx7ll	    py-pybind11@3.0.1
4a7thjg		cmake@3.31.9
zianoaa		    curl@8.15.0
ft5kpbd			nghttp2@1.48.0
5r47zyp		py-scikit-build-core@0.11.5
44uhp2g		    py-hatch-vcs@0.5.0
xcq4max			py-setuptools-scm@8.2.1
aim3224			    git@2.48.1
nzbffup				autoconf@2.72
zmzk4bb				automake@1.16.5
gntupl3				libidn2@2.3.7
x5b7oet				    libunistring@1.2
lip7jtp				openssh@9.9p1
onmo4bv				    krb5@1.21.3
n7yzkyl					bison@3.8.2
c5o6gvv				    libedit@3.1-20240808
drjmmlw				    libxcrypt@4.4.38
z5vjj7q				pcre2@10.44
qb7x6jy		    py-hatchling@1.27.0
2c2amjc			py-pluggy@1.6.0
cwn5qw7			py-trove-classifiers@2025.9.11.17
gnnyu6h			    py-calver@2025.4.17
wvr3fhe		    py-pathspec@0.12.1
w4fhoiy	    py-pythran@0.18.0
g6mqwbr		py-beniget@0.4.2.post1
xrd6sez		py-gast@0.6.0
xgx3hu4		py-ply@3.11
vs4xbx3	    py-wheel@0.45.1
yvs3szq	    python@3.14.0
zom5syd		bzip2@1.0.8
msusunh		    diffutils@3.12
ikeoatl		expat@2.7.3
zb37a5t		    libbsd@0.12.2
cq4lpjp			libmd@1.1.0
y5bsvao		gdbm@1.25
3f5v73y		gettext@0.23.1
g3zxoz6		    libiconv@1.18
idam6zh		    libxml2@2.13.5
wfarfth		    tar@1.35
bs2taxm			pigz@2.8
s56v4gf		libffi@3.5.2
ytk4y2k		ncurses@6.5-20250705
q4fenfo		openssl@3.6.0
etqlnw5		    ca-certificates-mozilla@2025-08-12
jpuw66s		    perl@5.42.0
eyfbskp		readline@8.3
plzt2nd		sqlite@3.50.4
b4npzn6		util-linux-uuid@2.41
643vviq		xz@5.6.3
4tglvhv		zlib-ng@2.2.4
fj5u5hm		zstd@1.5.7
nrdm37j	    python-venv@1.0

==> 1 installed package
==> 0 concretized packages to be installed (show with `spack find -c`)

Conditional definitions

Spec list definitions can also be conditioned on a when clause. The when clause is a Python conditional that is evaluated in a restricted environment. The variables available in when clauses are:

variable name

value

platform

The spack platform name for this machine

os

The default spack os name and version string for this machine

target

The default spack target string for this machine

architecture

The default spack architecture string platform-os-target for this machine

arch

Alias for architecture

env

A dictionary representing the users environment variables

re

The python re module for regex

hostname

The hostname of this node

Suppose we want to limit usage to only mpich, unless the SPACK_STACK_USE_OPENMPI environment variable is set. To do so we could write the following spack.yaml:

# This is a Spack Environment file.
#
# It describes a set of packages to be installed, along with
# configuration settings.
spack:
  definitions:
    - mpis: [mpich]
    - mpis: [openmpi]
      when: 'env.get("SPACK_STACK_USE_OPENMPI", "") == "1"'
    - lapacks: [ openblas, netlib-lapack ]
    - compilers: [ "gcc@12" ]
    - mpi_packages: [ netlib-scalapack ]
    - serial_packages: [py-scipy]

  specs:
  - gcc@12%gcc@11
  - matrix:
    - [$mpi_packages]
    - [$^mpis]
    - [$^lapacks]
    - [$%compilers]
  - matrix:
    - [$serial_packages]
    - [$^lapacks]
    - [$%compilers]
    exclude:
    - "py-scipy ^netlib-lapack"
  view: false
  concretizer:
    unify: false

Different definitions of lists with the same name are concatenated, so we can define our MPI list in one place unconditionally, and then conditionally append one or more values to it.

First, check what happens when we concretize and don’t set any environment variable:

$ spack concretize
==> No new specs to concretize.
$ spack find -cl netlib-scalapack
==> In environment /home/spack/stacks
==> 4 root specs
-- no arch / no compilers ---------------------------------------
[+] fmnvqo4 gcc@12	      [+] 3t7cajd netlib-scalapack
[+] pglf7pu netlib-scalapack  [+] igjijid py-scipy

-- linux-ubuntu22.04-x86_64_v3 / %c,fortran=gcc@12.3.0 ----------
[+]  pglf7pu netlib-scalapack@2.2.2  [+]  3t7cajd netlib-scalapack@2.2.2
==> 2 installed packages
==> 0 concretized packages to be installed

As we expected we are only using mpich as an MPI provider. To get openmpi back we need to set the appropriate environment variable:

$ export SPACK_STACK_USE_OPENMPI=1
$ spack concretize
$ spack find -cl netlib-scalapack
==> In environment /home/spack/stacks
==> 6 root specs
-- no arch / no compilers ---------------------------------------
[+] fmnvqo4 gcc@12	      [+] 3t7cajd netlib-scalapack  [+] yxweja4 netlib-scalapack
[+] pglf7pu netlib-scalapack  [+] apaz22o netlib-scalapack  [+] igjijid py-scipy

-- linux-ubuntu22.04-x86_64_v3 / %c,fortran=gcc@12.3.0 ----------
[+]  pglf7pu netlib-scalapack@2.2.2  [+]  apaz22o netlib-scalapack@2.2.2
[+]  3t7cajd netlib-scalapack@2.2.2  [+]  yxweja4 netlib-scalapack@2.2.2
==> 4 installed packages
==> 0 concretized packages to be installed

There is no need to install this time, since all the specs were still in the store.

Other useful features

Sometimes it might be useful to create a local source mirror for the specs installed in an environment. If the environment is active, this is as simple as:

$ spack mirror create --all -d ./stacks-mirror

This command fetches all the tarballs for the packages in the spack.lock file, and puts them in the directory passed as argument. Later you can move this mirror to e.g. an air-gapped machine and:

$ spack mirror add <name> <stacks-mirror>

to be able to re-build the specs from sources. Alternatively, to create a buildcache you can:

$ spack gpg create <name> <e-mail>
$ spack buildcache push ./mirror

Don’t forget to set an appropriate value for the padding of the install tree, see how to setup relocation in our documentation.

By default, Spack installs one package at a time, using the -j option where it can. The spack install command has an optional -p option for the number of packages to build in parallel. Note that each parallel package may consume the number of threads of the -j option. You can use node resources more optimally by creating a depfile, when the environment is active:

$ spack env depfile -o Makefile

The result is a makefile that starts multiple Spack instances, and the resources are shared through the GNU jobserver. More information of this feature can be found in our documentation. This might cut down your build time by a fair amount, if you build frequently from sources. Expect this feature to be streamlined in future versions of Spack.

Make the software stack easy to use

Now that the software stack has been installed, we need to focus on how it can be used by our customers. We’ll first see how we can configure views to project a subset of the specs we installed onto a filesystem folder with the usual Unix structure. Then we’ll have a similar discussion for module files. Which of the two approaches is better depends strongly on the use case at hand.

View descriptors

At the beginning, we configured Spack not to create a view for this stack because simple views won’t work with stacks. We’ve been concretizing multiple packages of the same name, and they would conflict if linked into the same view.

What we can do is create multiple views, using view descriptors. This would allows us to define which packages are linked into the view, and how. Edit our spack.yaml file again.

# This is a Spack Environment file.
#
# It describes a set of packages to be installed, along with
# configuration settings.
spack:
  definitions:
    - mpis: [mpich]
    - mpis: [openmpi]
      when: 'env.get("SPACK_STACK_USE_OPENMPI", "") == "1"'
    - lapacks: [ openblas, netlib-lapack ]
    - compilers: [ "gcc@12" ]
    - mpi_packages: [ netlib-scalapack ]
    - serial_packages: [py-scipy]

  specs:
  - gcc@12%gcc@11
  - matrix:
    - [$mpi_packages]
    - [$^mpis]
    - [$^lapacks]
    - [$%compilers]
  - matrix:
    - [$serial_packages]
    - [$^lapacks]
    - [$%compilers]
    exclude:
    - "py-scipy ^netlib-lapack"
  concretizer:
    unify: false
  view:
    default:
      root: views/default
      select: ['%gcc@12']
      exclude: [^mpich, ^netlib-lapack]
    full:
      root: views/full
      projections:
        ^mpi^lapack: '{name}/{name}-{version}-{^c.name}-{^c.version}-{^mpi.name}-{^mpi.version}-{^lapack.name}-{^lapack.version}'
        ^lapack: '{name}/{name}-{version}-{^c.name}-{^c.version}-{^lapack.name}-{^lapack.version}'
        '%c': '{name}/{name}-{version}-{^c.name}-{^c.version}'
        '%cxx': '{name}/{name}-{version}-{^cxx.name}-{^cxx.version}'
        '%fortran': '{name}/{name}-{version}-{^fortran.name}-{^fortran.version}'
        all: '{name}/{name}-{version}'

In the configuration above we created two views, named default and full. The default view consists of all the packages that are compiled with gcc@12, but do not depend on either mpich or netlib-lapack. As we can see, we can both include and exclude specs using constraints.

The full view contains a more complex projection, so to put each spec into an appropriate subdirectory, according to the first constraint that the spec matches. all is the default projection, and has always the lowest priority, independent of the order in which it appears. To avoid confusion, we advise always keeping it last in projections.

Concretize to regenerate the views, and check their structure:

$ spack concretize
==> No new specs to concretize.
==> Updating view at /home/spack/stacks/views/default
==> Updating view at /home/spack/stacks/views/full
$ ls ~/stacks/views/default
bin  etc  include  lib	lib64  libexec	man  pyvenv.cfg	 sbin  share  var
$ ls ~/stacks/views/default/lib
cmake				libmenu.so
gettext				libmenu.so.6
krb5				libmenu.so.6.5
libasan.so.8			libmenu_g.a
libasprintf.a			libmenuw.a
libasprintf.so			libmenuw.so
libasprintf.so.0		libmenuw.so.6
libasprintf.so.0.0.0		libmenuw.so.6.5
libatomic.so.1			libmenuw_g.a
libblas.so			libmpi.a
libblas.so.3			libmpi.so
libblas.so.3.12.0		libmpi.so.12
libbsd-ctor.a			libmpi.so.12.5.2
libbsd.a			libmpi.so.40
libbsd.so			libmpi.so.40.40.7
libbsd.so.0			libmpi_mpifh.so
libbsd.so.0.12.2		libmpi_mpifh.so.40
libbz2.a			libmpi_mpifh.so.40.40.1
libbz2.so			libmpi_usempi_ignore_tkr.so
libbz2.so.1			libmpi_usempi_ignore_tkr.so.40
libbz2.so.1.0			libmpi_usempi_ignore_tkr.so.40.40.1
libbz2.so.1.0.8			libmpi_usempif08.so
libcblas.so			libmpi_usempif08.so.40
libcblas.so.3			libmpi_usempif08.so.40.40.3
libcblas.so.3.12.0		libmpich.so
libcharset.a			libmpichcxx.so
libcharset.so			libmpichf90.so
libcharset.so.1			libmpicxx.a
libcharset.so.1.0.0		libmpicxx.so
libcom_err.so			libmpicxx.so.12
libcom_err.so.3			libmpicxx.so.12.5.2
libcom_err.so.3.0		libmpifort.a
libcrypt.a			libmpifort.so
libcrypt.so			libmpifort.so.12
libcrypt.so.2			libmpifort.so.12.5.2
libcrypt.so.2.0.0		libmpl.so
libcurses.so			libncurses++.a
libedit.a			libncurses++.so
libedit.so			libncurses++.so.6
libedit.so.0			libncurses++.so.6.5
libedit.so.0.0.74		libncurses++_g.a
libevent-2.1.so.7		libncurses++w.a
libevent-2.1.so.7.0.1		libncurses++w.so
libevent.a			libncurses++w.so.6
libevent.so			libncurses++w.so.6.5
libevent_core-2.1.so.7		libncurses++w_g.a
libevent_core-2.1.so.7.0.1	libncurses.a
libevent_core.a			libncurses.so
libevent_core.so		libncurses.so.6
libevent_extra-2.1.so.7		libncurses.so.6.5
libevent_extra-2.1.so.7.0.1	libncurses_g.a
libevent_extra.a		libncursesw.a
libevent_extra.so		libncursesw.so
libevent_openssl-2.1.so.7	libncursesw.so.6
libevent_openssl-2.1.so.7.0.1	libncursesw.so.6.5
libevent_openssl.a		libncursesw_g.a
libevent_openssl.so		libnuma.a
libevent_pthreads-2.1.so.7	libnuma.so
libevent_pthreads-2.1.so.7.0.1	libnuma.so.1
libevent_pthreads.a		libnuma.so.1.0.0
libevent_pthreads.so		libopa.so
libexpat.a			libopen-pal.so
libexpat.so			libopen-pal.so.80
libexpat.so.1			libopen-pal.so.80.0.5
libexpat.so.1.11.1		libopenblas.a
libfabric.a			libopenblas.so
libfabric.so			libopenblas.so.0
libfabric.so.1			libopenblasp-r0.3.30.a
libfabric.so.1.29.1		libopenblasp-r0.3.30.so
libfmpich.so			libpanel.a
libform.a			libpanel.so
libform.so			libpanel.so.6
libform.so.6			libpanel.so.6.5
libform.so.6.5			libpanel_g.a
libform_g.a			libpanelw.a
libformw.a			libpanelw.so
libformw.so			libpanelw.so.6
libformw.so.6			libpanelw.so.6.5
libformw.so.6.5			libpanelw_g.a
libformw_g.a			libpciaccess.a
libgcc_s.so.1			libpciaccess.so
libgdbm.a			libpciaccess.so.0
libgdbm.so			libpciaccess.so.0.11.1
libgdbm.so.6			libpmix.a
libgdbm.so.6.0.0		libpmix.so
libgdbm_compat.a		libpmix.so.2
libgdbm_compat.so		libpmix.so.2.18.0
libgdbm_compat.so.4		libprrte.a
libgdbm_compat.so.4.0.0		libprrte.so
libgettextlib-0.23.1.so		libprrte.so.4
libgettextlib.a			libprrte.so.4.0.0
libgettextlib.so		libpython3.14.so
libgettextpo.a			libpython3.14.so.1.0
libgettextpo.so			libpython3.so
libgettextpo.so.0		libquadmath.so.0
libgettextpo.so.0.5.12		libreadline.a
libgettextsrc-0.23.1.so		libreadline.so
libgettextsrc.a			libreadline.so.8
libgettextsrc.so		libreadline.so.8.3
libgfortran.so.5		libscalapack.so
libgomp.so.1			libscalapack.so.2.2
libgssapi_krb5.so		libscalapack.so.2.2.1
libgssapi_krb5.so.2		libsqlite3.a
libgssapi_krb5.so.2.2		libsqlite3.so
libgssrpc.so			libsqlite3.so.0
libgssrpc.so.4			libsqlite3.so.3.50.4
libgssrpc.so.4.2		libssp.so.0
libhistory.a			libstdc++.so.6
libhistory.so			libtextstyle.a
libhistory.so.8			libtextstyle.so
libhistory.so.8.3		libtextstyle.so.0
libhwloc.a			libtextstyle.so.0.2.3
libhwloc.so			libtinfo.a
libhwloc.so.15			libtinfo.so
libhwloc.so.15.10.1		libtinfo.so.6
libiconv.a			libtinfo.so.6.5
libiconv.so			libtinfo_g.a
libiconv.so.2			libtinfow.a
libiconv.so.2.7.0		libtinfow.so
libintl.a			libtinfow.so.6
libintl.so			libtinfow.so.6.5
libintl.so.8			libtinfow_g.a
libintl.so.8.4.2		libtmglib.so
libitm.so.1			libtmglib.so.3
libk5crypto.so			libtmglib.so.3.12.0
libk5crypto.so.3		libtsan.so.2
libk5crypto.so.3.1		libubsan.so.1
libkadm5clnt.so			libuuid.a
libkadm5clnt_mit.so		libuuid.so
libkadm5clnt_mit.so.12		libuuid.so.1
libkadm5clnt_mit.so.12.0	libuuid.so.1.3.0
libkadm5srv.so			libverto.so
libkadm5srv_mit.so		libverto.so.0
libkadm5srv_mit.so.12		libverto.so.0.0
libkadm5srv_mit.so.12.0		libxml2.so
libkdb5.so			libxml2.so.2
libkdb5.so.10			libxml2.so.2.13.5
libkdb5.so.10.0			libyaksa.a
libkrad.so			libyaksa.so
libkrad.so.0			libyaksa.so.0
libkrad.so.0.0			libyaksa.so.0.0.0
libkrb5.so			libz.a
libkrb5.so.3			libz.so
libkrb5.so.3.3			libz.so.1
libkrb5support.so		libz.so.1.3.1.zlib-ng
libkrb5support.so.0		libzstd.a
libkrb5support.so.0.1		libzstd.so
liblapack.so			libzstd.so.1
liblapack.so.3			libzstd.so.1.5.7
liblapack.so.3.12.0		mpi.mod
liblapacke.so			mpi_ext.mod
liblapacke.so.3			mpi_f08.mod
liblapacke.so.3.12.0		mpi_f08_callbacks.mod
liblsan.so.0			mpi_f08_ext.mod
liblzma.a			mpi_f08_interfaces.mod
liblzma.so			mpi_f08_interfaces_callbacks.mod
liblzma.so.5			mpi_f08_types.mod
liblzma.so.5.6.3		mpi_types.mod
libmd.a				openmpi
libmd.so			pkgconfig
libmd.so.0			pmpi_f08_interfaces.mod
libmd.so.0.1.0			python3.14
libmenu.a			terminfo
$ ls ~/stacks/views/full
bzip2	     hwloc	libiconv      mpich		openssh	  sqlite
expat	     krb5	libmd	      ncurses		openssl	  tar
gcc	     libbsd	libpciaccess  netlib-lapack	pigz	  util-linux-uuid
gcc-runtime  libedit	libxcrypt     netlib-scalapack	pmix	  xz
gdbm	     libevent	libxml2	      numactl		prrte	  yaksa
gettext	     libfabric	mpc	      openblas		python	  zlib-ng
gmp	     libffi	mpfr	      openmpi		readline  zstd
$ ls ~/stacks/views/full/gcc/
gcc-12.3.0-gcc-11.4.0
$ ls ~/stacks/views/full/gcc/gcc-12.3.0-gcc-11.4.0
bin  include  lib  lib64  libexec  share

The view descriptor also contains a link key. The default behavior, as we have seen, is to link all packages, including implicit link and run dependencies, into the view. If we set the option to “roots”, Spack links only the root packages into the view.

# This is a Spack Environment file.
#
# It describes a set of packages to be installed, along with
# configuration settings.
spack:
  definitions:
    - mpis: [mpich]
    - mpis: [openmpi]
      when: 'env.get("SPACK_STACK_USE_OPENMPI", "") == "1"'
    - lapacks: [ openblas, netlib-lapack ]
    - compilers: [ "gcc@12" ]
    - mpi_packages: [ netlib-scalapack ]
    - serial_packages: [py-scipy]

  specs:
  - gcc@12%gcc@11
  - matrix:
    - [$mpi_packages]
    - [$^mpis]
    - [$^lapacks]
    - [$%compilers]
  - matrix:
    - [$serial_packages]
    - [$^lapacks]
    - [$%compilers]
    exclude:
    - "py-scipy ^netlib-lapack"
  concretizer:
    unify: false
  view:
    default:
      root: views/default
      select: ['%gcc@12']
      exclude: [^mpich, ^netlib-lapack]
      link: roots
    full:
      root: views/full
      projections:
        ^mpi^lapack: '{name}/{name}-{version}-{^c.name}-{^c.version}-{^mpi.name}-{^mpi.version}-{^lapack.name}-{^lapack.version}'
        ^lapack: '{name}/{name}-{version}-{^c.name}-{^c.version}-{^lapack.name}-{^lapack.version}'
        '%c': '{name}/{name}-{version}-{^c.name}-{^c.version}'
        '%cxx': '{name}/{name}-{version}-{^cxx.name}-{^cxx.version}'
        '%fortran': '{name}/{name}-{version}-{^fortran.name}-{^fortran.version}'
        all: '{name}/{name}-{version}'
$ spack concretize
==> No new specs to concretize.
==> Updating view at /home/spack/stacks/views/default
$ ls ~/stacks/views/default
lib
$ ls ~/stacks/views/default/lib
cmake  libscalapack.so	libscalapack.so.2.2  libscalapack.so.2.2.1  pkgconfig  python3.14
$ ls ~/stacks/views/full
bzip2	     hwloc	libiconv      mpich		openssh	  sqlite
expat	     krb5	libmd	      ncurses		openssl	  tar
gcc	     libbsd	libpciaccess  netlib-lapack	pigz	  util-linux-uuid
gcc-runtime  libedit	libxcrypt     netlib-scalapack	pmix	  xz
gdbm	     libevent	libxml2	      numactl		prrte	  yaksa
gettext	     libfabric	mpc	      openblas		python	  zlib-ng
gmp	     libffi	mpfr	      openmpi		readline  zstd

Now we see only the root libraries in the default view. The rest are hidden, but are still available in the full view. The complete documentation on views can be found here.

Module files

Module files are another very popular way to use software on HPC systems. In this section we’ll show how to configure and generate a hierarchical module structure, suitable for lmod.

A more in-depth tutorial, focused only on module files, can be found at Module Files Tutorial. There we discuss the general architecture of module file generation in Spack and we highlight differences between environment-modules and lmod that won’t be covered in this section.

Let’s start by adding lmod to the software installed with the system compiler:

$ spack add lmod%gcc@11
$ spack concretize
$ spack install

Once that is done, let’s add the module command to our shell like this:

$ . $(spack location -i lmod)/lmod/lmod/init/bash

If everything worked out correctly you should have the module command available in your shell:

$ module --version

Modules based on Lua: Version 8.7.18  2023-01-14 07:33 -06:00
    by Robert McLay mclay@tacc.utexas.edu

The next step is to add some basic configuration to our spack.yaml to generate module files:

# This is a Spack Environment file.
#
# It describes a set of packages to be installed, along with
# configuration settings.
spack:
  definitions:
    - mpis: [mpich]
    - mpis: [openmpi]
      when: 'env.get("SPACK_STACK_USE_OPENMPI", "") == "1"'
    - lapacks: [ openblas, netlib-lapack ]
    - compilers: [ "gcc@12" ]
    - mpi_packages: [ netlib-scalapack ]
    - serial_packages: [py-scipy]

  specs:
  - gcc@12%gcc@11
  - matrix:
    - [$mpi_packages]
    - [$^mpis]
    - [$^lapacks]
    - [$%compilers]
  - matrix:
    - [$serial_packages]
    - [$^lapacks]
    - [$%compilers]
    exclude:
    - "py-scipy ^netlib-lapack"
  view: false
  concretizer:
    unify: false
  modules:
    default:
      enable:
      - lmod
      roots:
        lmod: modules
      lmod:
        hierarchy:
        - mpi
        - lapack
        core_specs:
        - '%gcc@11'

In these few lines of additional configuration we told Spack to generate lmod module files in a subdirectory named modules, using a hierarchy comprising both lapack and mpi. We’ve also configured it to place all specs built with our system compiler into the Core designation in the lmod hierarchy.

We can generate the module files and use them with the following commands:

$ spack module lmod refresh -y
$ module use $PWD/stacks/modules/linux-ubuntu22.04-x86_64/Core

Now we should be able to see the module files that have been generated:

$ module av

---- /home/spack/stacks/modules/linux-ubuntu22.04-x86_64/Core ----
   autoconf-archive/2023.02.20-7p7gq7u
   automake/1.16.5-pzmnwzm
   bc/1.07.1-s3qhnq4
   berkeley-db/18.1.40-vdgigsw
   bison/3.8.2-n7yzkyl
   bzip2/1.0.8-x7t4naj
   ca-certificates-mozilla/2025-08-12-etqlnw5
   compiler-wrapper/1.0-ntccuj2
   curl/8.15.0-isdtvvd
   diffutils/3.12-cih4xrz
   ed/1.4-4cbvnhd
   expat/2.7.3-7yr5v6w
   findutils/4.10.0-irvryts
   flex/2.6.3-gmhq65u
   gawk/5.3.1-irhvzch
   gcc-runtime/11.4.0-nokfxva
   gcc-runtime/12.3.0-pgwnyw7		      (D)
   gcc/11.4.0-ml7cem5
   gcc/12.3.0-fmnvqo4			      (D)
   gdbm/1.25-aq7qwy6
   gettext/0.23.1-cakgj4n
   glibc/2.35-qg7qyaz
   gmake/4.4.1-4obn7cg
   gmp/6.3.0-mj4re3l
   libbsd/0.12.2-ucrhsyw
   libffi/3.5.2-zgro4tw
   libiconv/1.18-qtepnkr
   libmd/1.1.0-gth3ii5
   libsigsegv/2.14-bs5ujst
   libssh2/1.11.1-txa2olx
   libtool/2.4.7-yt7ajy4
   libxcrypt/4.4.38-yiij42p
   libxml2/2.13.5-5trxrsw
   lmod/8.7.18-gbpxgjw
   lua-luafilesystem/1.8.0-nsymk62
   lua-luaposix/36.1-bubs6lu
   lua/5.4.6-hdxlqej
   m4/1.4.20-lxvpwti
   mbedtls/2.28.9-bz3ghzh
   mpc/1.3.1-sczvrku
   mpfr/4.2.1-m3nwalt
   ncurses/6.5-20250705-ncdxq3j
   nghttp2/1.48.0-ft5kpbd
   ninja/1.13.0-2stmhpc
   openssl/3.6.0-gv7wpik
   pcre2/10.44-z5vjj7q
   perl/5.42.0-62kt5y4
   pigz/2.8-kaz756e
   pkgconf/2.5.1-f4qiprw
   python/3.11.14-rbf2x4i
   re2c/3.1-axmwics
   readline/8.3-c6d2zlj
   sqlite/3.50.4-elvodyb
   tar/1.35-lfgvgva
   tcl/8.6.17-x74vmgr
   texinfo/7.2-k6ygirs
   unzip/6.0-5gxay2a
   util-linux-uuid/2.41-n45otd3
   util-macros/1.20.1-hwxnwvm
   xz/5.6.3-yzaocbs
   zlib-ng/2.0.7-qlavhjb
   zstd/1.5.7-foiizhd

  Where:
   D:  Default Module

If the avail list is too long
consider trying:

"module --default avail" or
"ml -d av" to just list the
default modules.
"module overview" or "ml ov"
to display the number of
modules for each name.

Use "module spider" to find
all possible modules and
extensions.
Use "module keyword key1 key2
..." to search for all
possible modules matching any
of the "keys".

The set of modules is already usable, and the hierarchy already works. For instance, we can load the gcc compiler and check that we have gcc in out path and we have a lot of modules available - all the ones compiled with gcc@12:

$ module load gcc
$ which gcc
/home/spack/spack/opt/spack/linux-x86_64_v3/gcc-12.3.0-fmnvqo44pcnyj4dpc6kng6rhp5uwdrwc/bin/gcc
$ gcc --version
gcc (Spack GCC) 12.3.0
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ module av

---- /home/spack/stacks/modules/linux-ubuntu22.04-x86_64/gcc/12.3.0 ----
   automake/1.16.5-zmzk4bb		     (D)
   bzip2/1.0.8-zom5syd			     (D)
   cmake/3.31.9-4a7thjg
   curl/8.15.0-zianoaa			     (D)
   diffutils/3.12-msusunh		     (D)
   expat/2.7.3-ikeoatl
   gdbm/1.25-y5bsvao			     (D)
   gettext/0.23.1-3f5v73y		     (D)
   git/2.48.1-aim3224
   hwloc/2.12.2-wkj6z6m
   krb5/1.21.3-onmo4bv
   libbsd/0.12.2-zb37a5t		     (D)
   libedit/3.1-20240808-c5o6gvv
   libevent/2.1.12-fn26hil
   libfabric/2.3.1-7imejdf
   libffi/3.5.2-s56v4gf
   libiconv/1.18-g3zxoz6
   libidn2/2.3.7-gntupl3
   libmd/1.1.0-cq4lpjp
   libpciaccess/0.17-p7g23cj
   libunistring/1.2-x5b7oet
   libxcrypt/4.4.38-drjmmlw
   libxml2/2.13.5-idam6zh
   mpich/4.3.2-uaioo2h
   ncurses/6.5-20250705-ytk4y2k		     (D)
   netlib-lapack/3.12.1-rhz3uek
   numactl/2.0.18-t2nikrt
   openblas/0.3.30-dwjd7g2
   openmpi/5.0.8-p2gmhau
   openssh/9.9p1-lip7jtp
   openssl/3.6.0-q4fenfo		     (D)
   perl/5.42.0-jpuw66s
   pigz/2.8-bs2taxm
   pmix/6.0.0-76oyav4
   prrte/4.0.0-zalt7cs
   py-beniget/0.4.2.post1-g6mqwbr
   py-calver/2025.4.17-gnnyu6h
   py-cython/3.1.3-apuchub
   py-flit-core/3.12.0-55omqj2
   py-gast/0.6.0-xrd6sez
   py-hatch-vcs/0.5.0-44uhp2g
   py-hatchling/1.27.0-qb7x6jy
   py-meson-python/0.18.0-o6u3um7
   py-packaging/25.0-j3t7cjg
   py-pathspec/0.12.1-wvr3fhe
   py-pip/25.1.1-qwew5rg
   py-pluggy/1.6.0-2c2amjc
   py-ply/3.11-xgx3hu4
   py-pybind11/3.0.1-b7sx7ll
   py-pyproject-metadata/0.9.1-sypchiv
   py-scikit-build-core/0.11.5-5r47zyp
   py-setuptools-scm/8.2.1-xcq4max
   py-setuptools/80.9.0-urwrpfo
   py-trove-classifiers/2025.9.11.17-cwn5qw7
   py-wheel/0.45.1-vs4xbx3
   python-venv/1.0-nrdm37j
   python/3.14.0-yvs3szq		     (D)
   readline/8.3-eyfbskp			     (D)
   sqlite/3.50.4-plzt2nd		     (D)
   tar/1.35-wfarfth			     (D)
   util-linux-uuid/2.41-b4npzn6
   xz/5.6.3-643vviq			     (D)
   yaksa/0.4-7jn3viv
   zlib-ng/2.2.4-4tglvhv		     (D)
   zstd/1.5.7-fj5u5hm

---- /home/spack/stacks/modules/linux-ubuntu22.04-x86_64/Core ----
   autoconf-archive/2023.02.20-7p7gq7u
   automake/1.16.5-pzmnwzm
   bc/1.07.1-s3qhnq4
   berkeley-db/18.1.40-vdgigsw
   bison/3.8.2-n7yzkyl
   bzip2/1.0.8-x7t4naj
   ca-certificates-mozilla/2025-08-12-etqlnw5
   compiler-wrapper/1.0-ntccuj2
   curl/8.15.0-isdtvvd
   diffutils/3.12-cih4xrz
   ed/1.4-4cbvnhd
   expat/2.7.3-7yr5v6w			      (D)
   findutils/4.10.0-irvryts
   flex/2.6.3-gmhq65u
   gawk/5.3.1-irhvzch
   gcc-runtime/11.4.0-nokfxva		      (L)
   gcc-runtime/12.3.0-pgwnyw7		      (D)
   gcc/11.4.0-ml7cem5
   gcc/12.3.0-fmnvqo4			      (L,D)
   gdbm/1.25-aq7qwy6
   gettext/0.23.1-cakgj4n
   glibc/2.35-qg7qyaz			      (L)
   gmake/4.4.1-4obn7cg
   gmp/6.3.0-mj4re3l			      (L)
   libbsd/0.12.2-ucrhsyw
   libffi/3.5.2-zgro4tw			      (D)
   libiconv/1.18-qtepnkr		      (D)
   libmd/1.1.0-gth3ii5			      (D)
   libsigsegv/2.14-bs5ujst
   libssh2/1.11.1-txa2olx
   libtool/2.4.7-yt7ajy4
   libxcrypt/4.4.38-yiij42p		      (D)
   libxml2/2.13.5-5trxrsw		      (D)
   lmod/8.7.18-gbpxgjw
   lua-luafilesystem/1.8.0-nsymk62
   lua-luaposix/36.1-bubs6lu
   lua/5.4.6-hdxlqej
   m4/1.4.20-lxvpwti
   mbedtls/2.28.9-bz3ghzh
   mpc/1.3.1-sczvrku			      (L)
   mpfr/4.2.1-m3nwalt			      (L)
   ncurses/6.5-20250705-ncdxq3j
   nghttp2/1.48.0-ft5kpbd
   ninja/1.13.0-2stmhpc
   openssl/3.6.0-gv7wpik
   pcre2/10.44-z5vjj7q
   perl/5.42.0-62kt5y4			      (D)
   pigz/2.8-kaz756e			      (D)
   pkgconf/2.5.1-f4qiprw
   python/3.11.14-rbf2x4i
   re2c/3.1-axmwics
   readline/8.3-c6d2zlj
   sqlite/3.50.4-elvodyb
   tar/1.35-lfgvgva
   tcl/8.6.17-x74vmgr
   texinfo/7.2-k6ygirs
   unzip/6.0-5gxay2a
   util-linux-uuid/2.41-n45otd3		      (D)
   util-macros/1.20.1-hwxnwvm
   xz/5.6.3-yzaocbs
   zlib-ng/2.0.7-qlavhjb		      (L)
   zstd/1.5.7-foiizhd			      (L,D)

  Where:
   D:  Default Module
   L:  Module is loaded

If the avail list is too long
consider trying:

"module --default avail" or
"ml -d av" to just list the
default modules.
"module overview" or "ml ov"
to display the number of
modules for each name.

Use "module spider" to find
all possible modules and
extensions.
Use "module keyword key1 key2
..." to search for all
possible modules matching any
of the "keys".


$ module unload gcc

There are a few issues though. For instance, we have a lot of modules generated from dependencies of gcc that are cluttering the view, and won’t likely be needed directly by users. Then, module names contain hashes, which prevent users from being able to reuse the same script in similar, but not equal, environments.

Also, some of the modules might need to set custom environment variables, which are specific to the deployment aspects that are not part of the hash - for instance a policy at the deploying site.

To address all these needs we can complicate our modules configuration a bit more:

# This is a Spack Environment file.
#
# It describes a set of packages to be installed, along with
# configuration settings.
spack:
  definitions:
    - mpis: [mpich]
    - mpis: [openmpi]
      when: 'env.get("SPACK_STACK_USE_OPENMPI", "") == "1"'
    - lapacks: [ openblas, netlib-lapack ]
    - compilers: [ "gcc@12" ]
    - mpi_packages: [ netlib-scalapack ]
    - serial_packages: [py-scipy]

  specs:
  - gcc@12%gcc@11
  - matrix:
    - [$mpi_packages]
    - [$^mpis]
    - [$^lapacks]
    - [$%compilers]
  - matrix:
    - [$serial_packages]
    - [$^lapacks]
    - [$%compilers]
    exclude:
    - "py-scipy ^netlib-lapack"
  view: false
  concretizer:
    unify: false
  modules:
    default:
      enable:
      - lmod
      roots:
        lmod: modules
      lmod:
        hierarchy:
        - mpi
        - lapack
        core_specs:
        - '%gcc@11'
        hash_length: 0
        include:
        - gcc
        exclude:
        - '%gcc@11.4.0'
        - 'autoconf'
        all:
          environment:
            set:
              '{name}_ROOT': '{prefix}'
        openmpi:
          environment:
            set:
              SLURM_MPI_TYPE: pmi2
              OMPI_MCA_btl_openib_warn_default_gid_prefix: '0'
        projections:
          all: '{name}/{version}'

Regenerate the modules again:

$ spack module lmod refresh --delete-tree -y
==> Warning: autoconf@2.72 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3/nzbffup uses more than one compiler, and might not fit the LMod hierarchy. Using gcc@11.4.0~binutils+bootstrap~graphite~nvptx~piclibs~profiled~strip build_system=autotools build_type=RelWithDebInfo languages:='c,c++,fortran' platform=linux os=ubuntu22.04 target=x86_64_v3/ml7cem5 as the LMod compiler.
==> Warning: automake@1.16.5 build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3/zmzk4bb uses more than one compiler, and might not fit the LMod hierarchy. Using gcc@12.3.0~binutils+bootstrap~graphite~mold~nvptx~piclibs~profiled~strip build_system=autotools build_type=RelWithDebInfo languages:='c,c++,fortran' platform=linux os=ubuntu22.04 target=x86_64_v3/fmnvqo4 as the LMod compiler.
==> Warning: cmake@3.31.9~doc+ncurses+ownlibs~qtgui build_system=generic build_type=Release platform=linux os=ubuntu22.04 target=x86_64_v3/4a7thjg uses more than one compiler, and might not fit the LMod hierarchy. Using gcc@12.3.0~binutils+bootstrap~graphite~mold~nvptx~piclibs~profiled~strip build_system=autotools build_type=RelWithDebInfo languages:='c,c++,fortran' platform=linux os=ubuntu22.04 target=x86_64_v3/fmnvqo4 as the LMod compiler.
==> Warning: curl@8.15.0~gssapi~ldap~libidn2~librtmp~libssh~libssh2+nghttp2 build_system=autotools libs:=shared,static tls:=openssl platform=linux os=ubuntu22.04 target=x86_64_v3/zianoaa uses more than one compiler, and might not fit the LMod hierarchy. Using gcc@12.3.0~binutils+bootstrap~graphite~mold~nvptx~piclibs~profiled~strip build_system=autotools build_type=RelWithDebInfo languages:='c,c++,fortran' platform=linux os=ubuntu22.04 target=x86_64_v3/fmnvqo4 as the LMod compiler.
==> Warning: git@2.48.1+man+nls+perl+subtree~tcltk build_system=autotools platform=linux os=ubuntu22.04 target=x86_64_v3/aim3224 uses more than one compiler, and might not fit the LMod hierarchy. Using gcc@12.3.0~binutils+bootstrap~graphite~mold~nvptx~piclibs~profiled~strip build_system=autotools build_type=RelWithDebInfo languages:='c,c++,fortran' platform=linux os=ubuntu22.04 target=x86_64_v3/fmnvqo4 as the LMod compiler.
==> Warning: meson@1.8.5 build_system=python_pip patches:=0f0b1bd platform=linux os=ubuntu22.04 target=x86_64_v3/c5mkho7 uses more than one compiler, and might not fit the LMod hierarchy. Using gcc@11.4.0~binutils+bootstrap~graphite~nvptx~piclibs~profiled~strip build_system=autotools build_type=RelWithDebInfo languages:='c,c++,fortran' platform=linux os=ubuntu22.04 target=x86_64_v3/ml7cem5 as the LMod compiler.
==> Warning: perl@5.42.0+cpanm+opcode+open+shared+threads build_system=generic platform=linux os=ubuntu22.04 target=x86_64_v3/jpuw66s uses more than one compiler, and might not fit the LMod hierarchy. Using gcc@12.3.0~binutils+bootstrap~graphite~mold~nvptx~piclibs~profiled~strip build_system=autotools build_type=RelWithDebInfo languages:='c,c++,fortran' platform=linux os=ubuntu22.04 target=x86_64_v3/fmnvqo4 as the LMod compiler.
==> Warning: py-hatch-vcs@0.5.0 build_system=python_pip platform=linux os=ubuntu22.04 target=x86_64_v3/44uhp2g uses more than one compiler, and might not fit the LMod hierarchy. Using gcc@12.3.0~binutils+bootstrap~graphite~mold~nvptx~piclibs~profiled~strip build_system=autotools build_type=RelWithDebInfo languages:='c,c++,fortran' platform=linux os=ubuntu22.04 target=x86_64_v3/fmnvqo4 as the LMod compiler.
==> Warning: py-meson-python@0.18.0 build_system=python_pip platform=linux os=ubuntu22.04 target=x86_64_v3/o6u3um7 uses more than one compiler, and might not fit the LMod hierarchy. Using gcc@12.3.0~binutils+bootstrap~graphite~mold~nvptx~piclibs~profiled~strip build_system=autotools build_type=RelWithDebInfo languages:='c,c++,fortran' platform=linux os=ubuntu22.04 target=x86_64_v3/fmnvqo4 as the LMod compiler.
==> Warning: py-scikit-build-core@0.11.5~pyproject build_system=python_pip platform=linux os=ubuntu22.04 target=x86_64_v3/5r47zyp uses more than one compiler, and might not fit the LMod hierarchy. Using gcc@12.3.0~binutils+bootstrap~graphite~mold~nvptx~piclibs~profiled~strip build_system=autotools build_type=RelWithDebInfo languages:='c,c++,fortran' platform=linux os=ubuntu22.04 target=x86_64_v3/fmnvqo4 as the LMod compiler.
==> Warning: py-setuptools-scm@8.2.1+toml build_system=python_pip platform=linux os=ubuntu22.04 target=x86_64_v3/xcq4max uses more than one compiler, and might not fit the LMod hierarchy. Using gcc@12.3.0~binutils+bootstrap~graphite~mold~nvptx~piclibs~profiled~strip build_system=autotools build_type=RelWithDebInfo languages:='c,c++,fortran' platform=linux os=ubuntu22.04 target=x86_64_v3/fmnvqo4 as the LMod compiler.
==> Regenerating lmod module files

Now we have a set of module files without hashes, with a correct hierarchy, and with all our custom modifications:

$ module load gcc
$ module load openmpi openblas netlib-scalapack py-scipy
$ module av

---- /home/spack/stacks/modules/linux-ubuntu22.04-x86_64/gcc/12.3.0 ----
   automake/1.16.5
   bzip2/1.0.8
   cmake/3.31.9
   curl/8.15.0
   diffutils/3.12
   expat/2.7.3
   gdbm/1.25
   gettext/0.23.1
   git/2.48.1
   hwloc/2.12.2
   krb5/1.21.3
   libbsd/0.12.2
   libedit/3.1-20240808
   libevent/2.1.12
   libfabric/2.3.1
   libffi/3.5.2
   libiconv/1.18
   libidn2/2.3.7
   libmd/1.1.0
   libpciaccess/0.17
   libunistring/1.2
   libxcrypt/4.4.38
   libxml2/2.13.5
   mpich/4.3.2
   ncurses/6.5-20250705
   netlib-lapack/3.12.1
   numactl/2.0.18
   openblas/0.3.30
   openmpi/5.0.8
   openssh/9.9p1
   openssl/3.6.0
   perl/5.42.0
   pigz/2.8
   pmix/6.0.0
   prrte/4.0.0
   py-beniget/0.4.2.post1
   py-calver/2025.4.17
   py-cython/3.1.3
   py-flit-core/3.12.0
   py-gast/0.6.0
   py-hatch-vcs/0.5.0
   py-hatchling/1.27.0
   py-meson-python/0.18.0
   py-packaging/25.0
   py-pathspec/0.12.1
   py-pip/25.1.1
   py-pluggy/1.6.0
   py-ply/3.11
   py-pybind11/3.0.1
   py-pyproject-metadata/0.9.1
   py-scikit-build-core/0.11.5
   py-setuptools-scm/8.2.1
   py-setuptools/80.9.0
   py-trove-classifiers/2025.9.11.17
   py-wheel/0.45.1
   python-venv/1.0
   python/3.14.0
   readline/8.3
   sqlite/3.50.4
   tar/1.35
   util-linux-uuid/2.41
   xz/5.6.3
   yaksa/0.4
   zlib-ng/2.2.4
   zstd/1.5.7

---- /home/spack/stacks/modules/linux-ubuntu22.04-x86_64/Core ----
   autoconf-archive/2023.02.20
   ca-certificates-mozilla/2025-08-12
   compiler-wrapper/1.0
   gcc-runtime/12.3.0
   gcc/11.4.0
   gcc/12.3.0			      (L,D)
   glibc/2.35			      (L)
   util-macros/1.20.1

  Where:
   D:  Default Module
   L:  Module is loaded

If the avail list is too long
consider trying:

"module --default avail" or
"ml -d av" to just list the
default modules.
"module overview" or "ml ov"
to display the number of
modules for each name.

Use "module spider" to find
all possible modules and
extensions.
Use "module keyword key1 key2
..." to search for all
possible modules matching any
of the "keys".


$ module load mpich

Lmod is automatically
replacing "openmpi/5.0.8"
with "mpich/4.3.2".


Due to MODULEPATH changes, the following have been reloaded:
  1) netlib-scalapack/2.2.2

$ module load netlib-lapack

Lmod is automatically
replacing "openblas/0.3.30"
with "netlib-lapack/3.12.1".


Due to MODULEPATH changes, the following have been reloaded:
  1) netlib-scalapack/2.2.2

$ module purge

This concludes the quick tour of module file generation, and the tutorial on stacks.

Summary

In this tutorial, we configured Spack to install a stack of software built on a cross-product of different MPI and LAPACK libraries. We used the spec matrix syntax to express in a compact way the specs to be installed, and spec list definitions to reuse the same matrix rows in different places. Then, we discussed how to make the software easy to use, leveraging either filesystem views or module files.