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:isc23

and then set Spack up like this:

git clone --depth=100 --branch=releases/v0.21 https://github.com/spack/spack
. spack/share/spack/setup-env.sh
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

Scripting with Spack

This tutorial introduces advanced Spack features related to scripting. Specifically, we will show you how to write scripts using spack find and spack python. Earlier sections of the tutorial demonstrated using spack find to list and search installed packages. The spack python command gives you access to all of Spack’s internal APIs, allowing you to write more complex queries, for example.

Since Spack has an extensive API, we’ll only scratch the surface here. We’ll give you enough information to start writing your own scripts and to find what you need, with a little digging.

Setting up the tutorial

Before proceeding, let’s ensure the outputs for this segment are reasonable. Since you may have a lot of packages installed from earlier sections of the tutorial, we want to perform a little cleanup.

Let’s remove gcc@8.3.0 and re-install hdf5 and zlib@clang using the following commands:

$ spack uninstall -ay
==> Successfully uninstalled gcc@12.3.0%gcc@11.4.0~binutils+bootstrap~graphite~nvptx~piclibs~profiled~strip build_system=autotools build_type=RelWithDebInfo languages=c,c++,fortran arch=linux-ubuntu22.04-x86_64_v3/chmemdi
==> Successfully uninstalled gawk@5.2.2%gcc@11.4.0~nls build_system=autotools arch=linux-ubuntu22.04-x86_64_v3/t4xydm4
==> Successfully uninstalled mpc@1.3.1%gcc@11.4.0 build_system=autotools libs=shared,static arch=linux-ubuntu22.04-x86_64_v3/jueol5k
==> Successfully uninstalled mpfr@4.2.0%gcc@11.4.0 build_system=autotools libs=shared,static arch=linux-ubuntu22.04-x86_64_v3/qpadvjw
==> Successfully uninstalled texinfo@7.0.3%gcc@11.4.0 build_system=autotools arch=linux-ubuntu22.04-x86_64_v3/km6pqxp
==> Successfully uninstalled gettext@0.22.3%gcc@11.4.0+bzip2+curses+git~libunistring+libxml2+pic+shared+tar+xz build_system=autotools arch=linux-ubuntu22.04-x86_64_v3/y26lmlo
==> Successfully uninstalled tar@1.34%gcc@11.4.0 build_system=autotools zip=pigz arch=linux-ubuntu22.04-x86_64_v3/vdb3ozo
==> Successfully uninstalled zstd@1.5.5%gcc@11.4.0+programs build_system=makefile compression=none libs=shared,static arch=linux-ubuntu22.04-x86_64_v3/jkznmrm
==> Successfully uninstalled pigz@2.7%gcc@11.4.0 build_system=makefile arch=linux-ubuntu22.04-x86_64_v3/catlxmo
==> Successfully uninstalled libxml2@2.10.3%gcc@11.4.0+pic~python+shared build_system=autotools arch=linux-ubuntu22.04-x86_64_v3/67qoxbv
==> Successfully uninstalled autoconf-archive@2023.02.20%gcc@11.4.0 build_system=autotools arch=linux-ubuntu22.04-x86_64_v3/4wbogd6
==> Successfully uninstalled gmp@6.2.1%gcc@11.4.0+cxx build_system=autotools libs=shared,static patches=69ad2e2 arch=linux-ubuntu22.04-x86_64_v3/2fyiqrp
==> Successfully uninstalled libtool@2.4.7%gcc@11.4.0 build_system=autotools arch=linux-ubuntu22.04-x86_64_v3/rgag55h
==> Successfully uninstalled automake@1.16.5%gcc@11.4.0 build_system=autotools arch=linux-ubuntu22.04-x86_64_v3/d3cncgl
==> Successfully uninstalled autoconf@2.69%gcc@11.4.0 build_system=autotools patches=35c4492,7793209,a49dd5b arch=linux-ubuntu22.04-x86_64_v3/mnfnoa5
==> Successfully uninstalled perl@5.38.0%gcc@11.4.0+cpanm+opcode+open+shared+threads build_system=generic patches=714e4d1 arch=linux-ubuntu22.04-x86_64_v3/dg34i2a
==> Successfully uninstalled zlib-ng@2.1.4%gcc@11.4.0+compat+opt build_system=autotools arch=linux-ubuntu22.04-x86_64_v3/5xcetrv
==> Successfully uninstalled gdbm@1.23%gcc@11.4.0 build_system=autotools arch=linux-ubuntu22.04-x86_64_v3/m626hzw
==> Successfully uninstalled readline@8.2%gcc@11.4.0 build_system=autotools patches=bbf97f1 arch=linux-ubuntu22.04-x86_64_v3/xxgqlmj
==> Successfully uninstalled ncurses@6.4%gcc@11.4.0~symlinks+termlib abi=none build_system=autotools arch=linux-ubuntu22.04-x86_64_v3/qqlh6as
==> Successfully uninstalled pkgconf@1.9.5%gcc@11.4.0 build_system=autotools arch=linux-ubuntu22.04-x86_64_v3/zjgtpdo
==> Successfully uninstalled bzip2@1.0.8%gcc@11.4.0~debug~pic+shared build_system=generic arch=linux-ubuntu22.04-x86_64_v3/4oz3kpf
==> Successfully uninstalled berkeley-db@18.1.40%gcc@11.4.0+cxx~docs+stl build_system=autotools patches=26090f4,b231fcc arch=linux-ubuntu22.04-x86_64_v3/ku7makq
==> Successfully uninstalled m4@1.4.19%gcc@11.4.0+sigsegv build_system=autotools patches=9dc5fbd,bfdffa7 arch=linux-ubuntu22.04-x86_64_v3/jnv5nut
==> Successfully uninstalled libsigsegv@2.14%gcc@11.4.0 build_system=autotools arch=linux-ubuntu22.04-x86_64_v3/zuopqri
==> Successfully uninstalled diffutils@3.9%gcc@11.4.0 build_system=autotools arch=linux-ubuntu22.04-x86_64_v3/ueheij3
==> Successfully uninstalled libiconv@1.17%gcc@11.4.0 build_system=autotools libs=shared,static arch=linux-ubuntu22.04-x86_64_v3/ivn4eq4
==> Successfully uninstalled xz@5.4.1%gcc@11.4.0~pic build_system=autotools libs=shared,static arch=linux-ubuntu22.04-x86_64_v3/axxqoeq
==> Successfully uninstalled gmake@4.4.1%gcc@11.4.0~guile build_system=generic arch=linux-ubuntu22.04-x86_64_v3/znvoani
$ spack compiler rm gcc@12
==> gcc@12.3.0 has been removed
$ spack install hdf5
==> Installing gmake-4.4.1-znvoaniggvauzxv4yobchqt4g7tyjuc7 [1/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-gmake-4.4.1-znvoaniggvauzxv4yobchqt4g7tyjuc7.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/gmake-4.4.1/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-gmake-4.4.1-znvoaniggvauzxv4yobchqt4g7tyjuc7.spack
==> Extracting gmake-4.4.1-znvoaniggvauzxv4yobchqt4g7tyjuc7 from binary cache
==> gmake: Successfully installed gmake-4.4.1-znvoaniggvauzxv4yobchqt4g7tyjuc7
  Search: 0.00s.  Fetch: 0.11s.	 Install: 0.06s.  Extract: 0.04s.  Relocate: 0.01s.  Total: 0.17s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/gmake-4.4.1-znvoaniggvauzxv4yobchqt4g7tyjuc7
==> Installing ca-certificates-mozilla-2023-05-30-ct4al4udowha5xuopzhn3elwj2tsjomj [2/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-ca-certificates-mozilla-2023-05-30-ct4al4udowha5xuopzhn3elwj2tsjomj.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/ca-certificates-mozilla-2023-05-30/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-ca-certificates-mozilla-2023-05-30-ct4al4udowha5xuopzhn3elwj2tsjomj.spack
==> Extracting ca-certificates-mozilla-2023-05-30-ct4al4udowha5xuopzhn3elwj2tsjomj from binary cache
==> ca-certificates-mozilla: Successfully installed ca-certificates-mozilla-2023-05-30-ct4al4udowha5xuopzhn3elwj2tsjomj
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.01s.  Extract: 0.01s.  Relocate: 0.01s.  Total: 0.03s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/ca-certificates-mozilla-2023-05-30-ct4al4udowha5xuopzhn3elwj2tsjomj
==> Installing xz-5.4.1-axxqoeqv4lckdxrkvdp6f376ndmade4c [3/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-xz-5.4.1-axxqoeqv4lckdxrkvdp6f376ndmade4c.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/xz-5.4.1/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-xz-5.4.1-axxqoeqv4lckdxrkvdp6f376ndmade4c.spack
==> Extracting xz-5.4.1-axxqoeqv4lckdxrkvdp6f376ndmade4c from binary cache
==> xz: Successfully installed xz-5.4.1-axxqoeqv4lckdxrkvdp6f376ndmade4c
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.09s.  Extract: 0.08s.  Relocate: 0.01s.  Total: 0.10s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/xz-5.4.1-axxqoeqv4lckdxrkvdp6f376ndmade4c
==> Installing libsigsegv-2.14-zuopqrik4y7vhqq2isjnr6mbixyks4uk [4/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-libsigsegv-2.14-zuopqrik4y7vhqq2isjnr6mbixyks4uk.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/libsigsegv-2.14/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-libsigsegv-2.14-zuopqrik4y7vhqq2isjnr6mbixyks4uk.spack
==> Extracting libsigsegv-2.14-zuopqrik4y7vhqq2isjnr6mbixyks4uk from binary cache
==> libsigsegv: Successfully installed libsigsegv-2.14-zuopqrik4y7vhqq2isjnr6mbixyks4uk
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.02s.  Extract: 0.01s.  Relocate: 0.01s.  Total: 0.03s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/libsigsegv-2.14-zuopqrik4y7vhqq2isjnr6mbixyks4uk
==> Installing berkeley-db-18.1.40-ku7makqmto7yrue2y3duu2phqtnvqd26 [5/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-berkeley-db-18.1.40-ku7makqmto7yrue2y3duu2phqtnvqd26.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/berkeley-db-18.1.40/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-berkeley-db-18.1.40-ku7makqmto7yrue2y3duu2phqtnvqd26.spack
==> Extracting berkeley-db-18.1.40-ku7makqmto7yrue2y3duu2phqtnvqd26 from binary cache
==> berkeley-db: Successfully installed berkeley-db-18.1.40-ku7makqmto7yrue2y3duu2phqtnvqd26
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.10s.  Extract: 0.08s.  Relocate: 0.01s.  Total: 0.11s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/berkeley-db-18.1.40-ku7makqmto7yrue2y3duu2phqtnvqd26
==> Installing zstd-1.5.5-jkznmrmqdgtpzvs42qxljrjs6m6f6aho [6/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-zstd-1.5.5-jkznmrmqdgtpzvs42qxljrjs6m6f6aho.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/zstd-1.5.5/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-zstd-1.5.5-jkznmrmqdgtpzvs42qxljrjs6m6f6aho.spack
==> Extracting zstd-1.5.5-jkznmrmqdgtpzvs42qxljrjs6m6f6aho from binary cache
==> zstd: Successfully installed zstd-1.5.5-jkznmrmqdgtpzvs42qxljrjs6m6f6aho
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.05s.  Extract: 0.04s.  Relocate: 0.01s.  Total: 0.06s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/zstd-1.5.5-jkznmrmqdgtpzvs42qxljrjs6m6f6aho
==> Installing findutils-4.9.0-cws3eftnvff7shmr3acylis3utohkxfn [7/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-findutils-4.9.0-cws3eftnvff7shmr3acylis3utohkxfn.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/findutils-4.9.0/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-findutils-4.9.0-cws3eftnvff7shmr3acylis3utohkxfn.spack
==> Extracting findutils-4.9.0-cws3eftnvff7shmr3acylis3utohkxfn from binary cache
==> findutils: Successfully installed findutils-4.9.0-cws3eftnvff7shmr3acylis3utohkxfn
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.06s.  Extract: 0.05s.  Relocate: 0.01s.  Total: 0.07s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/findutils-4.9.0-cws3eftnvff7shmr3acylis3utohkxfn
==> Installing libiconv-1.17-ivn4eq42mmvco5l3drcxjzbmpto5nfi2 [8/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-libiconv-1.17-ivn4eq42mmvco5l3drcxjzbmpto5nfi2.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/libiconv-1.17/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-libiconv-1.17-ivn4eq42mmvco5l3drcxjzbmpto5nfi2.spack
==> Extracting libiconv-1.17-ivn4eq42mmvco5l3drcxjzbmpto5nfi2 from binary cache
==> libiconv: Successfully installed libiconv-1.17-ivn4eq42mmvco5l3drcxjzbmpto5nfi2
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.07s.  Extract: 0.06s.  Relocate: 0.01s.  Total: 0.08s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/libiconv-1.17-ivn4eq42mmvco5l3drcxjzbmpto5nfi2
==> Installing zlib-ng-2.1.4-5xcetrvs3fzd7k27dw5duyxitnsy4uvh [9/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-zlib-ng-2.1.4-5xcetrvs3fzd7k27dw5duyxitnsy4uvh.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/zlib-ng-2.1.4/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-zlib-ng-2.1.4-5xcetrvs3fzd7k27dw5duyxitnsy4uvh.spack
==> Extracting zlib-ng-2.1.4-5xcetrvs3fzd7k27dw5duyxitnsy4uvh from binary cache
==> zlib-ng: Successfully installed zlib-ng-2.1.4-5xcetrvs3fzd7k27dw5duyxitnsy4uvh
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.02s.  Extract: 0.01s.  Relocate: 0.01s.  Total: 0.03s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/zlib-ng-2.1.4-5xcetrvs3fzd7k27dw5duyxitnsy4uvh
==> Installing util-macros-1.19.3-b7j7735jjga7hkzuwzrwvzqnatlld2nb [10/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-util-macros-1.19.3-b7j7735jjga7hkzuwzrwvzqnatlld2nb.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/util-macros-1.19.3/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-util-macros-1.19.3-b7j7735jjga7hkzuwzrwvzqnatlld2nb.spack
==> Extracting util-macros-1.19.3-b7j7735jjga7hkzuwzrwvzqnatlld2nb from binary cache
==> util-macros: Successfully installed util-macros-1.19.3-b7j7735jjga7hkzuwzrwvzqnatlld2nb
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.01s.  Extract: 0.01s.  Relocate: 0.01s.  Total: 0.02s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/util-macros-1.19.3-b7j7735jjga7hkzuwzrwvzqnatlld2nb
==> Installing pkgconf-1.9.5-zjgtpdofa5acoyfs62cczvdj3gjngy3y [11/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-pkgconf-1.9.5-zjgtpdofa5acoyfs62cczvdj3gjngy3y.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/pkgconf-1.9.5/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-pkgconf-1.9.5-zjgtpdofa5acoyfs62cczvdj3gjngy3y.spack
==> Extracting pkgconf-1.9.5-zjgtpdofa5acoyfs62cczvdj3gjngy3y from binary cache
==> pkgconf: Successfully installed pkgconf-1.9.5-zjgtpdofa5acoyfs62cczvdj3gjngy3y
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.03s.  Extract: 0.02s.  Relocate: 0.01s.  Total: 0.03s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/pkgconf-1.9.5-zjgtpdofa5acoyfs62cczvdj3gjngy3y
==> Installing diffutils-3.9-ueheij3wbhepmelnkti3jsglzzknb4en [12/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-diffutils-3.9-ueheij3wbhepmelnkti3jsglzzknb4en.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/diffutils-3.9/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-diffutils-3.9-ueheij3wbhepmelnkti3jsglzzknb4en.spack
==> Extracting diffutils-3.9-ueheij3wbhepmelnkti3jsglzzknb4en from binary cache
==> diffutils: Successfully installed diffutils-3.9-ueheij3wbhepmelnkti3jsglzzknb4en
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.06s.  Extract: 0.05s.  Relocate: 0.01s.  Total: 0.07s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/diffutils-3.9-ueheij3wbhepmelnkti3jsglzzknb4en
==> Installing pigz-2.7-catlxmodt7sirns2di5pod576omq32hk [13/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-pigz-2.7-catlxmodt7sirns2di5pod576omq32hk.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/pigz-2.7/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-pigz-2.7-catlxmodt7sirns2di5pod576omq32hk.spack
==> Extracting pigz-2.7-catlxmodt7sirns2di5pod576omq32hk from binary cache
==> pigz: Successfully installed pigz-2.7-catlxmodt7sirns2di5pod576omq32hk
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.02s.  Extract: 0.01s.  Relocate: 0.01s.  Total: 0.03s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/pigz-2.7-catlxmodt7sirns2di5pod576omq32hk
==> Installing ncurses-6.4-qqlh6asufg6vhjnkbhwxl3jmocyolykt [14/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-ncurses-6.4-qqlh6asufg6vhjnkbhwxl3jmocyolykt.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/ncurses-6.4/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-ncurses-6.4-qqlh6asufg6vhjnkbhwxl3jmocyolykt.spack
==> Extracting ncurses-6.4-qqlh6asufg6vhjnkbhwxl3jmocyolykt from binary cache
==> ncurses: Successfully installed ncurses-6.4-qqlh6asufg6vhjnkbhwxl3jmocyolykt
  Search: 0.00s.  Fetch: 0.02s.	 Install: 0.78s.  Extract: 0.75s.  Relocate: 0.02s.  Total: 0.80s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/ncurses-6.4-qqlh6asufg6vhjnkbhwxl3jmocyolykt
==> Installing nghttp2-1.57.0-my64owhngq5r4nl2lpysh2skvrq3nlo5 [15/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-nghttp2-1.57.0-my64owhngq5r4nl2lpysh2skvrq3nlo5.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/nghttp2-1.57.0/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-nghttp2-1.57.0-my64owhngq5r4nl2lpysh2skvrq3nlo5.spack
==> Extracting nghttp2-1.57.0-my64owhngq5r4nl2lpysh2skvrq3nlo5 from binary cache
==> nghttp2: Successfully installed nghttp2-1.57.0-my64owhngq5r4nl2lpysh2skvrq3nlo5
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.05s.  Extract: 0.04s.  Relocate: 0.01s.  Total: 0.06s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/nghttp2-1.57.0-my64owhngq5r4nl2lpysh2skvrq3nlo5
==> Installing libxml2-2.10.3-67qoxbv3pyyep745wytvlgnnosn6pwnr [16/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-libxml2-2.10.3-67qoxbv3pyyep745wytvlgnnosn6pwnr.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/libxml2-2.10.3/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-libxml2-2.10.3-67qoxbv3pyyep745wytvlgnnosn6pwnr.spack
==> Extracting libxml2-2.10.3-67qoxbv3pyyep745wytvlgnnosn6pwnr from binary cache
==> libxml2: Successfully installed libxml2-2.10.3-67qoxbv3pyyep745wytvlgnnosn6pwnr
  Search: 0.00s.  Fetch: 0.02s.	 Install: 0.17s.  Extract: 0.14s.  Relocate: 0.02s.  Total: 0.19s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/libxml2-2.10.3-67qoxbv3pyyep745wytvlgnnosn6pwnr
==> Installing m4-1.4.19-jnv5nut43juhm7esjn3tvxas6m67zbx4 [17/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-m4-1.4.19-jnv5nut43juhm7esjn3tvxas6m67zbx4.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/m4-1.4.19/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-m4-1.4.19-jnv5nut43juhm7esjn3tvxas6m67zbx4.spack
==> Extracting m4-1.4.19-jnv5nut43juhm7esjn3tvxas6m67zbx4 from binary cache
==> m4: Successfully installed m4-1.4.19-jnv5nut43juhm7esjn3tvxas6m67zbx4
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.07s.  Extract: 0.06s.  Relocate: 0.01s.  Total: 0.08s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/m4-1.4.19-jnv5nut43juhm7esjn3tvxas6m67zbx4
==> Installing bzip2-1.0.8-4oz3kpfibmlvfizzivudj7pnzm2w7ce7 [18/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-bzip2-1.0.8-4oz3kpfibmlvfizzivudj7pnzm2w7ce7.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/bzip2-1.0.8/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-bzip2-1.0.8-4oz3kpfibmlvfizzivudj7pnzm2w7ce7.spack
==> Extracting bzip2-1.0.8-4oz3kpfibmlvfizzivudj7pnzm2w7ce7 from binary cache
==> bzip2: Successfully installed bzip2-1.0.8-4oz3kpfibmlvfizzivudj7pnzm2w7ce7
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.04s.  Extract: 0.02s.  Relocate: 0.01s.  Total: 0.05s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/bzip2-1.0.8-4oz3kpfibmlvfizzivudj7pnzm2w7ce7
==> Installing readline-8.2-xxgqlmjyegrwwuq2pq4zaq7y6qojp3mz [19/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-readline-8.2-xxgqlmjyegrwwuq2pq4zaq7y6qojp3mz.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/readline-8.2/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-readline-8.2-xxgqlmjyegrwwuq2pq4zaq7y6qojp3mz.spack
==> Extracting readline-8.2-xxgqlmjyegrwwuq2pq4zaq7y6qojp3mz from binary cache
==> readline: Successfully installed readline-8.2-xxgqlmjyegrwwuq2pq4zaq7y6qojp3mz
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.06s.  Extract: 0.05s.  Relocate: 0.01s.  Total: 0.07s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/readline-8.2-xxgqlmjyegrwwuq2pq4zaq7y6qojp3mz
==> Installing libedit-3.1-20210216-s4kq4wo6ii3vt3s354agguqm462yu32q [20/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-libedit-3.1-20210216-s4kq4wo6ii3vt3s354agguqm462yu32q.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/libedit-3.1-20210216/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-libedit-3.1-20210216-s4kq4wo6ii3vt3s354agguqm462yu32q.spack
==> Extracting libedit-3.1-20210216-s4kq4wo6ii3vt3s354agguqm462yu32q from binary cache
==> libedit: Successfully installed libedit-3.1-20210216-s4kq4wo6ii3vt3s354agguqm462yu32q
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.05s.  Extract: 0.03s.  Relocate: 0.01s.  Total: 0.05s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/libedit-3.1-20210216-s4kq4wo6ii3vt3s354agguqm462yu32q
==> Installing libtool-2.4.7-rgag55hxbjmkoqpx4gnr2golz2zfyvnt [21/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-libtool-2.4.7-rgag55hxbjmkoqpx4gnr2golz2zfyvnt.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/libtool-2.4.7/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-libtool-2.4.7-rgag55hxbjmkoqpx4gnr2golz2zfyvnt.spack
==> Extracting libtool-2.4.7-rgag55hxbjmkoqpx4gnr2golz2zfyvnt from binary cache
==> libtool: Successfully installed libtool-2.4.7-rgag55hxbjmkoqpx4gnr2golz2zfyvnt
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.05s.  Extract: 0.04s.  Relocate: 0.01s.  Total: 0.06s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/libtool-2.4.7-rgag55hxbjmkoqpx4gnr2golz2zfyvnt
==> Installing tar-1.34-vdb3ozocdu73c4gl45gnzcjgscfye6mg [22/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-tar-1.34-vdb3ozocdu73c4gl45gnzcjgscfye6mg.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/tar-1.34/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-tar-1.34-vdb3ozocdu73c4gl45gnzcjgscfye6mg.spack
==> Extracting tar-1.34-vdb3ozocdu73c4gl45gnzcjgscfye6mg from binary cache
==> tar: Successfully installed tar-1.34-vdb3ozocdu73c4gl45gnzcjgscfye6mg
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.10s.  Extract: 0.08s.  Relocate: 0.01s.  Total: 0.11s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/tar-1.34-vdb3ozocdu73c4gl45gnzcjgscfye6mg
==> Installing gdbm-1.23-m626hzwxamau2a4cbu2hptq477qnufc4 [23/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-gdbm-1.23-m626hzwxamau2a4cbu2hptq477qnufc4.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/gdbm-1.23/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-gdbm-1.23-m626hzwxamau2a4cbu2hptq477qnufc4.spack
==> Extracting gdbm-1.23-m626hzwxamau2a4cbu2hptq477qnufc4 from binary cache
==> gdbm: Successfully installed gdbm-1.23-m626hzwxamau2a4cbu2hptq477qnufc4
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.05s.  Extract: 0.04s.  Relocate: 0.01s.  Total: 0.06s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/gdbm-1.23-m626hzwxamau2a4cbu2hptq477qnufc4
==> Installing libpciaccess-0.17-af4bqq6hwe23ojn7i3o2n7ws2b7wu64m [24/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-libpciaccess-0.17-af4bqq6hwe23ojn7i3o2n7ws2b7wu64m.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/libpciaccess-0.17/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-libpciaccess-0.17-af4bqq6hwe23ojn7i3o2n7ws2b7wu64m.spack
==> Extracting libpciaccess-0.17-af4bqq6hwe23ojn7i3o2n7ws2b7wu64m from binary cache
==> libpciaccess: Successfully installed libpciaccess-0.17-af4bqq6hwe23ojn7i3o2n7ws2b7wu64m
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.02s.  Extract: 0.01s.  Relocate: 0.01s.  Total: 0.03s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/libpciaccess-0.17-af4bqq6hwe23ojn7i3o2n7ws2b7wu64m
==> Installing gettext-0.22.3-y26lmloj3u6romzd6j3xdfiib7gnkbga [25/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-gettext-0.22.3-y26lmloj3u6romzd6j3xdfiib7gnkbga.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/gettext-0.22.3/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-gettext-0.22.3-y26lmloj3u6romzd6j3xdfiib7gnkbga.spack
==> Extracting gettext-0.22.3-y26lmloj3u6romzd6j3xdfiib7gnkbga from binary cache
==> gettext: Successfully installed gettext-0.22.3-y26lmloj3u6romzd6j3xdfiib7gnkbga
  Search: 0.00s.  Fetch: 0.02s.	 Install: 0.62s.  Extract: 0.58s.  Relocate: 0.03s.  Total: 0.64s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/gettext-0.22.3-y26lmloj3u6romzd6j3xdfiib7gnkbga
==> Installing perl-5.38.0-dg34i2ae7omo77k6ntqkb6zi76gmeava [26/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-perl-5.38.0-dg34i2ae7omo77k6ntqkb6zi76gmeava.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/perl-5.38.0/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-perl-5.38.0-dg34i2ae7omo77k6ntqkb6zi76gmeava.spack
==> Extracting perl-5.38.0-dg34i2ae7omo77k6ntqkb6zi76gmeava from binary cache
==> perl: Successfully installed perl-5.38.0-dg34i2ae7omo77k6ntqkb6zi76gmeava
  Search: 0.00s.  Fetch: 0.02s.	 Install: 0.86s.  Extract: 0.64s.  Relocate: 0.10s.  Total: 0.88s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/perl-5.38.0-dg34i2ae7omo77k6ntqkb6zi76gmeava
==> Installing hwloc-2.9.1-dyrsjedv3fxwdi3sutxieq2rcz4etdib [27/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-hwloc-2.9.1-dyrsjedv3fxwdi3sutxieq2rcz4etdib.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/hwloc-2.9.1/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-hwloc-2.9.1-dyrsjedv3fxwdi3sutxieq2rcz4etdib.spack
==> Extracting hwloc-2.9.1-dyrsjedv3fxwdi3sutxieq2rcz4etdib from binary cache
==> hwloc: Successfully installed hwloc-2.9.1-dyrsjedv3fxwdi3sutxieq2rcz4etdib
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.19s.  Extract: 0.17s.  Relocate: 0.02s.  Total: 0.21s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/hwloc-2.9.1-dyrsjedv3fxwdi3sutxieq2rcz4etdib
==> Installing bison-3.8.2-lza42n2wukvkldw6vcrp3iwpvw7d6oni [28/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-bison-3.8.2-lza42n2wukvkldw6vcrp3iwpvw7d6oni.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/bison-3.8.2/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-bison-3.8.2-lza42n2wukvkldw6vcrp3iwpvw7d6oni.spack
==> Extracting bison-3.8.2-lza42n2wukvkldw6vcrp3iwpvw7d6oni from binary cache
==> bison: Successfully installed bison-3.8.2-lza42n2wukvkldw6vcrp3iwpvw7d6oni
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.13s.  Extract: 0.10s.  Relocate: 0.02s.  Total: 0.14s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/bison-3.8.2-lza42n2wukvkldw6vcrp3iwpvw7d6oni
==> Installing autoconf-2.69-mnfnoa5qnshe7gdq7gnlkwowqxyrymia [29/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-autoconf-2.69-mnfnoa5qnshe7gdq7gnlkwowqxyrymia.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/autoconf-2.69/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-autoconf-2.69-mnfnoa5qnshe7gdq7gnlkwowqxyrymia.spack
==> Extracting autoconf-2.69-mnfnoa5qnshe7gdq7gnlkwowqxyrymia from binary cache
==> autoconf: Successfully installed autoconf-2.69-mnfnoa5qnshe7gdq7gnlkwowqxyrymia
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.06s.  Extract: 0.04s.  Relocate: 0.01s.  Total: 0.07s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/autoconf-2.69-mnfnoa5qnshe7gdq7gnlkwowqxyrymia
==> Installing openssl-3.1.3-35j7wvrf3jovxokjkzdrpv265sfrjwga [30/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-openssl-3.1.3-35j7wvrf3jovxokjkzdrpv265sfrjwga.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/openssl-3.1.3/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-openssl-3.1.3-35j7wvrf3jovxokjkzdrpv265sfrjwga.spack
==> Extracting openssl-3.1.3-35j7wvrf3jovxokjkzdrpv265sfrjwga from binary cache
==> openssl: Successfully installed openssl-3.1.3-35j7wvrf3jovxokjkzdrpv265sfrjwga
  Search: 0.00s.  Fetch: 0.02s.	 Install: 0.21s.  Extract: 0.19s.  Relocate: 0.01s.  Total: 0.23s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/openssl-3.1.3-35j7wvrf3jovxokjkzdrpv265sfrjwga
==> Installing libxcrypt-4.4.35-hezcx7ggdisbf6oqol5ucfch7emlggqk [31/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-libxcrypt-4.4.35-hezcx7ggdisbf6oqol5ucfch7emlggqk.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/libxcrypt-4.4.35/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-libxcrypt-4.4.35-hezcx7ggdisbf6oqol5ucfch7emlggqk.spack
==> Extracting libxcrypt-4.4.35-hezcx7ggdisbf6oqol5ucfch7emlggqk from binary cache
==> libxcrypt: Successfully installed libxcrypt-4.4.35-hezcx7ggdisbf6oqol5ucfch7emlggqk
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.06s.  Extract: 0.04s.  Relocate: 0.01s.  Total: 0.07s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/libxcrypt-4.4.35-hezcx7ggdisbf6oqol5ucfch7emlggqk
==> Installing automake-1.16.5-d3cncglfvi2mpx7ytpfqnleyc233qcej [32/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-automake-1.16.5-d3cncglfvi2mpx7ytpfqnleyc233qcej.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/automake-1.16.5/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-automake-1.16.5-d3cncglfvi2mpx7ytpfqnleyc233qcej.spack
==> Extracting automake-1.16.5-d3cncglfvi2mpx7ytpfqnleyc233qcej from binary cache
==> automake: Successfully installed automake-1.16.5-d3cncglfvi2mpx7ytpfqnleyc233qcej
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.10s.  Extract: 0.07s.  Relocate: 0.02s.  Total: 0.11s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/automake-1.16.5-d3cncglfvi2mpx7ytpfqnleyc233qcej
==> Installing curl-8.4.0-ijsmc3jx2cjmdy2svodqqkeimkooheod [33/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-curl-8.4.0-ijsmc3jx2cjmdy2svodqqkeimkooheod.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/curl-8.4.0/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-curl-8.4.0-ijsmc3jx2cjmdy2svodqqkeimkooheod.spack
==> Extracting curl-8.4.0-ijsmc3jx2cjmdy2svodqqkeimkooheod from binary cache
==> curl: Successfully installed curl-8.4.0-ijsmc3jx2cjmdy2svodqqkeimkooheod
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.15s.  Extract: 0.14s.  Relocate: 0.01s.  Total: 0.16s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/curl-8.4.0-ijsmc3jx2cjmdy2svodqqkeimkooheod
==> Installing libevent-2.1.12-gsbuhgced6vcl7edpc7nor62dlzh2mik [34/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-libevent-2.1.12-gsbuhgced6vcl7edpc7nor62dlzh2mik.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/libevent-2.1.12/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-libevent-2.1.12-gsbuhgced6vcl7edpc7nor62dlzh2mik.spack
==> Extracting libevent-2.1.12-gsbuhgced6vcl7edpc7nor62dlzh2mik from binary cache
==> libevent: Successfully installed libevent-2.1.12-gsbuhgced6vcl7edpc7nor62dlzh2mik
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.09s.  Extract: 0.07s.  Relocate: 0.01s.  Total: 0.10s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/libevent-2.1.12-gsbuhgced6vcl7edpc7nor62dlzh2mik
==> Installing krb5-1.20.1-tjiqlymlbmjxyyvwlkumu4qq65nuqr3w [35/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-krb5-1.20.1-tjiqlymlbmjxyyvwlkumu4qq65nuqr3w.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/krb5-1.20.1/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-krb5-1.20.1-tjiqlymlbmjxyyvwlkumu4qq65nuqr3w.spack
==> Extracting krb5-1.20.1-tjiqlymlbmjxyyvwlkumu4qq65nuqr3w from binary cache
==> krb5: Successfully installed krb5-1.20.1-tjiqlymlbmjxyyvwlkumu4qq65nuqr3w
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.15s.  Extract: 0.11s.  Relocate: 0.03s.  Total: 0.16s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/krb5-1.20.1-tjiqlymlbmjxyyvwlkumu4qq65nuqr3w
==> Installing numactl-2.0.14-mbwdizyinycylldk4lrjvq2y474cd5bk [36/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-numactl-2.0.14-mbwdizyinycylldk4lrjvq2y474cd5bk.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/numactl-2.0.14/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-numactl-2.0.14-mbwdizyinycylldk4lrjvq2y474cd5bk.spack
==> Extracting numactl-2.0.14-mbwdizyinycylldk4lrjvq2y474cd5bk from binary cache
==> numactl: Successfully installed numactl-2.0.14-mbwdizyinycylldk4lrjvq2y474cd5bk
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.04s.  Extract: 0.03s.  Relocate: 0.01s.  Total: 0.05s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/numactl-2.0.14-mbwdizyinycylldk4lrjvq2y474cd5bk
==> Installing cmake-3.27.7-kd6xihnhlzyfwafeilow6t2mvolyryor [37/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-cmake-3.27.7-kd6xihnhlzyfwafeilow6t2mvolyryor.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/cmake-3.27.7/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-cmake-3.27.7-kd6xihnhlzyfwafeilow6t2mvolyryor.spack
==> Extracting cmake-3.27.7-kd6xihnhlzyfwafeilow6t2mvolyryor from binary cache
==> cmake: Successfully installed cmake-3.27.7-kd6xihnhlzyfwafeilow6t2mvolyryor
  Search: 0.00s.  Fetch: 0.05s.	 Install: 1.17s.  Extract: 1.08s.  Relocate: 0.08s.  Total: 1.22s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/cmake-3.27.7-kd6xihnhlzyfwafeilow6t2mvolyryor
==> Installing pmix-5.0.1-rb3cnni4wscnsh4yhc7ew3q3g3ki6jcx [38/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-pmix-5.0.1-rb3cnni4wscnsh4yhc7ew3q3g3ki6jcx.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/pmix-5.0.1/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-pmix-5.0.1-rb3cnni4wscnsh4yhc7ew3q3g3ki6jcx.spack
==> Extracting pmix-5.0.1-rb3cnni4wscnsh4yhc7ew3q3g3ki6jcx from binary cache
==> pmix: Successfully installed pmix-5.0.1-rb3cnni4wscnsh4yhc7ew3q3g3ki6jcx
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.20s.  Extract: 0.17s.  Relocate: 0.02s.  Total: 0.22s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/pmix-5.0.1-rb3cnni4wscnsh4yhc7ew3q3g3ki6jcx
==> Installing openssh-9.5p1-zjwxy3znkrc3yslkm3eoyewet5bxacjc [39/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-openssh-9.5p1-zjwxy3znkrc3yslkm3eoyewet5bxacjc.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/openssh-9.5p1/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-openssh-9.5p1-zjwxy3znkrc3yslkm3eoyewet5bxacjc.spack
==> Extracting openssh-9.5p1-zjwxy3znkrc3yslkm3eoyewet5bxacjc from binary cache
==> openssh: Successfully installed openssh-9.5p1-zjwxy3znkrc3yslkm3eoyewet5bxacjc
  Search: 0.00s.  Fetch: 0.01s.	 Install: 0.11s.  Extract: 0.08s.  Relocate: 0.03s.  Total: 0.12s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/openssh-9.5p1-zjwxy3znkrc3yslkm3eoyewet5bxacjc
==> Installing openmpi-4.1.6-55bb3ifocfi5nsaikxkgrtzcqvgod6nn [40/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-openmpi-4.1.6-55bb3ifocfi5nsaikxkgrtzcqvgod6nn.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/openmpi-4.1.6/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-openmpi-4.1.6-55bb3ifocfi5nsaikxkgrtzcqvgod6nn.spack
==> Extracting openmpi-4.1.6-55bb3ifocfi5nsaikxkgrtzcqvgod6nn from binary cache
==> openmpi: Successfully installed openmpi-4.1.6-55bb3ifocfi5nsaikxkgrtzcqvgod6nn
  Search: 0.00s.  Fetch: 0.02s.	 Install: 0.39s.  Extract: 0.35s.  Relocate: 0.03s.  Total: 0.41s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/openmpi-4.1.6-55bb3ifocfi5nsaikxkgrtzcqvgod6nn
==> Installing hdf5-1.14.3-jci5t3epnylgqmjrujldftopun26fvrr [41/41]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-hdf5-1.14.3-jci5t3epnylgqmjrujldftopun26fvrr.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/hdf5-1.14.3/linux-ubuntu22.04-x86_64_v3-gcc-11.4.0-hdf5-1.14.3-jci5t3epnylgqmjrujldftopun26fvrr.spack
==> Extracting hdf5-1.14.3-jci5t3epnylgqmjrujldftopun26fvrr from binary cache
==> hdf5: Successfully installed hdf5-1.14.3-jci5t3epnylgqmjrujldftopun26fvrr
  Search: 0.00s.  Fetch: 0.05s.	 Install: 0.87s.  Extract: 0.79s.  Relocate: 0.07s.  Total: 0.92s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/hdf5-1.14.3-jci5t3epnylgqmjrujldftopun26fvrr
$ spack install zlib%clang
==> Installing gmake-4.4.1-d54pflh3qlovydzjgff55nvzxtqedobt [1/2]
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3-clang-14.0.0-gmake-4.4.1-d54pflh3qlovydzjgff55nvzxtqedobt.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu22.04-x86_64_v3/clang-14.0.0/gmake-4.4.1/linux-ubuntu22.04-x86_64_v3-clang-14.0.0-gmake-4.4.1-d54pflh3qlovydzjgff55nvzxtqedobt.spack
==> Extracting gmake-4.4.1-d54pflh3qlovydzjgff55nvzxtqedobt from binary cache
==> gmake: Successfully installed gmake-4.4.1-d54pflh3qlovydzjgff55nvzxtqedobt
  Search: 0.00s.  Fetch: 0.09s.	 Install: 0.05s.  Extract: 0.03s.  Relocate: 0.01s.  Total: 0.14s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/clang-14.0.0/gmake-4.4.1-d54pflh3qlovydzjgff55nvzxtqedobt
==> Installing zlib-1.3-goe4uiyagvbzjza6d65dpdrdqyxjtb56 [2/2]
==> No binary for zlib-1.3-goe4uiyagvbzjza6d65dpdrdqyxjtb56 found: installing from source
==> Fetching https://mirror.spack.io/_source-cache/archive/ff/ff0ba4c292013dbc27530b3a81e1f9a813cd39de01ca5e0f8bf355702efa593e.tar.gz
==> No patches needed for zlib
==> zlib: Executing phase: 'edit'
==> zlib: Executing phase: 'build'
==> zlib: Executing phase: 'install'
==> zlib: Successfully installed zlib-1.3-goe4uiyagvbzjza6d65dpdrdqyxjtb56
  Stage: 1.75s.	 Edit: 0.77s.  Build: 0.89s.  Install: 0.07s.  Post-install: 0.01s.  Total: 3.57s
[+] /home/spack/spack/opt/spack/linux-ubuntu22.04-x86_64_v3/clang-14.0.0/zlib-1.3-goe4uiyagvbzjza6d65dpdrdqyxjtb56

Now we are ready to use the Spack’s find and python subcommands to query the installed packages.

Scripting with spack find

So far, the output we’ve seen from spack find has been for human consumption. But you can take advantage of some advanced options of the command to generate machine-readable output suitable for piping to a script.

spack find --format

The main job of spack find is to show the user a bunch of concrete specs that correspond to installed packages. By default, we display them with some default attributes, like the @version suffix you’re used to seeing in the output.

The --format argument allows you to display the specs however you choose, using custom format strings. Format strings let you specify the names of particular parts of the specs you want displayed. Let’s see the first option in action.

Suppose you only want to display the name, version, and first ten (10) characters of the hash for every package installed in your Spack instance. You can generate that output with the following command:

$ spack find --format "{name} {version} {hash:10}"
autoconf 2.69 mnfnoa5qns		       libtool 2.4.7 rgag55hxbj
automake 1.16.5 d3cncglfvi		       libxcrypt 4.4.35 hezcx7ggdi
berkeley-db 18.1.40 ku7makqmto		       libxml2 2.10.3 67qoxbv3py
bison 3.8.2 lza42n2wuk			       m4 1.4.19 jnv5nut43j
bzip2 1.0.8 4oz3kpfibm			       ncurses 6.4 qqlh6asufg
ca-certificates-mozilla 2023-05-30 ct4al4udow  nghttp2 1.57.0 my64owhngq
cmake 3.27.7 kd6xihnhlz			       numactl 2.0.14 mbwdizyiny
curl 8.4.0 ijsmc3jx2c			       openmpi 4.1.6 55bb3ifocf
diffutils 3.9 ueheij3wbh		       openssh 9.5p1 zjwxy3znkr
findutils 4.9.0 cws3eftnvf		       openssl 3.1.3 35j7wvrf3j
gdbm 1.23 m626hzwxam			       perl 5.38.0 dg34i2ae7o
gettext 0.22.3 y26lmloj3u		       pigz 2.7 catlxmodt7
gmake 4.4.1 d54pflh3ql			       pkgconf 1.9.5 zjgtpdofa5
gmake 4.4.1 znvoaniggv			       pmix 5.0.1 rb3cnni4ws
hdf5 1.14.3 jci5t3epny			       readline 8.2 xxgqlmjyeg
hwloc 2.9.1 dyrsjedv3f			       tar 1.34 vdb3ozocdu
krb5 1.20.1 tjiqlymlbm			       util-macros 1.19.3 b7j7735jjg
libedit 3.1-20210216 s4kq4wo6ii		       xz 5.4.1 axxqoeqv4l
libevent 2.1.12 gsbuhgced6		       zlib 1.3 goe4uiyagv
libiconv 1.17 ivn4eq42mm		       zlib-ng 2.1.4 5xcetrvs3f
libpciaccess 0.17 af4bqq6hwe		       zstd 1.5.5 jkznmrmqdg
libsigsegv 2.14 zuopqrik4y

Note that name, version, and hash are attributes of Spack’s internal Spec object and enclosing them in braces ensures they are output according to your format string.

Using spack find --format allows you to retrieve just the information you need to do things like pipe the output to typical UNIX command-line tools like sort or uniq.

spack find --json

Alternatively, you can get a serialized version of Spec objects in the JSON format using the --json option. For example, you can get attributes for all installations of zlib by entering:

$ spack find --json zlib

The spack find --json command gives you everything we know about the specs in a structured format. You can pipe its output to JSON filtering tools like jq to extract just the parts you want.

Check out the basic usage docs for more examples.

Introducing the spack python command

What if we need to perform more advanced queries?

Spack provides the spack python command to launch a python interpreter with Spack’s python modules available to import. It uses the underlying python for the rest of its commands. So you can write scripts to:

  • run Spack commands;

  • explore abstract and concretized specs; and

  • directly access other internal components of Spack.

Let’s launch a Spack-aware python interpreter by entering:

$ spack python
exit()
Spack version 0.21.0.dev0
Python 3.11.6, Linux x86_64
>>> exit()

Since we are in a python interpreter, use exit() to end the session and return to the terminal.

Accessing the Spec object

Now let’s take a look at the internal representation of the Spack Spec. As you already know, specs can be either abstract or concrete. The specs you’ve seen in package.py files (e.g., in the install() method) have been concrete, or fully specified. The specs you’ve typed on the command line have been abstract. Understanding the differences between the two types is key to using Spack’s internal API.

Let’s open another python interpreter with spack python, instantiate the zlib spec, and check a few properties of an abstract spec:

  >>> from spack.spec import Spec
  >>> s = Spec('zlib target=ivybridge')
  >>> s.concrete
  False
  >>> s.version
  Traceback (most recent call last):
    File "<console>", line 1, in <module>
    File "/home/spack/spack/lib/spack/spack/spec.py", line 3166, in version
      raise SpecError("Spec version is not concrete: " + str(self))
  SpecError: Spec version is not concrete: zlib arch=linux-None-ivybridge
  >>> s.versions
  [:]
  >>> str(s.architecture)
  linux-None-ivybridge

Notice that there are Spec properties and methods that are not accessible to abstract specs; specifically:

  • an exception – SpecError – is raised if we try to access its version;

  • there are no associated versions; and

  • the spec’s operating system is None.

Now, without exiting the interpreter, let’s concretize the spec and try again:

  >>> s.concretize()
  >>> s.concrete
  True
  >>> s.version
  Version('1.2.11')
  >>> s.versions
  [Version('1.2.11')]
  >>> str(s.architecture)
  linux-ubuntu18.04-ivybridge

Notice that the concretized spec now:

  • has a version;

  • has a single entry in its versions list; and

  • the operating system is now ubuntu18.04.

It is not necessary to store the intermediate abstract spec – you can use the .concretized() method as shorthand:

  >>> t = Spec('zlib target=ivybridge').concretized()
  >>> s == t
  True

Querying the Spack database

Even more powerful queries are available when we look at the information stored in the Spack database. The Database object in Spack is in the spack.store.db variable. We’ll interact with it mainly through the query() method. Let’s see the documentation available for query() using python’s built-in help() function:

  >>> import spack.store
  >>> help(spack.store.db.query)
  Help on method query in module spack.database:

  query(*args, **kwargs) method of spack.database.Database instance
      Query the Spack database including all upstream databases.

      Args:
          query_spec: queries iterate through specs in the database and
              return those that satisfy the supplied ``query_spec``. If
              query_spec is `any`, This will match all specs in the
              database.  If it is a spec, we'll evaluate
              ``spec.satisfies(query_spec)``

          known (bool or any, optional): Specs that are "known" are those
              for which Spack can locate a ``package.py`` file -- i.e.,
              Spack "knows" how to install them.  Specs that are unknown may
              represent packages that existed in a previous version of
              Spack, but have since either changed their name or
              been removed

          installed (bool or any, or InstallStatus or iterable of
              InstallStatus, optional): if ``True``, includes only installed
              specs in the search; if ``False`` only missing specs, and if
              ``any``, all specs in database. If an InstallStatus or iterable
              of InstallStatus, returns specs whose install status
              (installed, deprecated, or missing) matches (one of) the
              InstallStatus. (default: True)

          explicit (bool or any, optional): A spec that was installed
              following a specific user request is marked as explicit. If
              instead it was pulled-in as a dependency of a user requested
              spec it's considered implicit.

          start_date (datetime, optional): filters the query discarding
              specs that have been installed before ``start_date``.

          end_date (datetime, optional): filters the query discarding
              specs that have been installed after ``end_date``.

          hashes (container): list or set of hashes that we can use to
              restrict the search

      Returns:
          list of specs that match the query
  (END)

We will primarily make use of the query_spec argument.

Recall that queries using the spack find command are limited to queries of attributes with matching values, not values they do not have. In other words, we cannot use the spack find command for all packages that do not satisfy a certain criterion.

We can use the python interface to write these types of queries. For example, let’s find all packages that were compiled with gcc but do not depend on mpich. We can do this by using custom python code and Spack database queries. We will use the spack.cmd.display_specs for output to achieve the same printing functionality as the spack find command:

  >>> gcc_query_spec = Spec('%gcc')
  >>> gcc_specs = spack.store.db.query(gcc_query_spec)
  >>> result = filter(lambda spec: not spec.satisfies('^mpich'), gcc_specs)
  >>> import spack.cmd
  >>> spack.cmd.display_specs(result)
  -- linux-ubuntu18.04-x86_64 / gcc@7.5.0 -------------------------
  autoconf@2.69    libiconv@1.16        m4@1.4.18       perl@5.30.3         zlib@1.2.11
  automake@1.16.2  libpciaccess@0.13.5  ncurses@6.2     pkgconf@1.7.3
  gdbm@1.18.1      libsigsegv@2.12      numactl@2.0.12  readline@8.0
  hdf5@1.10.6      libtool@2.4.6        openmpi@3.1.6   util-macros@1.19.1
  hwloc@1.11.11    libxml2@2.9.10       patchelf@0.10   xz@5.2.5

Now we have a powerful query not available through spack find.

Let’s exit the interpreter to take us back to the command line:

>>> exit()

before generalizing the functionality for re-use.

Using scripts

Now let’s parameterize our script to accept arguments on the command line. With a few generalizations to use the include and exclude specs as arguments, we can create a powerful, general-purpose query script.

Open a file called find_exclude.py in your preferred editor and add the following code:

from spack.spec import Spec
import spack.store
import spack.cmd
import sys

include_spec = Spec(sys.argv[1])
exclude_spec = Spec(sys.argv[2])

all_included = spack.store.db.query(include_spec)
result = filter(lambda spec: not spec.satisfies(exclude_spec), all_included)

spack.cmd.display_specs(result)

Notice we added importing and using the system package (sys) to access the first and second command line arguments.

Now we can run our new script by entering the following:

$ spack python find_exclude.py %gcc ^mpich
-- linux-ubuntu22.04-x86_64_v3 / gcc@11.4.0 ---------------------
autoconf@2.69			    hwloc@2.9.1		  openmpi@4.1.6
automake@1.16.5			    krb5@1.20.1		  openssh@9.5p1
berkeley-db@18.1.40		    libedit@3.1-20210216  openssl@3.1.3
bison@3.8.2			    libevent@2.1.12	  perl@5.38.0
bzip2@1.0.8			    libiconv@1.17	  pigz@2.7
ca-certificates-mozilla@2023-05-30  libpciaccess@0.17	  pkgconf@1.9.5
cmake@3.27.7			    libsigsegv@2.14	  pmix@5.0.1
curl@8.4.0			    libtool@2.4.7	  readline@8.2
diffutils@3.9			    libxcrypt@4.4.35	  tar@1.34
findutils@4.9.0			    libxml2@2.10.3	  util-macros@1.19.3
gdbm@1.23			    m4@1.4.19		  xz@5.4.1
gettext@0.22.3			    ncurses@6.4		  zlib-ng@2.1.4
gmake@4.4.1			    nghttp2@1.57.0	  zstd@1.5.5
hdf5@1.14.3			    numactl@2.0.14

This is great for us, as long as we remember to use Spack’s python command to run it.

Using the spack-python executable

What if we want to make our script available for others to use without the hassle of having to remember to use spack python?

We can take advantage of the shebang line typically added as the first line of python executable files. But there is a catch, as we will soon see.

Open the find_exclude.py script we created above in your preferred editor and add the shebang line with spack python as the arguments to env:

#!/usr/bin/env spack-python
from spack.spec import Spec
import spack.store
import spack.cmd
import sys

include_spec = Spec(sys.argv[1])
exclude_spec = Spec(sys.argv[2])

all_included = spack.store.db.query(include_spec)
result = filter(lambda spec: not spec.satisfies(exclude_spec), all_included)

spack.cmd.display_specs(result)

Then exit our editor and add execute permissions to the script before running it as follows:

$ chmod u+x find_exclude.py
$ ./find_exclude.py %gcc ^mpich
-- linux-ubuntu22.04-x86_64_v3 / gcc@11.4.0 ---------------------
autoconf@2.69			    hwloc@2.9.1		  openmpi@4.1.6
automake@1.16.5			    krb5@1.20.1		  openssh@9.5p1
berkeley-db@18.1.40		    libedit@3.1-20210216  openssl@3.1.3
bison@3.8.2			    libevent@2.1.12	  perl@5.38.0
bzip2@1.0.8			    libiconv@1.17	  pigz@2.7
ca-certificates-mozilla@2023-05-30  libpciaccess@0.17	  pkgconf@1.9.5
cmake@3.27.7			    libsigsegv@2.14	  pmix@5.0.1
curl@8.4.0			    libtool@2.4.7	  readline@8.2
diffutils@3.9			    libxcrypt@4.4.35	  tar@1.34
findutils@4.9.0			    libxml2@2.10.3	  util-macros@1.19.3
gdbm@1.23			    m4@1.4.19		  xz@5.4.1
gettext@0.22.3			    ncurses@6.4		  zlib-ng@2.1.4
gmake@4.4.1			    nghttp2@1.57.0	  zstd@1.5.5
hdf5@1.14.3			    numactl@2.0.14

If you are lucky, it worked on your system, but there is no guarantee. Some systems only support a single argument on the shebang line (see here). spack-python, which is a wrapper script for spack python, solves this issue.

Bring up the file in your editor again and change the env argument to spack-python as follows:

#!/usr/bin/env spack-python
from spack.spec import Spec
import spack.store
import spack.cmd
import sys

include_spec = Spec(sys.argv[1])
exclude_spec = Spec(sys.argv[2])

all_included = spack.store.db.query(include_spec)
result = filter(lambda spec: not spec.satisfies(exclude_spec), all_included)

spack.cmd.display_specs(result)

Exit your editor and let’s run the script again:

$ ./find_exclude.py %gcc ^mpich
-- linux-ubuntu22.04-x86_64_v3 / gcc@11.4.0 ---------------------
autoconf@2.69			    hwloc@2.9.1		  openmpi@4.1.6
automake@1.16.5			    krb5@1.20.1		  openssh@9.5p1
berkeley-db@18.1.40		    libedit@3.1-20210216  openssl@3.1.3
bison@3.8.2			    libevent@2.1.12	  perl@5.38.0
bzip2@1.0.8			    libiconv@1.17	  pigz@2.7
ca-certificates-mozilla@2023-05-30  libpciaccess@0.17	  pkgconf@1.9.5
cmake@3.27.7			    libsigsegv@2.14	  pmix@5.0.1
curl@8.4.0			    libtool@2.4.7	  readline@8.2
diffutils@3.9			    libxcrypt@4.4.35	  tar@1.34
findutils@4.9.0			    libxml2@2.10.3	  util-macros@1.19.3
gdbm@1.23			    m4@1.4.19		  xz@5.4.1
gettext@0.22.3			    ncurses@6.4		  zlib-ng@2.1.4
gmake@4.4.1			    nghttp2@1.57.0	  zstd@1.5.5
hdf5@1.14.3			    numactl@2.0.14

Congratulations! It will now work on any system with Spack installed.

You now have the basic tools to create your own custom Spack queries and prototype ideas. We hope one day you’ll contribute them back to Spack.