Basic Installation Tutorial

This tutorial will guide you through the process of installing software using Spack. We will first cover the spack install command, focusing on the power of the spec syntax and the flexibility it gives to users. We will also cover the spack find command for viewing installed packages and the spack uninstall command for uninstalling them. Finally, we will touch on how Spack manages compilers, especially as it relates to using Spack-built compilers within Spack. We will include full output from all of the commands demonstrated, although we will frequently call attention to only small portions of that output (or merely to the fact that it succeeded). The provided output is all from an Ubuntu 18.04 Docker image.

Installing Spack

Spack works out of the box. Simply clone Spack to get going. We will clone Spack and immediately check out the most recent release, v0.19.

$ git clone --depth=100 --branch=releases/v0.19 https://github.com/spack/spack.git ~/spack
Cloning into '/home/spack/spack'...
remote: Enumerating objects: 18414, done.K
remote: Counting objects: 100% (18414/18414), done.K
remote: Compressing objects: 100% (9620/9620), done.K
remote:nTotale18414 (delta82328),4reused015340i(delta.2035),/pack-reused 0
Receiving objects: 100% (18414/18414), 12.50 MiB | 21.69 MiB/s, done.
Resolving deltas: 100% (2328/2328), done.
$ cd ~/spack

Next, add Spack to your path. Spack has some nice command-line integration tools, so instead of simply prepending to your PATH variable, source the Spack setup script.

$ . share/spack/setup-env.sh

You’re good to go!

What is in Spack?

The spack list command shows available packages.

$ spack list
3dtk			   guacamole-client		   opencl-c-headers			     py-functools32			py-stopit					 r-rprojroot
3proxy			   guacamole-server		   opencl-clhpp				     py-funcy				py-storm					 r-rpsychi
7zip			   guidance			   opencl-headers			     py-fury				py-stratify					 r-rrblup
abacus			   guile			   opencoarrays				     py-fusepy				py-stsci-distutils				 r-rrcov
abduco			   gunrock			   opencv				     py-future				py-submitit					 r-rrpp

The spack list command can also take a query string. Spack automatically adds wildcards to both ends of the string, or you can add your own wildcards. For example, we can view all available Python packages.

$ spack list 'py-*'
py-3to2					  py-biopandas		     py-easybuild-easyconfigs	  py-hvac			 py-moviepy		       py-py			 py-python-utils		    py-sqlalchemy-stubs
py-4suite-xml				  py-biopython		     py-easybuild-framework	  py-hypercorn			 py-mpi4py		       py-py-cpuinfo		 py-python-xlib			    py-sqlalchemy-utils
py-abcpy				  py-bitarray		     py-eccodes			  py-hyperframe			 py-mpld3		       py-py-spy		 py-python-xmp-toolkit		    py-sqlparse
py-abipy				  py-bitshuffle		     py-ecdsa			  py-hyperlink			 py-mplhep		       py-py2bit		 py-python3-xlib		    py-srsly
py-about-time				  py-bitstring		     py-ecos			  py-hyperopt			 py-mplhep-data		       py-py2cairo		 py-pythonqwt			    py-sshtunnel

Installing Packages

Installing a package with Spack is very simple. To install a piece of software, simply type spack install <package_name>.

$ spack install zlib
==> Bootstrapping clingo from pre-built binaries
==> Fetching https://mirror.spack.io/bootstrap/github-actions/v0.4/build_cache/linux-centos7-x86_64-gcc-10.2.1-clingo-bootstrap-spack-prqkzynv2nwko5mktitebgkeumuxkveu.spec.json
==> Fetching https://mirror.spack.io/bootstrap/github-actions/v0.4/build_cache/linux-centos7-x86_64/gcc-10.2.1/clingo-bootstrap-spack/linux-centos7-x86_64-gcc-10.2.1-clingo-bootstrap-spack-prqkzynv2nwko5mktitebgkeumuxkveu.spack
==> Installing "clingo-bootstrap@spack%gcc@10.2.1~docs~ipo+python+static_libstdcpp build_type=Release arch=linux-centos7-x86_64" from a buildcache
==> Installing zlib-1.2.13-2hfr5rbzefrxf6t6kv4trbsl63puaza6
==> No binary for zlib-1.2.13-2hfr5rbzefrxf6t6kv4trbsl63puaza6 found: installing from source
==> Fetching https://mirror.spack.io/_source-cache/archive/b3/b3a24de97a8fdbc835b9833169501030b8977031bcb54b3b3ac13740f846ab30.tar.gz
==> No patches needed for zlib
==> zlib: Executing phase: 'edit'
==> zlib: Executing phase: 'build'
==> zlib: Executing phase: 'install'
==> zlib: Successfully installed zlib-1.2.13-2hfr5rbzefrxf6t6kv4trbsl63puaza6
  Fetch: 0.34s.	 Build: 0.95s.	Total: 1.30s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/zlib-1.2.13-2hfr5rbzefrxf6t6kv4trbsl63puaza6

Spack can install software either from source or from a binary cache. Packages in the binary cache are signed with GPG for security. For the tutorial we have prepared a binary cache so you don’t have to wait on slow compilation from source. To be able to install from the binary cache, we will need to configure Spack with the location of the binary cache and trust the GPG key that the binary cache was signed with.

$ spack mirror add tutorial /mirror
$ spack buildcache keys --install --trust
==> Fetching file:///mirror/build_cache/_pgp/78F3726939CA1B94893B66E8BC86F6FB94429164.pub
gpg: key A8E0CA3C1C2ADA2F: 7 signatures not checked due to missing keys
gpg: key A8E0CA3C1C2ADA2F: public key "Spack Project Official Binaries <maintainers@spack.io>" imported
gpg: Total number processed: 1
gpg:		   imported: 1
gpg: no ultimately trusted keys found
gpg: inserting ownertrust of 6

You’ll learn more about configuring Spack later in the tutorial, but for now you will be able to install the rest of the packages in the tutorial from a binary cache using the same spack install command. By default this will install the binary cached version if it exists and fall back on installing from source if it does not.

Spack’s spec syntax is the interface by which we can request specific configurations of the package. The % sigil is used to specify compilers.

$ spack install zlib %clang
==> Installing zlib-1.2.13-fdbomoa6xopqvfi4a7jvad27yinnw47a
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-clang-7.0.0-zlib-1.2.13-fdbomoa6xopqvfi4a7jvad27yinnw47a.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/clang-7.0.0/zlib-1.2.13/linux-ubuntu18.04-x86_64-clang-7.0.0-zlib-1.2.13-fdbomoa6xopqvfi4a7jvad27yinnw47a.spack
==> Extracting zlib-1.2.13-fdbomoa6xopqvfi4a7jvad27yinnw47a from binary cache
==> zlib: Successfully installed zlib-1.2.13-fdbomoa6xopqvfi4a7jvad27yinnw47a
  Fetch: 0.10s.	 Build: 0.23s.	Total: 0.33s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/clang-7.0.0/zlib-1.2.13-fdbomoa6xopqvfi4a7jvad27yinnw47a

Note that this installation is located separately from the previous one. We will discuss this in more detail later, but this is part of what allows Spack to support arbitrarily versioned software.

You can check for particular versions before requesting them. We will use the spack versions command to see the available versions, and then install a different version of zlib.

$ spack versions zlib
==> Safe versions (already checksummed):
  1.2.13  1.2.12  1.2.11  1.2.8	 1.2.3
==> Remote versions (not yet checksummed):
  1.2.10   1.2.7.2  1.2.6.1  1.2.5.2  1.2.4.5  1.2.4.2	1.2.3.9	 1.2.3.6  1.2.3.3  1.2.2.4  1.2.2.1  1.2.1.1  1.2.0.7  1.2.0.4	1.2.0.1	 1.1.3	1.1.0  1.0.7  1.0.4  1.0-pre  0.94  0.91  0.9
  1.2.9	   1.2.7.1  1.2.6    1.2.5.1  1.2.4.4  1.2.4.1	1.2.3.8	 1.2.3.5  1.2.3.2  1.2.2.3  1.2.2    1.2.1    1.2.0.6  1.2.0.3	1.2.0	 1.1.2	1.0.9  1.0.6  1.0.2  0.99     0.93  0.79  0.8
  1.2.7.3  1.2.7    1.2.5.3  1.2.5    1.2.4.3  1.2.4	1.2.3.7	 1.2.3.4  1.2.3.1  1.2.2.2  1.2.1.2  1.2.0.8  1.2.0.5  1.2.0.2	1.1.4	 1.1.1	1.0.8  1.0.5  1.0.1  0.95     0.92  0.71

The @ sigil is used to specify versions, both of packages and of compilers.

$ spack install zlib@1.2.8
==> Installing zlib-1.2.8-tolklcfv6vhiaoyvwr7vbbakns4mawum
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-zlib-1.2.8-tolklcfv6vhiaoyvwr7vbbakns4mawum.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/zlib-1.2.8/linux-ubuntu18.04-x86_64-gcc-7.5.0-zlib-1.2.8-tolklcfv6vhiaoyvwr7vbbakns4mawum.spack
==> Extracting zlib-1.2.8-tolklcfv6vhiaoyvwr7vbbakns4mawum from binary cache
==> zlib: Successfully installed zlib-1.2.8-tolklcfv6vhiaoyvwr7vbbakns4mawum
  Fetch: 0.08s.	 Build: 0.22s.	Total: 0.31s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/zlib-1.2.8-tolklcfv6vhiaoyvwr7vbbakns4mawum
$ spack install zlib %gcc@6.5.0
==> Installing zlib-1.2.13-6izan4fn2f6zaycyq2iygye5b4lmfbdg
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-6.5.0-zlib-1.2.13-6izan4fn2f6zaycyq2iygye5b4lmfbdg.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-6.5.0/zlib-1.2.13/linux-ubuntu18.04-x86_64-gcc-6.5.0-zlib-1.2.13-6izan4fn2f6zaycyq2iygye5b4lmfbdg.spack
==> Extracting zlib-1.2.13-6izan4fn2f6zaycyq2iygye5b4lmfbdg from binary cache
==> zlib: Successfully installed zlib-1.2.13-6izan4fn2f6zaycyq2iygye5b4lmfbdg
  Fetch: 0.08s.	 Build: 0.23s.	Total: 0.31s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-6.5.0/zlib-1.2.13-6izan4fn2f6zaycyq2iygye5b4lmfbdg

The spec syntax also includes compiler flags. Spack accepts cppflags, cflags, cxxflags, fflags, ldflags, and ldlibs parameters. The values of these fields must be quoted on the command line if they include spaces. These values are injected into the compile line automatically by the Spack compiler wrappers.

$ spack install zlib@1.2.8 cppflags=-O3
==> Installing zlib-1.2.8-zqdhyiyvjrx6lhddpgv4h2nsysowhjxm
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-zlib-1.2.8-zqdhyiyvjrx6lhddpgv4h2nsysowhjxm.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/zlib-1.2.8/linux-ubuntu18.04-x86_64-gcc-7.5.0-zlib-1.2.8-zqdhyiyvjrx6lhddpgv4h2nsysowhjxm.spack
==> Extracting zlib-1.2.8-zqdhyiyvjrx6lhddpgv4h2nsysowhjxm from binary cache
==> zlib: Successfully installed zlib-1.2.8-zqdhyiyvjrx6lhddpgv4h2nsysowhjxm
  Fetch: 0.10s.	 Build: 0.23s.	Total: 0.32s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/zlib-1.2.8-zqdhyiyvjrx6lhddpgv4h2nsysowhjxm

The spack find command is used to query installed packages. Note that some packages appear identical with the default output. The -l flag shows the hash of each package, and the -f flag shows any non-empty compiler flags of those packages.

$ spack find
-- linux-ubuntu18.04-x86_64 / clang@7.0.0 -----------------------
zlib@1.2.13

-- linux-ubuntu18.04-x86_64 / gcc@6.5.0 -------------------------
zlib@1.2.13

-- linux-ubuntu18.04-x86_64 / gcc@7.5.0 -------------------------
zlib@1.2.8  zlib@1.2.8	zlib@1.2.13
==> 5 installed packages
$ spack find -lf
-- linux-ubuntu18.04-x86_64 / clang@7.0.0 -----------------------
fdbomoa zlib@1.2.13%clang

-- linux-ubuntu18.04-x86_64 / gcc@6.5.0 -------------------------
6izan4f zlib@1.2.13%gcc

-- linux-ubuntu18.04-x86_64 / gcc@7.5.0 -------------------------
tolklcf zlib@1.2.8%gcc	 zqdhyiy zlib@1.2.8%gcc	 cppflags="-O3"	  2hfr5rb zlib@1.2.13%gcc
==> 5 installed packages

Spack generates a hash for each spec. This hash is a function of the full provenance of the package, so any change to the spec affects the hash. Spack uses this value to compare specs and to generate unique installation directories for every combinatorial version. As we move into more complicated packages with software dependencies, we can see that Spack reuses existing packages to satisfy a dependency. By default, Spack tries hard to reuse existing installations as dependencies, either from a local store or from configured remote buildcaches. This minimizes unwanted rebuilds of common dependencies, in particular if you update Spack frequently.

$ spack install tcl
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/zlib-1.2.13-2hfr5rbzefrxf6t6kv4trbsl63puaza6
==> Installing tcl-8.6.12-v63n6wxe4a45dbmmpqbmjpfio3z7liej
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-tcl-8.6.12-v63n6wxe4a45dbmmpqbmjpfio3z7liej.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/tcl-8.6.12/linux-ubuntu18.04-x86_64-gcc-7.5.0-tcl-8.6.12-v63n6wxe4a45dbmmpqbmjpfio3z7liej.spack
==> Extracting tcl-8.6.12-v63n6wxe4a45dbmmpqbmjpfio3z7liej from binary cache
==> tcl: Successfully installed tcl-8.6.12-v63n6wxe4a45dbmmpqbmjpfio3z7liej
  Fetch: 0.12s.	 Build: 1.09s.	Total: 1.21s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/tcl-8.6.12-v63n6wxe4a45dbmmpqbmjpfio3z7liej

Dependencies can be explicitly requested using the ^ sigil. Note that the spec syntax is recursive. Anything we could specify about the top-level package, we can also specify about a dependency using ^.

$ spack install tcl ^zlib@1.2.8 %clang
==> Installing zlib-1.2.8-2xcmtth3d7fjr56rn7hsvsfzwznvjrrd
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-clang-7.0.0-zlib-1.2.8-2xcmtth3d7fjr56rn7hsvsfzwznvjrrd.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/clang-7.0.0/zlib-1.2.8/linux-ubuntu18.04-x86_64-clang-7.0.0-zlib-1.2.8-2xcmtth3d7fjr56rn7hsvsfzwznvjrrd.spack
==> Extracting zlib-1.2.8-2xcmtth3d7fjr56rn7hsvsfzwznvjrrd from binary cache
==> zlib: Successfully installed zlib-1.2.8-2xcmtth3d7fjr56rn7hsvsfzwznvjrrd
  Fetch: 0.10s.	 Build: 0.23s.	Total: 0.33s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/clang-7.0.0/zlib-1.2.8-2xcmtth3d7fjr56rn7hsvsfzwznvjrrd
==> Installing tcl-8.6.12-36jwtbo5qcqulyxs5s43k774ty2ewu4e
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-clang-7.0.0-tcl-8.6.12-36jwtbo5qcqulyxs5s43k774ty2ewu4e.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/clang-7.0.0/tcl-8.6.12/linux-ubuntu18.04-x86_64-clang-7.0.0-tcl-8.6.12-36jwtbo5qcqulyxs5s43k774ty2ewu4e.spack
==> Extracting tcl-8.6.12-36jwtbo5qcqulyxs5s43k774ty2ewu4e from binary cache
==> tcl: Successfully installed tcl-8.6.12-36jwtbo5qcqulyxs5s43k774ty2ewu4e
  Fetch: 0.03s.	 Build: 1.17s.	Total: 1.21s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/clang-7.0.0/tcl-8.6.12-36jwtbo5qcqulyxs5s43k774ty2ewu4e

Packages can also be referred to from the command line by their package hash. Using the spack find -lf command earlier we saw that the hash of our optimized installation of zlib (cppflags="-O3") began with zqd. We can now explicitly build with that package without typing the entire spec, by using the / sigil to refer to it by hash. As with other tools like Git, you do not need to specify an entire hash on the command line. You can specify just enough digits to identify a hash uniquely. If a hash prefix is ambiguous (i.e., two or more installed packages share the prefix) then Spack will report an error.

$ spack install tcl ^/zqd
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/zlib-1.2.8-zqdhyiyvjrx6lhddpgv4h2nsysowhjxm
==> Installing tcl-8.6.12-rakrbasefv2odpemtbrfn2qrbpeq4jip
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-tcl-8.6.12-rakrbasefv2odpemtbrfn2qrbpeq4jip.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/tcl-8.6.12/linux-ubuntu18.04-x86_64-gcc-7.5.0-tcl-8.6.12-rakrbasefv2odpemtbrfn2qrbpeq4jip.spack
==> Extracting tcl-8.6.12-rakrbasefv2odpemtbrfn2qrbpeq4jip from binary cache
==> tcl: Successfully installed tcl-8.6.12-rakrbasefv2odpemtbrfn2qrbpeq4jip
  Fetch: 0.10s.	 Build: 1.09s.	Total: 1.19s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/tcl-8.6.12-rakrbasefv2odpemtbrfn2qrbpeq4jip

The spack find command can also take a -d flag, which can show dependency information. Note that each package has a top-level entry, even if it also appears as a dependency.

$ spack find -ldf
-- linux-ubuntu18.04-x86_64 / clang@7.0.0 -----------------------
36jwtbo tcl@8.6.12%clang
2xcmtth	    zlib@1.2.8%clang

2xcmtth zlib@1.2.8%clang

fdbomoa zlib@1.2.13%clang


-- linux-ubuntu18.04-x86_64 / gcc@6.5.0 -------------------------
6izan4f zlib@1.2.13%gcc


-- linux-ubuntu18.04-x86_64 / gcc@7.5.0 -------------------------
rakrbas tcl@8.6.12%gcc
zqdhyiy	    zlib@1.2.8%gcc  cppflags="-O3"

v63n6wx tcl@8.6.12%gcc
2hfr5rb	    zlib@1.2.13%gcc

tolklcf zlib@1.2.8%gcc

zqdhyiy zlib@1.2.8%gcc	cppflags="-O3"

2hfr5rb zlib@1.2.13%gcc

==> 9 installed packages

Let’s move on to slightly more complicated packages. HDF5 is a good example of a more complicated package, with an MPI dependency. If we install it “out of the box,” it will build with OpenMPI.

$ spack install hdf5
==> Installing pkgconf-1.8.0-k2lfw6fht6zvsfihvx3avihboi3uv455
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-pkgconf-1.8.0-k2lfw6fht6zvsfihvx3avihboi3uv455.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/pkgconf-1.8.0/linux-ubuntu18.04-x86_64-gcc-7.5.0-pkgconf-1.8.0-k2lfw6fht6zvsfihvx3avihboi3uv455.spack
==> Extracting pkgconf-1.8.0-k2lfw6fht6zvsfihvx3avihboi3uv455 from binary cache
==> pkgconf: Successfully installed pkgconf-1.8.0-k2lfw6fht6zvsfihvx3avihboi3uv455
  Fetch: 0.15s.	 Build: 0.25s.	Total: 0.40s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/pkgconf-1.8.0-k2lfw6fht6zvsfihvx3avihboi3uv455
==> Installing ca-certificates-mozilla-2022-10-11-aurd37jjebxaqzs73saip5v6hgfu3foj
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-ca-certificates-mozilla-2022-10-11-aurd37jjebxaqzs73saip5v6hgfu3foj.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/ca-certificates-mozilla-2022-10-11/linux-ubuntu18.04-x86_64-gcc-7.5.0-ca-certificates-mozilla-2022-10-11-aurd37jjebxaqzs73saip5v6hgfu3foj.spack
==> Extracting ca-certificates-mozilla-2022-10-11-aurd37jjebxaqzs73saip5v6hgfu3foj from binary cache
==> ca-certificates-mozilla: Successfully installed ca-certificates-mozilla-2022-10-11-aurd37jjebxaqzs73saip5v6hgfu3foj
  Fetch: 0.03s.	 Build: 0.23s.	Total: 0.27s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/ca-certificates-mozilla-2022-10-11-aurd37jjebxaqzs73saip5v6hgfu3foj
==> Installing berkeley-db-18.1.40-53fb72wziswrec6tkbjpowshkul2nsk4
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-berkeley-db-18.1.40-53fb72wziswrec6tkbjpowshkul2nsk4.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/berkeley-db-18.1.40/linux-ubuntu18.04-x86_64-gcc-7.5.0-berkeley-db-18.1.40-53fb72wziswrec6tkbjpowshkul2nsk4.spack
==> Extracting berkeley-db-18.1.40-53fb72wziswrec6tkbjpowshkul2nsk4 from binary cache
==> berkeley-db: Successfully installed berkeley-db-18.1.40-53fb72wziswrec6tkbjpowshkul2nsk4
  Fetch: 0.03s.	 Build: 0.31s.	Total: 0.34s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/berkeley-db-18.1.40-53fb72wziswrec6tkbjpowshkul2nsk4
==> Installing libiconv-1.16-ltvovvvjgmlvy4m2pn365cy6p5dysajq
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-libiconv-1.16-ltvovvvjgmlvy4m2pn365cy6p5dysajq.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/libiconv-1.16/linux-ubuntu18.04-x86_64-gcc-7.5.0-libiconv-1.16-ltvovvvjgmlvy4m2pn365cy6p5dysajq.spack
==> Extracting libiconv-1.16-ltvovvvjgmlvy4m2pn365cy6p5dysajq from binary cache
==> libiconv: Successfully installed libiconv-1.16-ltvovvvjgmlvy4m2pn365cy6p5dysajq
  Fetch: 0.03s.	 Build: 0.28s.	Total: 0.31s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/libiconv-1.16-ltvovvvjgmlvy4m2pn365cy6p5dysajq
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/zlib-1.2.13-2hfr5rbzefrxf6t6kv4trbsl63puaza6
==> Installing libsigsegv-2.13-e262sf6ptgnmyu7zkflzp3ycbdfqz7hf
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-libsigsegv-2.13-e262sf6ptgnmyu7zkflzp3ycbdfqz7hf.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/libsigsegv-2.13/linux-ubuntu18.04-x86_64-gcc-7.5.0-libsigsegv-2.13-e262sf6ptgnmyu7zkflzp3ycbdfqz7hf.spack
==> Extracting libsigsegv-2.13-e262sf6ptgnmyu7zkflzp3ycbdfqz7hf from binary cache
==> libsigsegv: Successfully installed libsigsegv-2.13-e262sf6ptgnmyu7zkflzp3ycbdfqz7hf
  Fetch: 0.03s.	 Build: 0.24s.	Total: 0.26s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/libsigsegv-2.13-e262sf6ptgnmyu7zkflzp3ycbdfqz7hf
==> Installing util-macros-1.19.3-ao5w53rpwhgfruk2zrqcehlov5slestd
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-util-macros-1.19.3-ao5w53rpwhgfruk2zrqcehlov5slestd.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/util-macros-1.19.3/linux-ubuntu18.04-x86_64-gcc-7.5.0-util-macros-1.19.3-ao5w53rpwhgfruk2zrqcehlov5slestd.spack
==> Extracting util-macros-1.19.3-ao5w53rpwhgfruk2zrqcehlov5slestd from binary cache
==> util-macros: Successfully installed util-macros-1.19.3-ao5w53rpwhgfruk2zrqcehlov5slestd
  Fetch: 0.03s.	 Build: 0.23s.	Total: 0.26s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/util-macros-1.19.3-ao5w53rpwhgfruk2zrqcehlov5slestd
==> Installing xz-5.2.7-nrwxythffgfumjv7skmgdjtxaunlmqau
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-xz-5.2.7-nrwxythffgfumjv7skmgdjtxaunlmqau.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/xz-5.2.7/linux-ubuntu18.04-x86_64-gcc-7.5.0-xz-5.2.7-nrwxythffgfumjv7skmgdjtxaunlmqau.spack
==> Extracting xz-5.2.7-nrwxythffgfumjv7skmgdjtxaunlmqau from binary cache
==> xz: Successfully installed xz-5.2.7-nrwxythffgfumjv7skmgdjtxaunlmqau
  Fetch: 0.03s.	 Build: 0.29s.	Total: 0.32s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/xz-5.2.7-nrwxythffgfumjv7skmgdjtxaunlmqau
==> Installing zstd-1.5.2-fprmzmoubdjdr663rprctp2tuqiv5apu
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-zstd-1.5.2-fprmzmoubdjdr663rprctp2tuqiv5apu.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/zstd-1.5.2/linux-ubuntu18.04-x86_64-gcc-7.5.0-zstd-1.5.2-fprmzmoubdjdr663rprctp2tuqiv5apu.spack
==> Extracting zstd-1.5.2-fprmzmoubdjdr663rprctp2tuqiv5apu from binary cache
==> zstd: Successfully installed zstd-1.5.2-fprmzmoubdjdr663rprctp2tuqiv5apu
  Fetch: 0.03s.	 Build: 0.27s.	Total: 0.30s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/zstd-1.5.2-fprmzmoubdjdr663rprctp2tuqiv5apu
==> Installing ncurses-6.3-zcuawlif55qhuknvbk4jez7xjcxhnydf
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-ncurses-6.3-zcuawlif55qhuknvbk4jez7xjcxhnydf.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/ncurses-6.3/linux-ubuntu18.04-x86_64-gcc-7.5.0-ncurses-6.3-zcuawlif55qhuknvbk4jez7xjcxhnydf.spack
==> Extracting ncurses-6.3-zcuawlif55qhuknvbk4jez7xjcxhnydf from binary cache
==> ncurses: Successfully installed ncurses-6.3-zcuawlif55qhuknvbk4jez7xjcxhnydf
  Fetch: 0.04s.	 Build: 0.75s.	Total: 0.79s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/ncurses-6.3-zcuawlif55qhuknvbk4jez7xjcxhnydf
==> Installing diffutils-3.8-c3uhkcjt7tagz2djrd6r2b6b3c2tia3s
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-diffutils-3.8-c3uhkcjt7tagz2djrd6r2b6b3c2tia3s.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/diffutils-3.8/linux-ubuntu18.04-x86_64-gcc-7.5.0-diffutils-3.8-c3uhkcjt7tagz2djrd6r2b6b3c2tia3s.spack
==> Extracting diffutils-3.8-c3uhkcjt7tagz2djrd6r2b6b3c2tia3s from binary cache
==> diffutils: Successfully installed diffutils-3.8-c3uhkcjt7tagz2djrd6r2b6b3c2tia3s
  Fetch: 0.03s.	 Build: 0.28s.	Total: 0.31s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/diffutils-3.8-c3uhkcjt7tagz2djrd6r2b6b3c2tia3s
==> Installing pigz-2.7-wod35nye4qcrkbopr23zoy5qb3ywp3v3
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-pigz-2.7-wod35nye4qcrkbopr23zoy5qb3ywp3v3.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/pigz-2.7/linux-ubuntu18.04-x86_64-gcc-7.5.0-pigz-2.7-wod35nye4qcrkbopr23zoy5qb3ywp3v3.spack
==> Extracting pigz-2.7-wod35nye4qcrkbopr23zoy5qb3ywp3v3 from binary cache
==> pigz: Successfully installed pigz-2.7-wod35nye4qcrkbopr23zoy5qb3ywp3v3
  Fetch: 0.03s.	 Build: 0.24s.	Total: 0.27s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/pigz-2.7-wod35nye4qcrkbopr23zoy5qb3ywp3v3
==> Installing libxml2-2.10.1-4aq5aj2n5u2n3dbrb76pnhoil6tv3e4e
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-libxml2-2.10.1-4aq5aj2n5u2n3dbrb76pnhoil6tv3e4e.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/libxml2-2.10.1/linux-ubuntu18.04-x86_64-gcc-7.5.0-libxml2-2.10.1-4aq5aj2n5u2n3dbrb76pnhoil6tv3e4e.spack
==> Extracting libxml2-2.10.1-4aq5aj2n5u2n3dbrb76pnhoil6tv3e4e from binary cache
==> libxml2: Successfully installed libxml2-2.10.1-4aq5aj2n5u2n3dbrb76pnhoil6tv3e4e
  Fetch: 0.03s.	 Build: 0.33s.	Total: 0.37s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/libxml2-2.10.1-4aq5aj2n5u2n3dbrb76pnhoil6tv3e4e
==> Installing readline-8.1.2-kgyvtw5h6mi5nms32x3vzgbw32ymmfwa
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-readline-8.1.2-kgyvtw5h6mi5nms32x3vzgbw32ymmfwa.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/readline-8.1.2/linux-ubuntu18.04-x86_64-gcc-7.5.0-readline-8.1.2-kgyvtw5h6mi5nms32x3vzgbw32ymmfwa.spack
==> Extracting readline-8.1.2-kgyvtw5h6mi5nms32x3vzgbw32ymmfwa from binary cache
==> readline: Successfully installed readline-8.1.2-kgyvtw5h6mi5nms32x3vzgbw32ymmfwa
  Fetch: 0.03s.	 Build: 0.26s.	Total: 0.29s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/readline-8.1.2-kgyvtw5h6mi5nms32x3vzgbw32ymmfwa
==> Installing libedit-3.1-20210216-6pzeykrtvrkpbw6u3mq6likd4ktvah76
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-libedit-3.1-20210216-6pzeykrtvrkpbw6u3mq6likd4ktvah76.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/libedit-3.1-20210216/linux-ubuntu18.04-x86_64-gcc-7.5.0-libedit-3.1-20210216-6pzeykrtvrkpbw6u3mq6likd4ktvah76.spack
==> Extracting libedit-3.1-20210216-6pzeykrtvrkpbw6u3mq6likd4ktvah76 from binary cache
==> libedit: Successfully installed libedit-3.1-20210216-6pzeykrtvrkpbw6u3mq6likd4ktvah76
  Fetch: 0.03s.	 Build: 0.26s.	Total: 0.29s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/libedit-3.1-20210216-6pzeykrtvrkpbw6u3mq6likd4ktvah76
==> Installing m4-1.4.19-z7d5q4f2qzxejx4xxdrj45q5gxur6q7b
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-m4-1.4.19-z7d5q4f2qzxejx4xxdrj45q5gxur6q7b.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/m4-1.4.19/linux-ubuntu18.04-x86_64-gcc-7.5.0-m4-1.4.19-z7d5q4f2qzxejx4xxdrj45q5gxur6q7b.spack
==> Extracting m4-1.4.19-z7d5q4f2qzxejx4xxdrj45q5gxur6q7b from binary cache
==> m4: Successfully installed m4-1.4.19-z7d5q4f2qzxejx4xxdrj45q5gxur6q7b
  Fetch: 0.03s.	 Build: 0.25s.	Total: 0.28s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/m4-1.4.19-z7d5q4f2qzxejx4xxdrj45q5gxur6q7b
==> Installing bzip2-1.0.8-cxcrelnw64jh6lvhzb6pfar7nijv6us6
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-bzip2-1.0.8-cxcrelnw64jh6lvhzb6pfar7nijv6us6.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/bzip2-1.0.8/linux-ubuntu18.04-x86_64-gcc-7.5.0-bzip2-1.0.8-cxcrelnw64jh6lvhzb6pfar7nijv6us6.spack
==> Extracting bzip2-1.0.8-cxcrelnw64jh6lvhzb6pfar7nijv6us6 from binary cache
==> bzip2: Successfully installed bzip2-1.0.8-cxcrelnw64jh6lvhzb6pfar7nijv6us6
  Fetch: 0.02s.	 Build: 0.24s.	Total: 0.26s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/bzip2-1.0.8-cxcrelnw64jh6lvhzb6pfar7nijv6us6
==> Installing gdbm-1.23-cpmyntybsnm3se7lfnvqosbiqzrcg2kq
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-gdbm-1.23-cpmyntybsnm3se7lfnvqosbiqzrcg2kq.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/gdbm-1.23/linux-ubuntu18.04-x86_64-gcc-7.5.0-gdbm-1.23-cpmyntybsnm3se7lfnvqosbiqzrcg2kq.spack
==> Extracting gdbm-1.23-cpmyntybsnm3se7lfnvqosbiqzrcg2kq from binary cache
==> gdbm: Successfully installed gdbm-1.23-cpmyntybsnm3se7lfnvqosbiqzrcg2kq
  Fetch: 0.03s.	 Build: 0.27s.	Total: 0.30s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/gdbm-1.23-cpmyntybsnm3se7lfnvqosbiqzrcg2kq
==> Installing libtool-2.4.7-bdxu4wnbhlmvj6sh5y7uynrldzepiilz
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-libtool-2.4.7-bdxu4wnbhlmvj6sh5y7uynrldzepiilz.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/libtool-2.4.7/linux-ubuntu18.04-x86_64-gcc-7.5.0-libtool-2.4.7-bdxu4wnbhlmvj6sh5y7uynrldzepiilz.spack
==> Extracting libtool-2.4.7-bdxu4wnbhlmvj6sh5y7uynrldzepiilz from binary cache
==> libtool: Successfully installed libtool-2.4.7-bdxu4wnbhlmvj6sh5y7uynrldzepiilz
  Fetch: 0.03s.	 Build: 0.27s.	Total: 0.29s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/libtool-2.4.7-bdxu4wnbhlmvj6sh5y7uynrldzepiilz
==> Installing tar-1.34-kawegoyhusotpo5mlsqnjqf6ngrjyj2w
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-tar-1.34-kawegoyhusotpo5mlsqnjqf6ngrjyj2w.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/tar-1.34/linux-ubuntu18.04-x86_64-gcc-7.5.0-tar-1.34-kawegoyhusotpo5mlsqnjqf6ngrjyj2w.spack
==> Extracting tar-1.34-kawegoyhusotpo5mlsqnjqf6ngrjyj2w from binary cache
==> tar: Successfully installed tar-1.34-kawegoyhusotpo5mlsqnjqf6ngrjyj2w
  Fetch: 0.03s.	 Build: 0.29s.	Total: 0.32s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/tar-1.34-kawegoyhusotpo5mlsqnjqf6ngrjyj2w
==> Installing perl-5.36.0-eydiwimku2cctu6dsom3yvfxxjmqyr4w
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-perl-5.36.0-eydiwimku2cctu6dsom3yvfxxjmqyr4w.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/perl-5.36.0/linux-ubuntu18.04-x86_64-gcc-7.5.0-perl-5.36.0-eydiwimku2cctu6dsom3yvfxxjmqyr4w.spack
==> Extracting perl-5.36.0-eydiwimku2cctu6dsom3yvfxxjmqyr4w from binary cache
==> perl: Successfully installed perl-5.36.0-eydiwimku2cctu6dsom3yvfxxjmqyr4w
  Fetch: 0.04s.	 Build: 1.39s.	Total: 1.44s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/perl-5.36.0-eydiwimku2cctu6dsom3yvfxxjmqyr4w
==> Installing libpciaccess-0.16-p7f5n6q6kwnzq7syvqbslnotl72yxs23
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-libpciaccess-0.16-p7f5n6q6kwnzq7syvqbslnotl72yxs23.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/libpciaccess-0.16/linux-ubuntu18.04-x86_64-gcc-7.5.0-libpciaccess-0.16-p7f5n6q6kwnzq7syvqbslnotl72yxs23.spack
==> Extracting libpciaccess-0.16-p7f5n6q6kwnzq7syvqbslnotl72yxs23 from binary cache
==> libpciaccess: Successfully installed libpciaccess-0.16-p7f5n6q6kwnzq7syvqbslnotl72yxs23
  Fetch: 0.03s.	 Build: 0.24s.	Total: 0.26s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/libpciaccess-0.16-p7f5n6q6kwnzq7syvqbslnotl72yxs23
==> Installing gettext-0.21.1-hj6szikaqzdpxa36gk4w72m4czhwd6gu
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-gettext-0.21.1-hj6szikaqzdpxa36gk4w72m4czhwd6gu.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/gettext-0.21.1/linux-ubuntu18.04-x86_64-gcc-7.5.0-gettext-0.21.1-hj6szikaqzdpxa36gk4w72m4czhwd6gu.spack
==> Extracting gettext-0.21.1-hj6szikaqzdpxa36gk4w72m4czhwd6gu from binary cache
==> gettext: Successfully installed gettext-0.21.1-hj6szikaqzdpxa36gk4w72m4czhwd6gu
  Fetch: 0.04s.	 Build: 0.85s.	Total: 0.89s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/gettext-0.21.1-hj6szikaqzdpxa36gk4w72m4czhwd6gu
==> Installing openssl-1.1.1s-yr4z2pt4jnp5fltumr2my3badazsarz2
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-openssl-1.1.1s-yr4z2pt4jnp5fltumr2my3badazsarz2.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/openssl-1.1.1s/linux-ubuntu18.04-x86_64-gcc-7.5.0-openssl-1.1.1s-yr4z2pt4jnp5fltumr2my3badazsarz2.spack
==> Extracting openssl-1.1.1s-yr4z2pt4jnp5fltumr2my3badazsarz2 from binary cache
==> openssl: Successfully installed openssl-1.1.1s-yr4z2pt4jnp5fltumr2my3badazsarz2
  Fetch: 0.03s.	 Build: 0.34s.	Total: 0.37s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/openssl-1.1.1s-yr4z2pt4jnp5fltumr2my3badazsarz2
==> Installing autoconf-2.69-btoteeiz74epw4kulm7aecae4cxraxua
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-autoconf-2.69-btoteeiz74epw4kulm7aecae4cxraxua.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/autoconf-2.69/linux-ubuntu18.04-x86_64-gcc-7.5.0-autoconf-2.69-btoteeiz74epw4kulm7aecae4cxraxua.spack
==> Extracting autoconf-2.69-btoteeiz74epw4kulm7aecae4cxraxua from binary cache
==> autoconf: Successfully installed autoconf-2.69-btoteeiz74epw4kulm7aecae4cxraxua
  Fetch: 0.03s.	 Build: 0.27s.	Total: 0.29s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/autoconf-2.69-btoteeiz74epw4kulm7aecae4cxraxua
==> Installing bison-3.8.2-wobmzgvlc235muaaxwehzblkgcnhvwtn
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-bison-3.8.2-wobmzgvlc235muaaxwehzblkgcnhvwtn.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/bison-3.8.2/linux-ubuntu18.04-x86_64-gcc-7.5.0-bison-3.8.2-wobmzgvlc235muaaxwehzblkgcnhvwtn.spack
==> Extracting bison-3.8.2-wobmzgvlc235muaaxwehzblkgcnhvwtn from binary cache
==> bison: Successfully installed bison-3.8.2-wobmzgvlc235muaaxwehzblkgcnhvwtn
  Fetch: 0.02s.	 Build: 0.31s.	Total: 0.34s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/bison-3.8.2-wobmzgvlc235muaaxwehzblkgcnhvwtn
==> Installing hwloc-2.8.0-5yywrk2zoib75deet4eu4ocxim2ldngq
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-hwloc-2.8.0-5yywrk2zoib75deet4eu4ocxim2ldngq.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/hwloc-2.8.0/linux-ubuntu18.04-x86_64-gcc-7.5.0-hwloc-2.8.0-5yywrk2zoib75deet4eu4ocxim2ldngq.spack
==> Extracting hwloc-2.8.0-5yywrk2zoib75deet4eu4ocxim2ldngq from binary cache
==> hwloc: Successfully installed hwloc-2.8.0-5yywrk2zoib75deet4eu4ocxim2ldngq
  Fetch: 0.03s.	 Build: 0.46s.	Total: 0.48s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/hwloc-2.8.0-5yywrk2zoib75deet4eu4ocxim2ldngq
==> Installing libevent-2.1.12-nblr6w4gwbdyhjz2z5lg5pseztxnb7gh
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-libevent-2.1.12-nblr6w4gwbdyhjz2z5lg5pseztxnb7gh.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/libevent-2.1.12/linux-ubuntu18.04-x86_64-gcc-7.5.0-libevent-2.1.12-nblr6w4gwbdyhjz2z5lg5pseztxnb7gh.spack
==> Extracting libevent-2.1.12-nblr6w4gwbdyhjz2z5lg5pseztxnb7gh from binary cache
==> libevent: Successfully installed libevent-2.1.12-nblr6w4gwbdyhjz2z5lg5pseztxnb7gh
  Fetch: 0.03s.	 Build: 0.29s.	Total: 0.32s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/libevent-2.1.12-nblr6w4gwbdyhjz2z5lg5pseztxnb7gh
==> Installing cmake-3.24.3-stszbnscxrtgzqrwmx2wfwsuntf47mpy
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-cmake-3.24.3-stszbnscxrtgzqrwmx2wfwsuntf47mpy.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/cmake-3.24.3/linux-ubuntu18.04-x86_64-gcc-7.5.0-cmake-3.24.3-stszbnscxrtgzqrwmx2wfwsuntf47mpy.spack
==> Extracting cmake-3.24.3-stszbnscxrtgzqrwmx2wfwsuntf47mpy from binary cache
==> cmake: Successfully installed cmake-3.24.3-stszbnscxrtgzqrwmx2wfwsuntf47mpy
  Fetch: 0.08s.	 Build: 1.10s.	Total: 1.18s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/cmake-3.24.3-stszbnscxrtgzqrwmx2wfwsuntf47mpy
==> Installing automake-1.16.5-rxjqnjw5jkrbym5x4yshogm3f262crre
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-automake-1.16.5-rxjqnjw5jkrbym5x4yshogm3f262crre.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/automake-1.16.5/linux-ubuntu18.04-x86_64-gcc-7.5.0-automake-1.16.5-rxjqnjw5jkrbym5x4yshogm3f262crre.spack
==> Extracting automake-1.16.5-rxjqnjw5jkrbym5x4yshogm3f262crre from binary cache
==> automake: Successfully installed automake-1.16.5-rxjqnjw5jkrbym5x4yshogm3f262crre
  Fetch: 0.03s.	 Build: 0.26s.	Total: 0.30s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/automake-1.16.5-rxjqnjw5jkrbym5x4yshogm3f262crre
==> Installing krb5-1.19.3-y6ek4vz7ntj6qw26jv2trb3ok4m5koxy
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-krb5-1.19.3-y6ek4vz7ntj6qw26jv2trb3ok4m5koxy.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/krb5-1.19.3/linux-ubuntu18.04-x86_64-gcc-7.5.0-krb5-1.19.3-y6ek4vz7ntj6qw26jv2trb3ok4m5koxy.spack
==> Extracting krb5-1.19.3-y6ek4vz7ntj6qw26jv2trb3ok4m5koxy from binary cache
==> krb5: Successfully installed krb5-1.19.3-y6ek4vz7ntj6qw26jv2trb3ok4m5koxy
  Fetch: 0.03s.	 Build: 0.42s.	Total: 0.45s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/krb5-1.19.3-y6ek4vz7ntj6qw26jv2trb3ok4m5koxy
==> Installing pmix-4.1.2-76ul6unbdppxalfkkxjqzoky7lu4jqpo
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-pmix-4.1.2-76ul6unbdppxalfkkxjqzoky7lu4jqpo.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/pmix-4.1.2/linux-ubuntu18.04-x86_64-gcc-7.5.0-pmix-4.1.2-76ul6unbdppxalfkkxjqzoky7lu4jqpo.spack
==> Extracting pmix-4.1.2-76ul6unbdppxalfkkxjqzoky7lu4jqpo from binary cache
==> pmix: Successfully installed pmix-4.1.2-76ul6unbdppxalfkkxjqzoky7lu4jqpo
  Fetch: 0.03s.	 Build: 0.34s.	Total: 0.37s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/pmix-4.1.2-76ul6unbdppxalfkkxjqzoky7lu4jqpo
==> Installing numactl-2.0.14-qbwqmk6qylskqtyrfuyfp36f465bxrrk
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-numactl-2.0.14-qbwqmk6qylskqtyrfuyfp36f465bxrrk.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/numactl-2.0.14/linux-ubuntu18.04-x86_64-gcc-7.5.0-numactl-2.0.14-qbwqmk6qylskqtyrfuyfp36f465bxrrk.spack
==> Extracting numactl-2.0.14-qbwqmk6qylskqtyrfuyfp36f465bxrrk from binary cache
==> numactl: Successfully installed numactl-2.0.14-qbwqmk6qylskqtyrfuyfp36f465bxrrk
  Fetch: 0.04s.	 Build: 0.27s.	Total: 0.31s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/numactl-2.0.14-qbwqmk6qylskqtyrfuyfp36f465bxrrk
==> Installing openssh-9.1p1-xevso22q5f5fb2bqp5lhuutgvrqtiolo
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-openssh-9.1p1-xevso22q5f5fb2bqp5lhuutgvrqtiolo.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/openssh-9.1p1/linux-ubuntu18.04-x86_64-gcc-7.5.0-openssh-9.1p1-xevso22q5f5fb2bqp5lhuutgvrqtiolo.spack
==> Extracting openssh-9.1p1-xevso22q5f5fb2bqp5lhuutgvrqtiolo from binary cache
==> openssh: Successfully installed openssh-9.1p1-xevso22q5f5fb2bqp5lhuutgvrqtiolo
  Fetch: 0.03s.	 Build: 0.32s.	Total: 0.35s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/openssh-9.1p1-xevso22q5f5fb2bqp5lhuutgvrqtiolo
==> Installing openmpi-4.1.4-mfxvu5fnaac33f4pw25rjrojafbbupwb
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-openmpi-4.1.4-mfxvu5fnaac33f4pw25rjrojafbbupwb.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/openmpi-4.1.4/linux-ubuntu18.04-x86_64-gcc-7.5.0-openmpi-4.1.4-mfxvu5fnaac33f4pw25rjrojafbbupwb.spack
==> Extracting openmpi-4.1.4-mfxvu5fnaac33f4pw25rjrojafbbupwb from binary cache
==> openmpi: Successfully installed openmpi-4.1.4-mfxvu5fnaac33f4pw25rjrojafbbupwb
  Fetch: 0.04s.	 Build: 0.64s.	Total: 0.68s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/openmpi-4.1.4-mfxvu5fnaac33f4pw25rjrojafbbupwb
==> Installing hdf5-1.12.2-xfftbwlx2fmpxvfzg27vj6hk2pet45f2
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-hdf5-1.12.2-xfftbwlx2fmpxvfzg27vj6hk2pet45f2.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/hdf5-1.12.2/linux-ubuntu18.04-x86_64-gcc-7.5.0-hdf5-1.12.2-xfftbwlx2fmpxvfzg27vj6hk2pet45f2.spack
==> Extracting hdf5-1.12.2-xfftbwlx2fmpxvfzg27vj6hk2pet45f2 from binary cache
==> hdf5: Successfully installed hdf5-1.12.2-xfftbwlx2fmpxvfzg27vj6hk2pet45f2
  Fetch: 0.14s.	 Build: 2.93s.	Total: 3.07s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/hdf5-1.12.2-xfftbwlx2fmpxvfzg27vj6hk2pet45f2

Spack packages can also have build options, called variants. Boolean variants can be specified using the + (enable) and ~ or - (disable) sigils. There are two sigils for “disable” to avoid conflicts with shell parsing in different situations. Variants (boolean or otherwise) can also be specified using the same syntax as compiler flags. Here we can install HDF5 without MPI support.

$ spack install hdf5~mpi
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/pkgconf-1.8.0-k2lfw6fht6zvsfihvx3avihboi3uv455
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/ca-certificates-mozilla-2022-10-11-aurd37jjebxaqzs73saip5v6hgfu3foj
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/berkeley-db-18.1.40-53fb72wziswrec6tkbjpowshkul2nsk4
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/libiconv-1.16-ltvovvvjgmlvy4m2pn365cy6p5dysajq
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/zlib-1.2.13-2hfr5rbzefrxf6t6kv4trbsl63puaza6
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/ncurses-6.3-zcuawlif55qhuknvbk4jez7xjcxhnydf
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/diffutils-3.8-c3uhkcjt7tagz2djrd6r2b6b3c2tia3s
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/readline-8.1.2-kgyvtw5h6mi5nms32x3vzgbw32ymmfwa
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/bzip2-1.0.8-cxcrelnw64jh6lvhzb6pfar7nijv6us6
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/gdbm-1.23-cpmyntybsnm3se7lfnvqosbiqzrcg2kq
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/perl-5.36.0-eydiwimku2cctu6dsom3yvfxxjmqyr4w
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/openssl-1.1.1s-yr4z2pt4jnp5fltumr2my3badazsarz2
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/cmake-3.24.3-stszbnscxrtgzqrwmx2wfwsuntf47mpy
==> Installing hdf5-1.12.2-3pu63bvsng2suyhyadbo5j2jhze3judm
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-hdf5-1.12.2-3pu63bvsng2suyhyadbo5j2jhze3judm.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/hdf5-1.12.2/linux-ubuntu18.04-x86_64-gcc-7.5.0-hdf5-1.12.2-3pu63bvsng2suyhyadbo5j2jhze3judm.spack
==> Extracting hdf5-1.12.2-3pu63bvsng2suyhyadbo5j2jhze3judm from binary cache
==> hdf5: Successfully installed hdf5-1.12.2-3pu63bvsng2suyhyadbo5j2jhze3judm
  Fetch: 0.35s.	 Build: 2.91s.	Total: 3.25s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/hdf5-1.12.2-3pu63bvsng2suyhyadbo5j2jhze3judm

We might also want to install HDF5 with a different MPI implementation. While MPI is not a package itself, packages can depend on abstract interfaces like MPI. Spack handles these through “virtual dependencies.” A package, such as HDF5, can depend on the MPI interface. Other packages (openmpi, mpich, mvapich2, etc.) provide the MPI interface. Any of these providers can be requested for an MPI dependency. For example, we can build HDF5 with MPI support provided by MPICH by specifying a dependency on mpich. Spack also supports versioning of virtual dependencies. A package can depend on the MPI interface at version 3, and provider packages specify what version of the interface they provide. The partial spec ^mpi@3 can be satisfied by any of several providers.

$ spack install hdf5+hl+mpi ^mpich
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/pkgconf-1.8.0-k2lfw6fht6zvsfihvx3avihboi3uv455
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/ca-certificates-mozilla-2022-10-11-aurd37jjebxaqzs73saip5v6hgfu3foj
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/berkeley-db-18.1.40-53fb72wziswrec6tkbjpowshkul2nsk4
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/libiconv-1.16-ltvovvvjgmlvy4m2pn365cy6p5dysajq
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/zlib-1.2.13-2hfr5rbzefrxf6t6kv4trbsl63puaza6
==> Installing findutils-4.9.0-fxoomycyzatn7nzlioglzjir3lgs5kuk
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-findutils-4.9.0-fxoomycyzatn7nzlioglzjir3lgs5kuk.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/findutils-4.9.0/linux-ubuntu18.04-x86_64-gcc-7.5.0-findutils-4.9.0-fxoomycyzatn7nzlioglzjir3lgs5kuk.spack
==> Extracting findutils-4.9.0-fxoomycyzatn7nzlioglzjir3lgs5kuk from binary cache
==> findutils: Successfully installed findutils-4.9.0-fxoomycyzatn7nzlioglzjir3lgs5kuk
  Fetch: 0.18s.	 Build: 0.28s.	Total: 0.47s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/findutils-4.9.0-fxoomycyzatn7nzlioglzjir3lgs5kuk
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/libsigsegv-2.13-e262sf6ptgnmyu7zkflzp3ycbdfqz7hf
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/util-macros-1.19.3-ao5w53rpwhgfruk2zrqcehlov5slestd
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/xz-5.2.7-nrwxythffgfumjv7skmgdjtxaunlmqau
==> Installing libfabric-1.16.1-u2kjaxdisx652qhefe2ibofiewkdgstr
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-libfabric-1.16.1-u2kjaxdisx652qhefe2ibofiewkdgstr.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/libfabric-1.16.1/linux-ubuntu18.04-x86_64-gcc-7.5.0-libfabric-1.16.1-u2kjaxdisx652qhefe2ibofiewkdgstr.spack
==> Extracting libfabric-1.16.1-u2kjaxdisx652qhefe2ibofiewkdgstr from binary cache
==> libfabric: Successfully installed libfabric-1.16.1-u2kjaxdisx652qhefe2ibofiewkdgstr
  Fetch: 0.03s.	 Build: 0.28s.	Total: 0.31s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/libfabric-1.16.1-u2kjaxdisx652qhefe2ibofiewkdgstr
==> Installing libmd-1.0.4-miq3rrs534mewt3w5r3wd5jp3lkk7y25
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-libmd-1.0.4-miq3rrs534mewt3w5r3wd5jp3lkk7y25.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/libmd-1.0.4/linux-ubuntu18.04-x86_64-gcc-7.5.0-libmd-1.0.4-miq3rrs534mewt3w5r3wd5jp3lkk7y25.spack
==> Extracting libmd-1.0.4-miq3rrs534mewt3w5r3wd5jp3lkk7y25 from binary cache
==> libmd: Successfully installed libmd-1.0.4-miq3rrs534mewt3w5r3wd5jp3lkk7y25
  Fetch: 0.03s.	 Build: 0.25s.	Total: 0.28s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/libmd-1.0.4-miq3rrs534mewt3w5r3wd5jp3lkk7y25
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/zstd-1.5.2-fprmzmoubdjdr663rprctp2tuqiv5apu
==> Installing libffi-3.4.2-qzq4b7hjmtrswtnnezcytreqg4vtsgi5
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-libffi-3.4.2-qzq4b7hjmtrswtnnezcytreqg4vtsgi5.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/libffi-3.4.2/linux-ubuntu18.04-x86_64-gcc-7.5.0-libffi-3.4.2-qzq4b7hjmtrswtnnezcytreqg4vtsgi5.spack
==> Extracting libffi-3.4.2-qzq4b7hjmtrswtnnezcytreqg4vtsgi5 from binary cache
==> libffi: Successfully installed libffi-3.4.2-qzq4b7hjmtrswtnnezcytreqg4vtsgi5
  Fetch: 0.02s.	 Build: 0.23s.	Total: 0.25s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/libffi-3.4.2-qzq4b7hjmtrswtnnezcytreqg4vtsgi5
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/ncurses-6.3-zcuawlif55qhuknvbk4jez7xjcxhnydf
==> Installing util-linux-uuid-2.38.1-eayyoxjdfrc2wivabs5jbipcofeluyyo
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-util-linux-uuid-2.38.1-eayyoxjdfrc2wivabs5jbipcofeluyyo.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/util-linux-uuid-2.38.1/linux-ubuntu18.04-x86_64-gcc-7.5.0-util-linux-uuid-2.38.1-eayyoxjdfrc2wivabs5jbipcofeluyyo.spack
==> Extracting util-linux-uuid-2.38.1-eayyoxjdfrc2wivabs5jbipcofeluyyo from binary cache
==> util-linux-uuid: Successfully installed util-linux-uuid-2.38.1-eayyoxjdfrc2wivabs5jbipcofeluyyo
  Fetch: 0.03s.	 Build: 0.30s.	Total: 0.32s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/util-linux-uuid-2.38.1-eayyoxjdfrc2wivabs5jbipcofeluyyo
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/diffutils-3.8-c3uhkcjt7tagz2djrd6r2b6b3c2tia3s
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/pigz-2.7-wod35nye4qcrkbopr23zoy5qb3ywp3v3
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/libxml2-2.10.1-4aq5aj2n5u2n3dbrb76pnhoil6tv3e4e
==> Installing libbsd-0.11.5-qieib3tiyp74ps4kn3jail7bot35t7hp
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-libbsd-0.11.5-qieib3tiyp74ps4kn3jail7bot35t7hp.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/libbsd-0.11.5/linux-ubuntu18.04-x86_64-gcc-7.5.0-libbsd-0.11.5-qieib3tiyp74ps4kn3jail7bot35t7hp.spack
==> Extracting libbsd-0.11.5-qieib3tiyp74ps4kn3jail7bot35t7hp from binary cache
==> libbsd: Successfully installed libbsd-0.11.5-qieib3tiyp74ps4kn3jail7bot35t7hp
  Fetch: 0.03s.	 Build: 0.27s.	Total: 0.30s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/libbsd-0.11.5-qieib3tiyp74ps4kn3jail7bot35t7hp
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/readline-8.1.2-kgyvtw5h6mi5nms32x3vzgbw32ymmfwa
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/m4-1.4.19-z7d5q4f2qzxejx4xxdrj45q5gxur6q7b
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/bzip2-1.0.8-cxcrelnw64jh6lvhzb6pfar7nijv6us6
==> Installing expat-2.4.8-j5k5nzgsbhue6ylglt4gtrnm6okuvsj6
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-expat-2.4.8-j5k5nzgsbhue6ylglt4gtrnm6okuvsj6.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/expat-2.4.8/linux-ubuntu18.04-x86_64-gcc-7.5.0-expat-2.4.8-j5k5nzgsbhue6ylglt4gtrnm6okuvsj6.spack
==> Extracting expat-2.4.8-j5k5nzgsbhue6ylglt4gtrnm6okuvsj6 from binary cache
==> expat: Successfully installed expat-2.4.8-j5k5nzgsbhue6ylglt4gtrnm6okuvsj6
  Fetch: 0.03s.	 Build: 0.25s.	Total: 0.27s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/expat-2.4.8-j5k5nzgsbhue6ylglt4gtrnm6okuvsj6
==> Installing sqlite-3.39.4-vmf7qax3kowjkec5bzohcqvo5rqgm3xx
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-sqlite-3.39.4-vmf7qax3kowjkec5bzohcqvo5rqgm3xx.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/sqlite-3.39.4/linux-ubuntu18.04-x86_64-gcc-7.5.0-sqlite-3.39.4-vmf7qax3kowjkec5bzohcqvo5rqgm3xx.spack
==> Extracting sqlite-3.39.4-vmf7qax3kowjkec5bzohcqvo5rqgm3xx from binary cache
==> sqlite: Successfully installed sqlite-3.39.4-vmf7qax3kowjkec5bzohcqvo5rqgm3xx
  Fetch: 0.03s.	 Build: 0.39s.	Total: 0.43s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/sqlite-3.39.4-vmf7qax3kowjkec5bzohcqvo5rqgm3xx
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/gdbm-1.23-cpmyntybsnm3se7lfnvqosbiqzrcg2kq
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/libtool-2.4.7-bdxu4wnbhlmvj6sh5y7uynrldzepiilz
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/tar-1.34-kawegoyhusotpo5mlsqnjqf6ngrjyj2w
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/perl-5.36.0-eydiwimku2cctu6dsom3yvfxxjmqyr4w
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/libpciaccess-0.16-p7f5n6q6kwnzq7syvqbslnotl72yxs23
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/gettext-0.21.1-hj6szikaqzdpxa36gk4w72m4czhwd6gu
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/openssl-1.1.1s-yr4z2pt4jnp5fltumr2my3badazsarz2
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/autoconf-2.69-btoteeiz74epw4kulm7aecae4cxraxua
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/hwloc-2.8.0-5yywrk2zoib75deet4eu4ocxim2ldngq
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/cmake-3.24.3-stszbnscxrtgzqrwmx2wfwsuntf47mpy
==> Installing python-3.10.8-cyf55fezf7ib2o6wqflx2jo7xz6tobwh
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-python-3.10.8-cyf55fezf7ib2o6wqflx2jo7xz6tobwh.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/python-3.10.8/linux-ubuntu18.04-x86_64-gcc-7.5.0-python-3.10.8-cyf55fezf7ib2o6wqflx2jo7xz6tobwh.spack
==> Extracting python-3.10.8-cyf55fezf7ib2o6wqflx2jo7xz6tobwh from binary cache
==> python: Successfully installed python-3.10.8-cyf55fezf7ib2o6wqflx2jo7xz6tobwh
  Fetch: 0.07s.	 Build: 2.72s.	Total: 2.79s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/python-3.10.8-cyf55fezf7ib2o6wqflx2jo7xz6tobwh
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/automake-1.16.5-rxjqnjw5jkrbym5x4yshogm3f262crre
==> Installing yaksa-0.2-tlfr5qwqhalsfrp732iewcdrjalvtjcl
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-yaksa-0.2-tlfr5qwqhalsfrp732iewcdrjalvtjcl.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/yaksa-0.2/linux-ubuntu18.04-x86_64-gcc-7.5.0-yaksa-0.2-tlfr5qwqhalsfrp732iewcdrjalvtjcl.spack
==> Extracting yaksa-0.2-tlfr5qwqhalsfrp732iewcdrjalvtjcl from binary cache
==> yaksa: Successfully installed yaksa-0.2-tlfr5qwqhalsfrp732iewcdrjalvtjcl
  Fetch: 0.05s.	 Build: 0.79s.	Total: 0.84s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/yaksa-0.2-tlfr5qwqhalsfrp732iewcdrjalvtjcl
==> Installing mpich-4.0.2-vbkcftfrezurdhekzxpycihudiv5kyzy
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-mpich-4.0.2-vbkcftfrezurdhekzxpycihudiv5kyzy.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/mpich-4.0.2/linux-ubuntu18.04-x86_64-gcc-7.5.0-mpich-4.0.2-vbkcftfrezurdhekzxpycihudiv5kyzy.spack
==> Extracting mpich-4.0.2-vbkcftfrezurdhekzxpycihudiv5kyzy from binary cache
==> mpich: Successfully installed mpich-4.0.2-vbkcftfrezurdhekzxpycihudiv5kyzy
  Fetch: 0.04s.	 Build: 1.21s.	Total: 1.25s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/mpich-4.0.2-vbkcftfrezurdhekzxpycihudiv5kyzy
==> Installing hdf5-1.12.2-nc7yve6lcatumow4jja6dvqudot4j2lp
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-hdf5-1.12.2-nc7yve6lcatumow4jja6dvqudot4j2lp.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/hdf5-1.12.2/linux-ubuntu18.04-x86_64-gcc-7.5.0-hdf5-1.12.2-nc7yve6lcatumow4jja6dvqudot4j2lp.spack
==> Extracting hdf5-1.12.2-nc7yve6lcatumow4jja6dvqudot4j2lp from binary cache
==> hdf5: Successfully installed hdf5-1.12.2-nc7yve6lcatumow4jja6dvqudot4j2lp
  Fetch: 0.15s.	 Build: 3.24s.	Total: 3.39s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/hdf5-1.12.2-nc7yve6lcatumow4jja6dvqudot4j2lp

We’ll do a quick check in on what we have installed so far.

$ spack find -ldf
-- linux-ubuntu18.04-x86_64 / clang@7.0.0 -----------------------
36jwtbo tcl@8.6.12%clang
2xcmtth	    zlib@1.2.8%clang

2xcmtth zlib@1.2.8%clang

fdbomoa zlib@1.2.13%clang


-- linux-ubuntu18.04-x86_64 / gcc@6.5.0 -------------------------
6izan4f zlib@1.2.13%gcc


-- linux-ubuntu18.04-x86_64 / gcc@7.5.0 -------------------------
btoteei autoconf@2.69%gcc
z7d5q4f	    m4@1.4.19%gcc
c3uhkcj		diffutils@3.8%gcc
ltvovvv		    libiconv@1.16%gcc
e262sf6		libsigsegv@2.13%gcc
eydiwim	    perl@5.36.0%gcc
53fb72w		berkeley-db@18.1.40%gcc
cxcreln		bzip2@1.0.8%gcc
cpmynty		gdbm@1.23%gcc
kgyvtw5		    readline@8.1.2%gcc
zcuawli			ncurses@6.3%gcc
k2lfw6f			    pkgconf@1.8.0%gcc
2hfr5rb		zlib@1.2.13%gcc

rxjqnjw automake@1.16.5%gcc
btoteei	    autoconf@2.69%gcc
z7d5q4f		m4@1.4.19%gcc
c3uhkcj		    diffutils@3.8%gcc
ltvovvv			libiconv@1.16%gcc
e262sf6		    libsigsegv@2.13%gcc
eydiwim	    perl@5.36.0%gcc
53fb72w		berkeley-db@18.1.40%gcc
cxcreln		bzip2@1.0.8%gcc
cpmynty		gdbm@1.23%gcc
kgyvtw5		    readline@8.1.2%gcc
zcuawli			ncurses@6.3%gcc
k2lfw6f			    pkgconf@1.8.0%gcc
2hfr5rb		zlib@1.2.13%gcc

53fb72w berkeley-db@18.1.40%gcc

wobmzgv bison@3.8.2%gcc
c3uhkcj	    diffutils@3.8%gcc
ltvovvv		libiconv@1.16%gcc
z7d5q4f	    m4@1.4.19%gcc
e262sf6		libsigsegv@2.13%gcc
eydiwim	    perl@5.36.0%gcc
53fb72w		berkeley-db@18.1.40%gcc
cxcreln		bzip2@1.0.8%gcc
cpmynty		gdbm@1.23%gcc
kgyvtw5		    readline@8.1.2%gcc
zcuawli			ncurses@6.3%gcc
k2lfw6f			    pkgconf@1.8.0%gcc
2hfr5rb		zlib@1.2.13%gcc

cxcreln bzip2@1.0.8%gcc
c3uhkcj	    diffutils@3.8%gcc
ltvovvv		libiconv@1.16%gcc

aurd37j ca-certificates-mozilla@2022-10-11%gcc

stszbns cmake@3.24.3%gcc
zcuawli	    ncurses@6.3%gcc
k2lfw6f		pkgconf@1.8.0%gcc
yr4z2pt	    openssl@1.1.1s%gcc
aurd37j		ca-certificates-mozilla@2022-10-11%gcc
eydiwim		perl@5.36.0%gcc
53fb72w		    berkeley-db@18.1.40%gcc
cxcreln		    bzip2@1.0.8%gcc
c3uhkcj			diffutils@3.8%gcc
ltvovvv			    libiconv@1.16%gcc
cpmynty		    gdbm@1.23%gcc
kgyvtw5			readline@8.1.2%gcc
2hfr5rb		zlib@1.2.13%gcc

c3uhkcj diffutils@3.8%gcc
ltvovvv	    libiconv@1.16%gcc

j5k5nzg expat@2.4.8%gcc
qieib3t	    libbsd@0.11.5%gcc
miq3rrs		libmd@1.0.4%gcc

fxoomyc findutils@4.9.0%gcc

cpmynty gdbm@1.23%gcc
kgyvtw5	    readline@8.1.2%gcc
zcuawli		ncurses@6.3%gcc
k2lfw6f		    pkgconf@1.8.0%gcc

hj6szik gettext@0.21.1%gcc
cxcreln	    bzip2@1.0.8%gcc
c3uhkcj		diffutils@3.8%gcc
ltvovvv	    libiconv@1.16%gcc
4aq5aj2	    libxml2@2.10.1%gcc
k2lfw6f		pkgconf@1.8.0%gcc
2hfr5rb		zlib@1.2.13%gcc
zcuawli	    ncurses@6.3%gcc
kawegoy	    tar@1.34%gcc
wod35ny		pigz@2.7%gcc
fprmzmo		zstd@1.5.2%gcc
nrwxyth	    xz@5.2.7%gcc

3pu63bv hdf5@1.12.2%gcc
stszbns	    cmake@3.24.3%gcc
zcuawli		ncurses@6.3%gcc
yr4z2pt		openssl@1.1.1s%gcc
aurd37j		    ca-certificates-mozilla@2022-10-11%gcc
eydiwim		    perl@5.36.0%gcc
53fb72w			berkeley-db@18.1.40%gcc
cxcreln			bzip2@1.0.8%gcc
c3uhkcj			    diffutils@3.8%gcc
ltvovvv				libiconv@1.16%gcc
cpmynty			gdbm@1.23%gcc
kgyvtw5			    readline@8.1.2%gcc
k2lfw6f	    pkgconf@1.8.0%gcc
2hfr5rb	    zlib@1.2.13%gcc

xfftbwl hdf5@1.12.2%gcc
stszbns	    cmake@3.24.3%gcc
zcuawli		ncurses@6.3%gcc
yr4z2pt		openssl@1.1.1s%gcc
aurd37j		    ca-certificates-mozilla@2022-10-11%gcc
mfxvu5f	    openmpi@4.1.4%gcc
5yywrk2		hwloc@2.8.0%gcc
p7f5n6q		    libpciaccess@0.16%gcc
ao5w53r			util-macros@1.19.3%gcc
4aq5aj2		    libxml2@2.10.1%gcc
ltvovvv			libiconv@1.16%gcc
nrwxyth			xz@5.2.7%gcc
qbwqmk6		numactl@2.0.14%gcc
btoteei		    autoconf@2.69%gcc
rxjqnjw		    automake@1.16.5%gcc
bdxu4wn		    libtool@2.4.7%gcc
z7d5q4f		    m4@1.4.19%gcc
c3uhkcj			diffutils@3.8%gcc
e262sf6			libsigsegv@2.13%gcc
xevso22		openssh@9.1p1%gcc
y6ek4vz		    krb5@1.19.3%gcc
wobmzgv			bison@3.8.2%gcc
hj6szik			gettext@0.21.1%gcc
kawegoy			    tar@1.34%gcc
wod35ny				pigz@2.7%gcc
fprmzmo				zstd@1.5.2%gcc
6pzeykr		    libedit@3.1-20210216%gcc
eydiwim		perl@5.36.0%gcc
53fb72w		    berkeley-db@18.1.40%gcc
cxcreln		    bzip2@1.0.8%gcc
cpmynty		    gdbm@1.23%gcc
kgyvtw5			readline@8.1.2%gcc
76ul6un		pmix@4.1.2%gcc
nblr6w4		    libevent@2.1.12%gcc
k2lfw6f	    pkgconf@1.8.0%gcc
2hfr5rb	    zlib@1.2.13%gcc

nc7yve6 hdf5@1.12.2%gcc
stszbns	    cmake@3.24.3%gcc
zcuawli		ncurses@6.3%gcc
yr4z2pt		openssl@1.1.1s%gcc
aurd37j		    ca-certificates-mozilla@2022-10-11%gcc
eydiwim		    perl@5.36.0%gcc
53fb72w			berkeley-db@18.1.40%gcc
cxcreln			bzip2@1.0.8%gcc
cpmynty			gdbm@1.23%gcc
vbkcftf	    mpich@4.0.2%gcc
fxoomyc		findutils@4.9.0%gcc
5yywrk2		hwloc@2.8.0%gcc
u2kjaxd		libfabric@1.16.1%gcc
p7f5n6q		libpciaccess@0.16%gcc
bdxu4wn		    libtool@2.4.7%gcc
ao5w53r		    util-macros@1.19.3%gcc
4aq5aj2		libxml2@2.10.1%gcc
ltvovvv		    libiconv@1.16%gcc
nrwxyth		    xz@5.2.7%gcc
tlfr5qw		yaksa@0.2%gcc
btoteei		    autoconf@2.69%gcc
rxjqnjw		    automake@1.16.5%gcc
z7d5q4f		    m4@1.4.19%gcc
c3uhkcj			diffutils@3.8%gcc
e262sf6			libsigsegv@2.13%gcc
cyf55fe		    python@3.10.8%gcc
j5k5nzg			expat@2.4.8%gcc
qieib3t			    libbsd@0.11.5%gcc
miq3rrs				libmd@1.0.4%gcc
hj6szik			gettext@0.21.1%gcc
kawegoy			    tar@1.34%gcc
wod35ny				pigz@2.7%gcc
fprmzmo				zstd@1.5.2%gcc
qzq4b7h			libffi@3.4.2%gcc
kgyvtw5			readline@8.1.2%gcc
vmf7qax			sqlite@3.39.4%gcc
eayyoxj			util-linux-uuid@2.38.1%gcc
k2lfw6f	    pkgconf@1.8.0%gcc
2hfr5rb	    zlib@1.2.13%gcc

5yywrk2 hwloc@2.8.0%gcc
p7f5n6q	    libpciaccess@0.16%gcc
bdxu4wn		libtool@2.4.7%gcc
z7d5q4f		    m4@1.4.19%gcc
c3uhkcj			diffutils@3.8%gcc
e262sf6			libsigsegv@2.13%gcc
ao5w53r		util-macros@1.19.3%gcc
4aq5aj2	    libxml2@2.10.1%gcc
ltvovvv		libiconv@1.16%gcc
nrwxyth		xz@5.2.7%gcc
2hfr5rb		zlib@1.2.13%gcc
zcuawli	    ncurses@6.3%gcc
k2lfw6f	    pkgconf@1.8.0%gcc

y6ek4vz krb5@1.19.3%gcc
wobmzgv	    bison@3.8.2%gcc
z7d5q4f		m4@1.4.19%gcc
e262sf6		    libsigsegv@2.13%gcc
eydiwim		perl@5.36.0%gcc
53fb72w		    berkeley-db@18.1.40%gcc
cpmynty		    gdbm@1.23%gcc
kgyvtw5			readline@8.1.2%gcc
c3uhkcj	    diffutils@3.8%gcc
ltvovvv		libiconv@1.16%gcc
hj6szik	    gettext@0.21.1%gcc
cxcreln		bzip2@1.0.8%gcc
4aq5aj2		libxml2@2.10.1%gcc
k2lfw6f		    pkgconf@1.8.0%gcc
zcuawli		ncurses@6.3%gcc
kawegoy		tar@1.34%gcc
wod35ny		    pigz@2.7%gcc
fprmzmo		    zstd@1.5.2%gcc
nrwxyth		xz@5.2.7%gcc
yr4z2pt	    openssl@1.1.1s%gcc
aurd37j		ca-certificates-mozilla@2022-10-11%gcc
2hfr5rb		zlib@1.2.13%gcc

qieib3t libbsd@0.11.5%gcc
miq3rrs	    libmd@1.0.4%gcc

6pzeykr libedit@3.1-20210216%gcc
zcuawli	    ncurses@6.3%gcc
k2lfw6f	    pkgconf@1.8.0%gcc

nblr6w4 libevent@2.1.12%gcc
yr4z2pt	    openssl@1.1.1s%gcc
aurd37j		ca-certificates-mozilla@2022-10-11%gcc
eydiwim		perl@5.36.0%gcc
53fb72w		    berkeley-db@18.1.40%gcc
cxcreln		    bzip2@1.0.8%gcc
c3uhkcj			diffutils@3.8%gcc
ltvovvv			    libiconv@1.16%gcc
cpmynty		    gdbm@1.23%gcc
kgyvtw5			readline@8.1.2%gcc
zcuawli			    ncurses@6.3%gcc
k2lfw6f				pkgconf@1.8.0%gcc
2hfr5rb		zlib@1.2.13%gcc

u2kjaxd libfabric@1.16.1%gcc

qzq4b7h libffi@3.4.2%gcc

ltvovvv libiconv@1.16%gcc

miq3rrs libmd@1.0.4%gcc

p7f5n6q libpciaccess@0.16%gcc
bdxu4wn	    libtool@2.4.7%gcc
z7d5q4f		m4@1.4.19%gcc
c3uhkcj		    diffutils@3.8%gcc
ltvovvv			libiconv@1.16%gcc
e262sf6		    libsigsegv@2.13%gcc
k2lfw6f	    pkgconf@1.8.0%gcc
ao5w53r	    util-macros@1.19.3%gcc

e262sf6 libsigsegv@2.13%gcc

bdxu4wn libtool@2.4.7%gcc
z7d5q4f	    m4@1.4.19%gcc
c3uhkcj		diffutils@3.8%gcc
ltvovvv		    libiconv@1.16%gcc
e262sf6		libsigsegv@2.13%gcc

4aq5aj2 libxml2@2.10.1%gcc
ltvovvv	    libiconv@1.16%gcc
k2lfw6f	    pkgconf@1.8.0%gcc
nrwxyth	    xz@5.2.7%gcc
2hfr5rb	    zlib@1.2.13%gcc

z7d5q4f m4@1.4.19%gcc
c3uhkcj	    diffutils@3.8%gcc
ltvovvv		libiconv@1.16%gcc
e262sf6	    libsigsegv@2.13%gcc

vbkcftf mpich@4.0.2%gcc
fxoomyc	    findutils@4.9.0%gcc
5yywrk2	    hwloc@2.8.0%gcc
zcuawli		ncurses@6.3%gcc
u2kjaxd	    libfabric@1.16.1%gcc
p7f5n6q	    libpciaccess@0.16%gcc
bdxu4wn		libtool@2.4.7%gcc
ao5w53r		util-macros@1.19.3%gcc
4aq5aj2	    libxml2@2.10.1%gcc
ltvovvv		libiconv@1.16%gcc
nrwxyth		xz@5.2.7%gcc
2hfr5rb		zlib@1.2.13%gcc
k2lfw6f	    pkgconf@1.8.0%gcc
tlfr5qw	    yaksa@0.2%gcc
btoteei		autoconf@2.69%gcc
eydiwim		    perl@5.36.0%gcc
53fb72w			berkeley-db@18.1.40%gcc
rxjqnjw		automake@1.16.5%gcc
z7d5q4f		m4@1.4.19%gcc
c3uhkcj		    diffutils@3.8%gcc
e262sf6		    libsigsegv@2.13%gcc
cyf55fe		python@3.10.8%gcc
cxcreln		    bzip2@1.0.8%gcc
j5k5nzg		    expat@2.4.8%gcc
qieib3t			libbsd@0.11.5%gcc
miq3rrs			    libmd@1.0.4%gcc
cpmynty		    gdbm@1.23%gcc
hj6szik		    gettext@0.21.1%gcc
kawegoy			tar@1.34%gcc
wod35ny			    pigz@2.7%gcc
fprmzmo			    zstd@1.5.2%gcc
qzq4b7h		    libffi@3.4.2%gcc
yr4z2pt		    openssl@1.1.1s%gcc
aurd37j			ca-certificates-mozilla@2022-10-11%gcc
kgyvtw5		    readline@8.1.2%gcc
vmf7qax		    sqlite@3.39.4%gcc
eayyoxj		    util-linux-uuid@2.38.1%gcc

zcuawli ncurses@6.3%gcc
k2lfw6f	    pkgconf@1.8.0%gcc

qbwqmk6 numactl@2.0.14%gcc
btoteei	    autoconf@2.69%gcc
eydiwim		perl@5.36.0%gcc
53fb72w		    berkeley-db@18.1.40%gcc
cxcreln		    bzip2@1.0.8%gcc
cpmynty		    gdbm@1.23%gcc
kgyvtw5			readline@8.1.2%gcc
zcuawli			    ncurses@6.3%gcc
k2lfw6f				pkgconf@1.8.0%gcc
2hfr5rb		    zlib@1.2.13%gcc
rxjqnjw	    automake@1.16.5%gcc
bdxu4wn	    libtool@2.4.7%gcc
z7d5q4f	    m4@1.4.19%gcc
c3uhkcj		diffutils@3.8%gcc
ltvovvv		    libiconv@1.16%gcc
e262sf6		libsigsegv@2.13%gcc

mfxvu5f openmpi@4.1.4%gcc
5yywrk2	    hwloc@2.8.0%gcc
p7f5n6q		libpciaccess@0.16%gcc
ao5w53r		    util-macros@1.19.3%gcc
4aq5aj2		libxml2@2.10.1%gcc
ltvovvv		    libiconv@1.16%gcc
nrwxyth		    xz@5.2.7%gcc
zcuawli		ncurses@6.3%gcc
qbwqmk6	    numactl@2.0.14%gcc
btoteei		autoconf@2.69%gcc
rxjqnjw		automake@1.16.5%gcc
bdxu4wn		libtool@2.4.7%gcc
z7d5q4f		m4@1.4.19%gcc
c3uhkcj		    diffutils@3.8%gcc
e262sf6		    libsigsegv@2.13%gcc
xevso22	    openssh@9.1p1%gcc
y6ek4vz		krb5@1.19.3%gcc
wobmzgv		    bison@3.8.2%gcc
hj6szik		    gettext@0.21.1%gcc
kawegoy			tar@1.34%gcc
wod35ny			    pigz@2.7%gcc
fprmzmo			    zstd@1.5.2%gcc
6pzeykr		libedit@3.1-20210216%gcc
yr4z2pt		openssl@1.1.1s%gcc
aurd37j		    ca-certificates-mozilla@2022-10-11%gcc
eydiwim	    perl@5.36.0%gcc
53fb72w		berkeley-db@18.1.40%gcc
cxcreln		bzip2@1.0.8%gcc
cpmynty		gdbm@1.23%gcc
kgyvtw5		    readline@8.1.2%gcc
k2lfw6f	    pkgconf@1.8.0%gcc
76ul6un	    pmix@4.1.2%gcc
nblr6w4		libevent@2.1.12%gcc
2hfr5rb	    zlib@1.2.13%gcc

xevso22 openssh@9.1p1%gcc
y6ek4vz	    krb5@1.19.3%gcc
wobmzgv		bison@3.8.2%gcc
z7d5q4f		    m4@1.4.19%gcc
e262sf6			libsigsegv@2.13%gcc
c3uhkcj		diffutils@3.8%gcc
ltvovvv		    libiconv@1.16%gcc
hj6szik		gettext@0.21.1%gcc
cxcreln		    bzip2@1.0.8%gcc
4aq5aj2		    libxml2@2.10.1%gcc
kawegoy		    tar@1.34%gcc
wod35ny			pigz@2.7%gcc
fprmzmo			zstd@1.5.2%gcc
nrwxyth		    xz@5.2.7%gcc
6pzeykr	    libedit@3.1-20210216%gcc
k2lfw6f		pkgconf@1.8.0%gcc
zcuawli	    ncurses@6.3%gcc
yr4z2pt	    openssl@1.1.1s%gcc
aurd37j		ca-certificates-mozilla@2022-10-11%gcc
eydiwim		perl@5.36.0%gcc
53fb72w		    berkeley-db@18.1.40%gcc
cpmynty		    gdbm@1.23%gcc
kgyvtw5			readline@8.1.2%gcc
2hfr5rb	    zlib@1.2.13%gcc

yr4z2pt openssl@1.1.1s%gcc
aurd37j	    ca-certificates-mozilla@2022-10-11%gcc
eydiwim	    perl@5.36.0%gcc
53fb72w		berkeley-db@18.1.40%gcc
cxcreln		bzip2@1.0.8%gcc
c3uhkcj		    diffutils@3.8%gcc
ltvovvv			libiconv@1.16%gcc
cpmynty		gdbm@1.23%gcc
kgyvtw5		    readline@8.1.2%gcc
zcuawli			ncurses@6.3%gcc
k2lfw6f			    pkgconf@1.8.0%gcc
2hfr5rb	    zlib@1.2.13%gcc

eydiwim perl@5.36.0%gcc
53fb72w	    berkeley-db@18.1.40%gcc
cxcreln	    bzip2@1.0.8%gcc
c3uhkcj		diffutils@3.8%gcc
ltvovvv		    libiconv@1.16%gcc
cpmynty	    gdbm@1.23%gcc
kgyvtw5		readline@8.1.2%gcc
zcuawli		    ncurses@6.3%gcc
k2lfw6f			pkgconf@1.8.0%gcc
2hfr5rb	    zlib@1.2.13%gcc

wod35ny pigz@2.7%gcc
2hfr5rb	    zlib@1.2.13%gcc

k2lfw6f pkgconf@1.8.0%gcc

76ul6un pmix@4.1.2%gcc
5yywrk2	    hwloc@2.8.0%gcc
p7f5n6q		libpciaccess@0.16%gcc
bdxu4wn		    libtool@2.4.7%gcc
z7d5q4f			m4@1.4.19%gcc
c3uhkcj			    diffutils@3.8%gcc
e262sf6			    libsigsegv@2.13%gcc
ao5w53r		    util-macros@1.19.3%gcc
4aq5aj2		libxml2@2.10.1%gcc
ltvovvv		    libiconv@1.16%gcc
nrwxyth		    xz@5.2.7%gcc
2hfr5rb		    zlib@1.2.13%gcc
zcuawli		ncurses@6.3%gcc
k2lfw6f		pkgconf@1.8.0%gcc
nblr6w4	    libevent@2.1.12%gcc
yr4z2pt		openssl@1.1.1s%gcc
aurd37j		    ca-certificates-mozilla@2022-10-11%gcc
eydiwim		    perl@5.36.0%gcc
53fb72w			berkeley-db@18.1.40%gcc
cxcreln			bzip2@1.0.8%gcc
cpmynty			gdbm@1.23%gcc
kgyvtw5			    readline@8.1.2%gcc

cyf55fe python@3.10.8%gcc
cxcreln	    bzip2@1.0.8%gcc
c3uhkcj		diffutils@3.8%gcc
j5k5nzg	    expat@2.4.8%gcc
qieib3t		libbsd@0.11.5%gcc
miq3rrs		    libmd@1.0.4%gcc
cpmynty	    gdbm@1.23%gcc
hj6szik	    gettext@0.21.1%gcc
ltvovvv		libiconv@1.16%gcc
4aq5aj2		libxml2@2.10.1%gcc
kawegoy		tar@1.34%gcc
wod35ny		    pigz@2.7%gcc
fprmzmo		    zstd@1.5.2%gcc
qzq4b7h	    libffi@3.4.2%gcc
zcuawli	    ncurses@6.3%gcc
yr4z2pt	    openssl@1.1.1s%gcc
aurd37j		ca-certificates-mozilla@2022-10-11%gcc
eydiwim		perl@5.36.0%gcc
53fb72w		    berkeley-db@18.1.40%gcc
k2lfw6f	    pkgconf@1.8.0%gcc
kgyvtw5	    readline@8.1.2%gcc
vmf7qax	    sqlite@3.39.4%gcc
eayyoxj	    util-linux-uuid@2.38.1%gcc
nrwxyth	    xz@5.2.7%gcc
2hfr5rb	    zlib@1.2.13%gcc

kgyvtw5 readline@8.1.2%gcc
zcuawli	    ncurses@6.3%gcc
k2lfw6f		pkgconf@1.8.0%gcc

vmf7qax sqlite@3.39.4%gcc
kgyvtw5	    readline@8.1.2%gcc
zcuawli		ncurses@6.3%gcc
k2lfw6f		    pkgconf@1.8.0%gcc
2hfr5rb	    zlib@1.2.13%gcc

kawegoy tar@1.34%gcc
cxcreln	    bzip2@1.0.8%gcc
c3uhkcj		diffutils@3.8%gcc
ltvovvv	    libiconv@1.16%gcc
wod35ny	    pigz@2.7%gcc
2hfr5rb		zlib@1.2.13%gcc
nrwxyth	    xz@5.2.7%gcc
fprmzmo	    zstd@1.5.2%gcc

rakrbas tcl@8.6.12%gcc
zqdhyiy	    zlib@1.2.8%gcc  cppflags="-O3"

v63n6wx tcl@8.6.12%gcc
2hfr5rb	    zlib@1.2.13%gcc

eayyoxj util-linux-uuid@2.38.1%gcc
k2lfw6f	    pkgconf@1.8.0%gcc

ao5w53r util-macros@1.19.3%gcc

nrwxyth xz@5.2.7%gcc

tlfr5qw yaksa@0.2%gcc
btoteei	    autoconf@2.69%gcc
eydiwim		perl@5.36.0%gcc
53fb72w		    berkeley-db@18.1.40%gcc
rxjqnjw	    automake@1.16.5%gcc
bdxu4wn	    libtool@2.4.7%gcc
z7d5q4f	    m4@1.4.19%gcc
c3uhkcj		diffutils@3.8%gcc
ltvovvv		    libiconv@1.16%gcc
e262sf6		libsigsegv@2.13%gcc
cyf55fe	    python@3.10.8%gcc
cxcreln		bzip2@1.0.8%gcc
j5k5nzg		expat@2.4.8%gcc
qieib3t		    libbsd@0.11.5%gcc
miq3rrs			libmd@1.0.4%gcc
cpmynty		gdbm@1.23%gcc
hj6szik		gettext@0.21.1%gcc
4aq5aj2		    libxml2@2.10.1%gcc
kawegoy		    tar@1.34%gcc
wod35ny			pigz@2.7%gcc
fprmzmo			zstd@1.5.2%gcc
qzq4b7h		libffi@3.4.2%gcc
zcuawli		ncurses@6.3%gcc
yr4z2pt		openssl@1.1.1s%gcc
aurd37j		    ca-certificates-mozilla@2022-10-11%gcc
k2lfw6f		pkgconf@1.8.0%gcc
kgyvtw5		readline@8.1.2%gcc
vmf7qax		sqlite@3.39.4%gcc
eayyoxj		util-linux-uuid@2.38.1%gcc
nrwxyth		xz@5.2.7%gcc
2hfr5rb		zlib@1.2.13%gcc

tolklcf zlib@1.2.8%gcc

zqdhyiy zlib@1.2.8%gcc	cppflags="-O3"

2hfr5rb zlib@1.2.13%gcc

fprmzmo zstd@1.5.2%gcc

==> 57 installed packages

Spack models the dependencies of packages as a directed acyclic graph (DAG). The spack find -d command shows the tree representation of that graph. We can also use the spack graph command to view the entire DAG as a graph.

$ spack graph hdf5+hl+mpi ^mpich
o hdf5@1.12.2/nc7yve6
|\
| |\
| | |\
| | o | mpich@4.0.2/vbkcftf
| |/| |
| | |\ \
| | | |\ \
| | | | |\ \
| | | | | |\ \
| | | | | | |\ \
| | o | | | | | | yaksa@0.2/tlfr5qw
| | |\ \ \ \ \ \ \
| | | |\ \ \ \ \ \ \
| | | | |\ \ \ \ \ \ \
| | | | | |\ \ \ \ \ \ \
| | o | | | | | | | | | | python@3.10.8/cyf55fe
| |/| | | | | | | | | | |
|/|/| | | | | | | | | | |
| | |\ \ \ \ \ \ \ \ \ \ \
| | | |\ \ \ \ \ \ \ \ \ \ \
| | | | |\ \ \ \ \ \ \ \ \ \ \
| | | | | |\ \ \ \ \ \ \ \ \ \ \
| | | | | | |\ \ \ \ \ \ \ \ \ \ \
| | | | | | | |\ \ \ \ \ \ \ \ \ \ \
| | | | | | | | |\ \ \ \ \ \ \ \ \ \ \
| | | | | | | | | |\ \ \ \ \ \ \ \ \ \ \
| | | | | | | | | | |\ \ \ \ \ \ \ \ \ \ \
| | | | | | | | | | | |\ \ \ \ \ \ \ \ \ \ \
| | | | | | | | | o | | | | | | | | | | | | | gettext@0.21.1/hj6szik
| | | |_|_|_|_|_|/| | | | | | | | | | | | | |
| | |/| | | | | |/| | | | | | | | | | | | | |
| | | | | | | |/| | | | | | | | | | | | | | |
| | | | | | | | | |\ \ \ \ \ \ \ \ \ \ \ \ \ \
| | | | | | | | | | |\ \ \ \ \ \ \ \ \ \ \ \ \ \
| | | | | | | | | | | |_|_|_|_|_|_|_|/ / / / / /
| | | | | | | | | | |/| | | | | | | | | | | | |
| | | | | | | | | | | |\ \ \ \ \ \ \ \ \ \ \ \ \
| | | | | | | | | | | | | |_|/ / / / / / / / / /
| | | | | | | | | | | | |/| | | | | | | | | | |
| | | | | | | | | o | | | | | | | | | | | | | | tar@1.34/kawegoy
| | | |_|_|_|_|_|/| | | | | | | | | | | | | | |
| | |/| | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | |\ \ \ \ \ \ \ \ \ \ \ \ \ \ \
| | | | | | | | | | |\ \ \ \ \ \ \ \ \ \ \ \ \ \ \
| | | | | | | | | | | |\ \ \ \ \ \ \ \ \ \ \ \ \ \ \
| | | | | | | | | | | | |_|/ / / / / / / / / / / / /
| | | | | | | | | | | |/| | | | | | | | | | | | | |
| | | | | | | | | | | | |/ / / / / / / / / / / / /
| | | | | | | | | o | | | | | | | | | | | | | | | zstd@1.5.2/fprmzmo
| | | | | | | | |  / / / / / / / / / / / / / / /
| | | | o | | | | | | | | | | | | | | | | | | | sqlite@3.39.4/vmf7qax
| |_|_|/| | | | | | | | | | | | | | | | | | | |
|/| | | | | | | | | | | | | | | | | | | | | | |
| | | | |/ / / / / / / / / / / / / / / / / / /
| | | | | | | | o | | | | | | | | | | | | | | pigz@2.7/wod35ny
| |_|_|_|_|_|_|/ / / / / / / / / / / / / / /
|/| | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | o cmake@3.24.3/stszbns
| | | | | | |_|_|_|_|_|_|_|_|_|_|_|_|_|_|/|
| | | | | |/| |_|_|_|_|_|_|_|_|_|_|_|_|_|/
| | | | | | |/| | | | | | | | | | | | | |
| | | | | o | | | | | | | | | | | | | | | openssl@1.1.1s/yr4z2pt
| |_|_|_|/| | | | | | | | | | | | | | | |
|/| | | | | | | | | | | | | | | | | | | |
| | | | | |\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \
| | | | | | | | | | | | | | | | o | | | | | automake@1.16.5/rxjqnjw
| | | | | | |_|_|_|_|_|_|_|_|_|/| | | | | |
| | | | | |/| | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | |/ / / / /
| | | | | | | | | | | | | | | | o | | | | autoconf@2.69/btoteei
| | | | | | |_|_|_|_|_|_|_|_|_|/| | | | |
| | | | | |/| | | | | | | | | |/ / / / /
| | | | | | | | | | | | | | |/| | | | |
| | | | | o | | | | | | | | | | | | | | perl@5.36.0/eydiwim
| |_|_|_|/| | | | | | | | | | | | | | |
|/| | | | | | | | | | | | | | | | | | |
| | | | | |\ \ \ \ \ \ \ \ \ \ \ \ \ \ \
| | | | | | |_|_|_|_|_|_|/ / / / / / / /
| | | | | |/| | | | | | | | | | | | | |
| | | | | | |\ \ \ \ \ \ \ \ \ \ \ \ \ \
| | | | | | | |_|_|_|_|/ / / / / / / / /
| | | | | | |/| | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | o | hwloc@2.8.0/5yywrk2
| | |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|/| |
| |/| | | | | | | | |_|_|_|_|_|_|_|/| |
| | | | | | | | | |/| | | |_|_|_|_|/| |
| | | | | | | | | | | | |/| | | | |/ /
| | | | | | | | | | | | | | | | |/| |
| | | | | | | | | | | | o | | | | | | libxml2@2.10.1/4aq5aj2
| |_|_|_|_|_|_|_|_|_|_|/| | | | | | |
|/| |_|_|_|_|_|_|_|_|_|/| | | | | | |
| |/| |_|_|_|_|_|_|_|_|/| | | | | | |
| | |/| | | | | | | | |/ / / / / / /
o | | | | | | | | | | | | | | | | | zlib@1.2.13/2hfr5rb
 / / / / / / / / / / / / / / / / /
| o | | | | | | | | | | | | | | | xz@5.2.7/nrwxyth
|  / / / / / / / / / / / / / / /
| | | | | | | | | | | | | o | | libpciaccess@0.16/p7f5n6q
| |_|_|_|_|_|_|_|_|_|_|_|/| | |
|/| | | | | | | | | | | |/| | |
| | | | | | | | | | | | | o | | util-macros@1.19.3/ao5w53r
| | | | | | | | | | | | |  / /
| o | | | | | | | | | | | | | util-linux-uuid@2.38.1/eayyoxj
|/ / / / / / / / / / / / / /
| | o | | | | | | | | | | | gdbm@1.23/cpmynty
| |/ / / / / / / / / / / /
| o | | | | | | | | | | | readline@8.1.2/kgyvtw5
| | |_|_|/ / / / / / / /
| |/| | | | | | | | | |
| o | | | | | | | | | | ncurses@6.3/zcuawli
|/ / / / / / / / / / /
o | | | | | | | | | | pkgconf@1.8.0/k2lfw6f
 / / / / / / / / / /
| | | | | | | o | | libtool@2.4.7/bdxu4wn
| | | | | | |/ / /
| | | | | | o | | m4@1.4.19/z7d5q4f
| | | | | | |\ \ \
| | | | | | o | | | libsigsegv@2.13/e262sf6
| | | | | |  / / /
| | | | | o | | | expat@2.4.8/j5k5nzg
| | | | | o | | | libbsd@0.11.5/qieib3t
| | | | | o | | | libmd@1.0.4/miq3rrs
| | | | |  / / /
o | | | | | | | bzip2@1.0.8/cxcreln
| |_|_|_|/ / /
|/| | | | | |
o | | | | | | diffutils@3.8/c3uhkcj
| |_|_|/ / /
|/| | | | |
o | | | | | libiconv@1.16/ltvovvv
 / / / / /
| | o | | libffi@3.4.2/qzq4b7h
| |  / /
| | o | libfabric@1.16.1/u2kjaxd
| |  /
| | o findutils@4.9.0/fxoomyc
| |
| o ca-certificates-mozilla@2022-10-11/aurd37j
|
o berkeley-db@18.1.40/53fb72w

HDF5 is more complicated than our basic example of zlib and Tcl, but it’s still within the realm of software that an experienced HPC user could reasonably expect to manually install given a bit of time. Now let’s look at an even more complicated package.

$ spack install trilinos
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/pkgconf-1.8.0-k2lfw6fht6zvsfihvx3avihboi3uv455
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/ca-certificates-mozilla-2022-10-11-aurd37jjebxaqzs73saip5v6hgfu3foj
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/berkeley-db-18.1.40-53fb72wziswrec6tkbjpowshkul2nsk4
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/libiconv-1.16-ltvovvvjgmlvy4m2pn365cy6p5dysajq
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/zlib-1.2.13-2hfr5rbzefrxf6t6kv4trbsl63puaza6
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/libsigsegv-2.13-e262sf6ptgnmyu7zkflzp3ycbdfqz7hf
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/util-macros-1.19.3-ao5w53rpwhgfruk2zrqcehlov5slestd
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/xz-5.2.7-nrwxythffgfumjv7skmgdjtxaunlmqau
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/zstd-1.5.2-fprmzmoubdjdr663rprctp2tuqiv5apu
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/ncurses-6.3-zcuawlif55qhuknvbk4jez7xjcxhnydf
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/diffutils-3.8-c3uhkcjt7tagz2djrd6r2b6b3c2tia3s
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/pigz-2.7-wod35nye4qcrkbopr23zoy5qb3ywp3v3
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/libxml2-2.10.1-4aq5aj2n5u2n3dbrb76pnhoil6tv3e4e
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/readline-8.1.2-kgyvtw5h6mi5nms32x3vzgbw32ymmfwa
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/libedit-3.1-20210216-6pzeykrtvrkpbw6u3mq6likd4ktvah76
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/m4-1.4.19-z7d5q4f2qzxejx4xxdrj45q5gxur6q7b
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/bzip2-1.0.8-cxcrelnw64jh6lvhzb6pfar7nijv6us6
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/gdbm-1.23-cpmyntybsnm3se7lfnvqosbiqzrcg2kq
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/libtool-2.4.7-bdxu4wnbhlmvj6sh5y7uynrldzepiilz
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/tar-1.34-kawegoyhusotpo5mlsqnjqf6ngrjyj2w
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/perl-5.36.0-eydiwimku2cctu6dsom3yvfxxjmqyr4w
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/libpciaccess-0.16-p7f5n6q6kwnzq7syvqbslnotl72yxs23
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/gettext-0.21.1-hj6szikaqzdpxa36gk4w72m4czhwd6gu
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/openssl-1.1.1s-yr4z2pt4jnp5fltumr2my3badazsarz2
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/bison-3.8.2-wobmzgvlc235muaaxwehzblkgcnhvwtn
==> Installing openblas-0.3.21-3db4ryrsdfg5b7wzxeruwdhhx3lt7uux
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-openblas-0.3.21-3db4ryrsdfg5b7wzxeruwdhhx3lt7uux.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/openblas-0.3.21/linux-ubuntu18.04-x86_64-gcc-7.5.0-openblas-0.3.21-3db4ryrsdfg5b7wzxeruwdhhx3lt7uux.spack
==> Extracting openblas-0.3.21-3db4ryrsdfg5b7wzxeruwdhhx3lt7uux from binary cache
==> openblas: Successfully installed openblas-0.3.21-3db4ryrsdfg5b7wzxeruwdhhx3lt7uux
  Fetch: 0.22s.	 Build: 0.97s.	Total: 1.19s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/openblas-0.3.21-3db4ryrsdfg5b7wzxeruwdhhx3lt7uux
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/autoconf-2.69-btoteeiz74epw4kulm7aecae4cxraxua
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/hwloc-2.8.0-5yywrk2zoib75deet4eu4ocxim2ldngq
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/cmake-3.24.3-stszbnscxrtgzqrwmx2wfwsuntf47mpy
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/libevent-2.1.12-nblr6w4gwbdyhjz2z5lg5pseztxnb7gh
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/krb5-1.19.3-y6ek4vz7ntj6qw26jv2trb3ok4m5koxy
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/automake-1.16.5-rxjqnjw5jkrbym5x4yshogm3f262crre
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/pmix-4.1.2-76ul6unbdppxalfkkxjqzoky7lu4jqpo
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/openssh-9.1p1-xevso22q5f5fb2bqp5lhuutgvrqtiolo
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/numactl-2.0.14-qbwqmk6qylskqtyrfuyfp36f465bxrrk
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/openmpi-4.1.4-mfxvu5fnaac33f4pw25rjrojafbbupwb
==> Installing trilinos-13.0.1-brfmatydwbrssme6d6bnwcsh5spxv7zz
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-trilinos-13.0.1-brfmatydwbrssme6d6bnwcsh5spxv7zz.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/trilinos-13.0.1/linux-ubuntu18.04-x86_64-gcc-7.5.0-trilinos-13.0.1-brfmatydwbrssme6d6bnwcsh5spxv7zz.spack
==> Extracting trilinos-13.0.1-brfmatydwbrssme6d6bnwcsh5spxv7zz from binary cache
==> trilinos: Successfully installed trilinos-13.0.1-brfmatydwbrssme6d6bnwcsh5spxv7zz
  Fetch: 0.25s.	 Build: 6.08s.	Total: 6.33s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/trilinos-13.0.1-brfmatydwbrssme6d6bnwcsh5spxv7zz

Now we’re starting to see the power of Spack. Trilinos in its default configuration has 23 top level dependencies, many of which have dependencies of their own. Installing more complex packages can take days or weeks even for an experienced user. Although we’ve done a binary installation for the tutorial, a source installation of Trilinos using Spack takes about 3 hours (depending on the system), but only 20 seconds of programmer time.

Spack manages consistency of the entire DAG. Every MPI dependency will be satisfied by the same configuration of MPI, etc. If we install Trilinos again specifying a dependency on our previous HDF5 built with MPICH:

$ spack install trilinos +hdf5 ^hdf5+hl+mpi ^mpich
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/pkgconf-1.8.0-k2lfw6fht6zvsfihvx3avihboi3uv455
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/ca-certificates-mozilla-2022-10-11-aurd37jjebxaqzs73saip5v6hgfu3foj
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/berkeley-db-18.1.40-53fb72wziswrec6tkbjpowshkul2nsk4
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/libiconv-1.16-ltvovvvjgmlvy4m2pn365cy6p5dysajq
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/zlib-1.2.13-2hfr5rbzefrxf6t6kv4trbsl63puaza6
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/findutils-4.9.0-fxoomycyzatn7nzlioglzjir3lgs5kuk
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/libsigsegv-2.13-e262sf6ptgnmyu7zkflzp3ycbdfqz7hf
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/util-macros-1.19.3-ao5w53rpwhgfruk2zrqcehlov5slestd
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/xz-5.2.7-nrwxythffgfumjv7skmgdjtxaunlmqau
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/libfabric-1.16.1-u2kjaxdisx652qhefe2ibofiewkdgstr
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/libmd-1.0.4-miq3rrs534mewt3w5r3wd5jp3lkk7y25
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/zstd-1.5.2-fprmzmoubdjdr663rprctp2tuqiv5apu
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/libffi-3.4.2-qzq4b7hjmtrswtnnezcytreqg4vtsgi5
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/util-linux-uuid-2.38.1-eayyoxjdfrc2wivabs5jbipcofeluyyo
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/ncurses-6.3-zcuawlif55qhuknvbk4jez7xjcxhnydf
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/diffutils-3.8-c3uhkcjt7tagz2djrd6r2b6b3c2tia3s
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/pigz-2.7-wod35nye4qcrkbopr23zoy5qb3ywp3v3
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/libxml2-2.10.1-4aq5aj2n5u2n3dbrb76pnhoil6tv3e4e
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/libbsd-0.11.5-qieib3tiyp74ps4kn3jail7bot35t7hp
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/readline-8.1.2-kgyvtw5h6mi5nms32x3vzgbw32ymmfwa
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/m4-1.4.19-z7d5q4f2qzxejx4xxdrj45q5gxur6q7b
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/bzip2-1.0.8-cxcrelnw64jh6lvhzb6pfar7nijv6us6
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/expat-2.4.8-j5k5nzgsbhue6ylglt4gtrnm6okuvsj6
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/gdbm-1.23-cpmyntybsnm3se7lfnvqosbiqzrcg2kq
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/sqlite-3.39.4-vmf7qax3kowjkec5bzohcqvo5rqgm3xx
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/libtool-2.4.7-bdxu4wnbhlmvj6sh5y7uynrldzepiilz
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/tar-1.34-kawegoyhusotpo5mlsqnjqf6ngrjyj2w
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/perl-5.36.0-eydiwimku2cctu6dsom3yvfxxjmqyr4w
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/libpciaccess-0.16-p7f5n6q6kwnzq7syvqbslnotl72yxs23
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/gettext-0.21.1-hj6szikaqzdpxa36gk4w72m4czhwd6gu
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/autoconf-2.69-btoteeiz74epw4kulm7aecae4cxraxua
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/openblas-0.3.21-3db4ryrsdfg5b7wzxeruwdhhx3lt7uux
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/openssl-1.1.1s-yr4z2pt4jnp5fltumr2my3badazsarz2
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/hwloc-2.8.0-5yywrk2zoib75deet4eu4ocxim2ldngq
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/automake-1.16.5-rxjqnjw5jkrbym5x4yshogm3f262crre
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/cmake-3.24.3-stszbnscxrtgzqrwmx2wfwsuntf47mpy
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/python-3.10.8-cyf55fezf7ib2o6wqflx2jo7xz6tobwh
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/yaksa-0.2-tlfr5qwqhalsfrp732iewcdrjalvtjcl
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/mpich-4.0.2-vbkcftfrezurdhekzxpycihudiv5kyzy
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/hdf5-1.12.2-nc7yve6lcatumow4jja6dvqudot4j2lp
==> Installing trilinos-13.0.1-zcxy3l7xnasdsowy4ybfty3whv7nyqk6
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-trilinos-13.0.1-zcxy3l7xnasdsowy4ybfty3whv7nyqk6.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/trilinos-13.0.1/linux-ubuntu18.04-x86_64-gcc-7.5.0-trilinos-13.0.1-zcxy3l7xnasdsowy4ybfty3whv7nyqk6.spack
==> Extracting trilinos-13.0.1-zcxy3l7xnasdsowy4ybfty3whv7nyqk6 from binary cache
==> trilinos: Successfully installed trilinos-13.0.1-zcxy3l7xnasdsowy4ybfty3whv7nyqk6
  Fetch: 0.49s.	 Build: 6.21s.	Total: 6.70s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/trilinos-13.0.1-zcxy3l7xnasdsowy4ybfty3whv7nyqk6

We see that every package in the Trilinos DAG that depends on MPI now uses MPICH.

$ spack find -d trilinos
-- linux-ubuntu18.04-x86_64 / gcc@7.5.0 -------------------------
trilinos@13.0.1
    cmake@3.24.3
	ncurses@6.3
	openssl@1.1.1s
	    ca-certificates-mozilla@2022-10-11
    hwloc@2.8.0
	libpciaccess@0.16
	    libtool@2.4.7
	    util-macros@1.19.3
	libxml2@2.10.1
	    libiconv@1.16
	    xz@5.2.7
	pkgconf@1.8.0
    openblas@0.3.21
	perl@5.36.0
	    berkeley-db@18.1.40
	    bzip2@1.0.8
		diffutils@3.8
	    gdbm@1.23
		readline@8.1.2
    openmpi@4.1.4
	numactl@2.0.14
	    autoconf@2.69
	    automake@1.16.5
	    m4@1.4.19
		libsigsegv@2.13
	openssh@9.1p1
	    krb5@1.19.3
		bison@3.8.2
		gettext@0.21.1
		    tar@1.34
			pigz@2.7
			zstd@1.5.2
	    libedit@3.1-20210216
	pmix@4.1.2
	    libevent@2.1.12
	zlib@1.2.13

trilinos@13.0.1
    cmake@3.24.3
	ncurses@6.3
	openssl@1.1.1s
	    ca-certificates-mozilla@2022-10-11
    hdf5@1.12.2
	pkgconf@1.8.0
	zlib@1.2.13
    hwloc@2.8.0
	libpciaccess@0.16
	    libtool@2.4.7
	    util-macros@1.19.3
	libxml2@2.10.1
	    libiconv@1.16
	    xz@5.2.7
    mpich@4.0.2
	findutils@4.9.0
	libfabric@1.16.1
	yaksa@0.2
	    autoconf@2.69
	    automake@1.16.5
	    m4@1.4.19
		diffutils@3.8
		libsigsegv@2.13
	    python@3.10.8
		expat@2.4.8
		    libbsd@0.11.5
			libmd@1.0.4
		gettext@0.21.1
		    tar@1.34
			pigz@2.7
			zstd@1.5.2
		libffi@3.4.2
		readline@8.1.2
		sqlite@3.39.4
		util-linux-uuid@2.38.1
    openblas@0.3.21
	perl@5.36.0
	    berkeley-db@18.1.40
	    bzip2@1.0.8
	    gdbm@1.23

==> 2 installed packages

As we discussed before, the spack find -d command shows the dependency information as a tree. While that is often sufficient, many complicated packages, including Trilinos, have dependencies that cannot be fully represented as a tree. Again, the spack graph command shows the full DAG of the dependency information.

$ spack graph trilinos
o trilinos@13.0.1/brfmaty
|\
| |\
| | |\
o | | | openmpi@4.1.4/mfxvu5f
|\ \ \ \
| |\ \ \ \
| | |\ \ \ \
| | | |\ \ \ \
| | | | |\ \ \ \
| | | | | |\ \ \ \
| | | | | | | |/ /
| | | | | | |/| |
| | | | o | | | | openssh@9.1p1/xevso22
| |_|_|/| | | | |
|/| | | | | | | |
| | | | |\ \ \ \ \
| | | | | |\ \ \ \ \
| | | | | | |\ \ \ \ \
| | | | | | | o | | | | krb5@1.19.3/y6ek4vz
| | | | | |_|/| | | | |
| | | | |/| | | | | | |
| | | | | | | |\ \ \ \ \
| | | | | | | | |\ \ \ \ \
| | | | | | | o | | | | | | gettext@0.21.1/hj6szik
| | | | | | |/| | | | | | |
| | | | | |/| | | | | | | |
| | | | | | | |\ \ \ \ \ \ \
| | | | | | | | |\ \ \ \ \ \ \
| | | | | | | | | |\ \ \ \ \ \ \
| | | | | | | | | | |\ \ \ \ \ \ \
| | | | | | | | o | | | | | | | | | tar@1.34/kawegoy
| | | | | | | |/| | | | | | | | | |
| | | | | | | | |\ \ \ \ \ \ \ \ \ \
| | | | | | | | | |\ \ \ \ \ \ \ \ \ \
| | | | | | | | | | |\ \ \ \ \ \ \ \ \ \
| | | | | | | | | | | |_|/ / / / / / / /
| | | | | | | | | | |/| | | | | | | | |
| | | | | | | | | | | |/ / / / / / / /
| | | | | | | | o | | | | | | | | | | zstd@1.5.2/fprmzmo
| | | | | | | |	 / / / / / / / / / /
| o | | | | | | | | | | | | | | | | pmix@4.1.2/76ul6un
| |\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \
| | | |_|_|_|_|_|_|_|_|_|_|_|_|/ / /
| | |/| | | | | | | | | | | | | | |
| | | | | | | | | o | | | | | | | | pigz@2.7/wod35ny
| |_|_|_|_|_|_|_|/ / / / / / / / /
|/| | | | | | | | | | | | | | | |
| o | | | | | | | | | | | | | | | libevent@2.1.12/nblr6w4
| | |_|_|/ / / / / / / / / / / /
| |/| | | | | | | | | | | | | |
| | | | | | | | | | | | | | | o cmake@3.24.3/stszbns
| | |_|_|_|_|_|_|_|_|_|_|_|_|/|
| |/| | | | |_|_|_|_|_|_|_|_|/
| | | | | |/| | | | | | | | |
| o | | | | | | | | | | | | | openssl@1.1.1s/yr4z2pt
|/| | | | | | | | | | | | | |
| |\ \ \ \ \ \ \ \ \ \ \ \ \ \
| | |_|_|/ / / / / / / / / / /
| |/| | | | | | | | | | | | |
| | | | | | | | | | | | | | o openblas@0.3.21/3db4ryr
| | |_|_|_|_|_|_|_|_|_|_|_|/
| |/| | | | | | | | | | | |
| | | | | | | | | | | | | o numactl@2.0.14/qbwqmk6
| | | | | | | | | | | | | |\
| | | | | | | | | | | | | | |\
| | | | | | | | | | | | | | | |\
| | | | | | | | | | | | o | | | | bison@3.8.2/wobmzgv
| | |_|_|_|_|_|_|_|_|_|/| | | | |
| |/| | | | | | | | | |/| | | | |
| | | | | | | | | | | | |/ / / /
| | | | | | | | | | | | | | o | automake@1.16.5/rxjqnjw
| | |_|_|_|_|_|_|_|_|_|_|_|/| |
| |/| | | | | | | | | | | | | |
| | | | | | | | | | | | | | |/
| | | | | | | | | | | | | | o autoconf@2.69/btoteei
| | |_|_|_|_|_|_|_|_|_|_|_|/|
| |/| | | | | | | | | | | |/
| | | | | | | | | | | | |/|
| o | | | | | | | | | | | | perl@5.36.0/eydiwim
|/| | | | | | | | | | | | |
| |\ \ \ \ \ \ \ \ \ \ \ \ \
| | |\ \ \ \ \ \ \ \ \ \ \ \ \
| | | |_|_|_|_|_|_|_|/ / / / /
| | |/| | | | | | | | | | | |
| | | | | o | | | | | | | | | hwloc@2.8.0/5yywrk2
| | | | | |\| | | | | | | | |
| | | | | |\ \ \ \ \ \ \ \ \ \
| | | | | | |_|/ / / / / / / /
| | | | | |/| | | | | | | | |
| | | | | | |\ \ \ \ \ \ \ \ \
| | | | | | | |_|_|_|_|/ / / /
| | | | | | |/| | | | | | | |
| | | | | | o | | | | | | | | libxml2@2.10.1/4aq5aj2
| |_|_|_|_|/| | | | | | | | |
|/| | | | | | | | | | | | | |
| | | | | | |\ \ \ \ \ \ \ \ \
| | | | | | | |_|_|_|/ / / / /
| | | | | | |/| | | | | | | |
| | | | | | | |\ \ \ \ \ \ \ \
| | | | | | | | |_|/ / / / / /
| | | | | | | |/| | | | | | |
| | | | | | | | | |/ / / / /
| | | | | | | | |/| | | | |
o | | | | | | | | | | | | | zlib@1.2.13/2hfr5rb
 / / / / / / / / / / / / /
| | | | | o | | | | | | | xz@5.2.7/nrwxyth
| | | | |  / / / / / / /
| | | | | | | o | | | | libpciaccess@0.16/p7f5n6q
| | | | | | |/| | | | |
| | | | | |/| | | | | |
| | | | | | | |\ \ \ \ \
| | | | | | | | | |_|_|/
| | | | | | | | |/| | |
| | | | | | | o | | | | util-macros@1.19.3/ao5w53r
| | | | | | |  / / / /
o | | | | | | | | | | gdbm@1.23/cpmynty
o | | | | | | | | | | readline@8.1.2/kgyvtw5
| |_|_|/ / / / / / /
|/| | | | | | | | |
| | | | | | | o | | libedit@3.1-20210216/6pzeykr
| |_|_|_|_|_|/| | |
|/| | | | |_|/ / /
| | | | |/| | | |
o | | | | | | | | ncurses@6.3/zcuawli
| |_|_|/ / / / /
|/| | | | | | |
o | | | | | | | pkgconf@1.8.0/k2lfw6f
 / / / / / / /
| | | | o | | libtool@2.4.7/bdxu4wn
| | | | | |/
| | | | |/|
| | | | o | m4@1.4.19/z7d5q4f
| | | | |\|
| | | | o | libsigsegv@2.13/e262sf6
| | | |	 /
o | | | | bzip2@1.0.8/cxcreln
| |_|_|/
|/| | |
o | | | diffutils@3.8/c3uhkcj
| |_|/
|/| |
o | | libiconv@1.16/ltvovvv
 / /
| o ca-certificates-mozilla@2022-10-11/aurd37j
|
o berkeley-db@18.1.40/53fb72w

You can control how the output is displayed with a number of options.

The ASCII output from spack graph can be difficult to parse for complicated packages. The output can be changed to the Graphviz .dot format using the --dot flag.

$ spack graph --dot trilinos | dot -Tpdf > trilinos_graph.pdf

Uninstalling Packages

Earlier we installed many configurations each of zlib and Tcl. Now we will go through and uninstall some of those packages that we didn’t really need.

$ spack find -d tcl
-- linux-ubuntu18.04-x86_64 / clang@7.0.0 -----------------------
tcl@8.6.12
    zlib@1.2.8


-- linux-ubuntu18.04-x86_64 / gcc@7.5.0 -------------------------
tcl@8.6.12
    zlib@1.2.8

tcl@8.6.12
    zlib@1.2.13

==> 3 installed packages
$ spack find zlib
-- linux-ubuntu18.04-x86_64 / clang@7.0.0 -----------------------
zlib@1.2.8  zlib@1.2.13

-- linux-ubuntu18.04-x86_64 / gcc@6.5.0 -------------------------
zlib@1.2.13

-- linux-ubuntu18.04-x86_64 / gcc@7.5.0 -------------------------
zlib@1.2.8  zlib@1.2.8	zlib@1.2.13
==> 6 installed packages

We can uninstall packages by spec using the same syntax as install.

$ spack uninstall -y zlib %gcc@6.5.0
==> Successfully uninstalled zlib@1.2.13%gcc@6.5.0+optimize+pic+shared build_system=makefile arch=linux-ubuntu18.04-x86_64/6izan4f
$ spack find -lf zlib
-- linux-ubuntu18.04-x86_64 / clang@7.0.0 -----------------------
2xcmtth zlib@1.2.8%clang   fdbomoa zlib@1.2.13%clang

-- linux-ubuntu18.04-x86_64 / gcc@7.5.0 -------------------------
tolklcf zlib@1.2.8%gcc	 zqdhyiy zlib@1.2.8%gcc	 cppflags="-O3"	  2hfr5rb zlib@1.2.13%gcc
==> 5 installed packages

We can also uninstall packages by referring only to their hash.

We can use either -f (force) or -R (remove dependents as well) to remove packages that are required by another installed package.

$ spack uninstall zlib/2xc
==> Will not uninstall zlib@1.2.8%clang@7.0.0/2xcmtth
The following packages depend on it:
    -- linux-ubuntu18.04-x86_64 / clang@7.0.0 -----------------------
    36jwtbo tcl@8.6.12

==> Error: There are still dependents.
  use `spack uninstall --dependents` to remove dependents too
$ spack uninstall -y -R zlib/2xc
==> Successfully uninstalled tcl@8.6.12%clang@7.0.0 build_system=autotools arch=linux-ubuntu18.04-x86_64/36jwtbo
==> Successfully uninstalled zlib@1.2.8%clang@7.0.0+optimize+pic+shared build_system=makefile arch=linux-ubuntu18.04-x86_64/2xcmtth

Spack will not uninstall packages that are not sufficiently specified. The -a (all) flag can be used to uninstall multiple packages at once.

$ spack uninstall trilinos
==> Error: trilinos matches multiple packages:

    -- linux-ubuntu18.04-x86_64 / gcc@7.5.0 -------------------------
    brfmaty trilinos@13.0.1  zcxy3l7 trilinos@13.0.1

==> Error: You can either:
    a) use a more specific spec, or
    b) specify the spec by its hash (e.g. `spack uninstall /hash`), or
    c) use `spack uninstall --all` to uninstall ALL matching specs.
$ spack uninstall /brf
y
==> The following packages will be uninstalled:

    -- linux-ubuntu18.04-x86_64 / gcc@7.5.0 -------------------------
    brfmaty trilinos@13.0.1

==> Do you want to proceed? [y/N] ==> Successfully uninstalled trilinos@13.0.1%gcc@7.5.0~adelus~adios2+amesos+amesos2+anasazi+aztec~basker+belos~boost~chaco~complex~cuda~cuda_rdc~debug~dtk+epetra+epetraext~epetraextbtf~epetraextexperimental~epetraextgraphreorderings~exodus+explicit_template_instantiation~float+fortran~gtest~hdf5~hypre+ifpack+ifpack2~intrepid~intrepid2~ipo~isorropia+kokkos~mesquite~minitensor+ml+mpi+muelu~mumps~nox~openmp~panzer~phalanx~piro~python~rocm~rocm_rdc~rol~rythmos+sacado~scorec~shards+shared~shylu~stk~stokhos~stratimikos~strumpack~suite-sparse~superlu~superlu-dist~teko~tempus~thyra+tpetra~trilinoscouplings~wrapper~x11~zoltan~zoltan2 build_system=cmake build_type=RelWithDebInfo cxxstd=14 gotype=long_long arch=linux-ubuntu18.04-x86_64/brfmaty

Advanced spack find Usage

We will go over some additional uses for the spack find command not already covered in the Installing Spack and Uninstalling Packages sections.

The spack find command can accept what we call “anonymous specs.” These are expressions in spec syntax that do not contain a package name. For example, spack find ^mpich will return every installed package that depends on MPICH, and spack find cppflags="-O3" will return every package which was built with cppflags="-O3".

$ spack find ^mpich
-- linux-ubuntu18.04-x86_64 / gcc@7.5.0 -------------------------
hdf5@1.12.2  trilinos@13.0.1
==> 2 installed packages
$ spack find cppflags=-O3
-- linux-ubuntu18.04-x86_64 / gcc@7.5.0 -------------------------
zlib@1.2.8
==> 1 installed package

The find command can also show which packages were installed explicitly (rather than pulled in as a dependency) using the lowercase -x flag. The uppercase -X flag shows implicit installs only. The find command can also show the path to which a Spack package was installed using the -p flag.

$ spack find -px
-- linux-ubuntu18.04-x86_64 / clang@7.0.0 -----------------------
zlib@1.2.13  /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/clang-7.0.0/zlib-1.2.13-fdbomoa6xopqvfi4a7jvad27yinnw47a

-- linux-ubuntu18.04-x86_64 / gcc@7.5.0 -------------------------
hdf5@1.12.2	 /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/hdf5-1.12.2-3pu63bvsng2suyhyadbo5j2jhze3judm
hdf5@1.12.2	 /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/hdf5-1.12.2-xfftbwlx2fmpxvfzg27vj6hk2pet45f2
hdf5@1.12.2	 /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/hdf5-1.12.2-nc7yve6lcatumow4jja6dvqudot4j2lp
tcl@8.6.12	 /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/tcl-8.6.12-rakrbasefv2odpemtbrfn2qrbpeq4jip
tcl@8.6.12	 /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/tcl-8.6.12-v63n6wxe4a45dbmmpqbmjpfio3z7liej
trilinos@13.0.1	 /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/trilinos-13.0.1-zcxy3l7xnasdsowy4ybfty3whv7nyqk6
zlib@1.2.8	 /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/zlib-1.2.8-tolklcfv6vhiaoyvwr7vbbakns4mawum
zlib@1.2.8	 /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/zlib-1.2.8-zqdhyiyvjrx6lhddpgv4h2nsysowhjxm
zlib@1.2.13	 /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/zlib-1.2.13-2hfr5rbzefrxf6t6kv4trbsl63puaza6
==> 10 installed packages

Customizing Compilers

Spack manages a list of available compilers on the system, detected automatically from the user’s PATH variable. The spack compilers command is an alias for the command spack compiler list.

$ spack compilers
==> Available compilers
-- clang ubuntu18.04-x86_64 -------------------------------------
clang@7.0.0

-- gcc ubuntu18.04-x86_64 ---------------------------------------
gcc@7.5.0  gcc@6.5.0

The compilers are maintained in a YAML file. Later in the tutorial you will learn how to configure compilers by hand for special cases. Spack also has tools to add compilers, and compilers built with Spack can be added to the configuration.

$ spack install gcc@8.4.0
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/libiconv-1.16-ltvovvvjgmlvy4m2pn365cy6p5dysajq
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/libsigsegv-2.13-e262sf6ptgnmyu7zkflzp3ycbdfqz7hf
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/berkeley-db-18.1.40-53fb72wziswrec6tkbjpowshkul2nsk4
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/pkgconf-1.8.0-k2lfw6fht6zvsfihvx3avihboi3uv455
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/zlib-1.2.13-2hfr5rbzefrxf6t6kv4trbsl63puaza6
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/diffutils-3.8-c3uhkcjt7tagz2djrd6r2b6b3c2tia3s
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/ncurses-6.3-zcuawlif55qhuknvbk4jez7xjcxhnydf
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/m4-1.4.19-z7d5q4f2qzxejx4xxdrj45q5gxur6q7b
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/bzip2-1.0.8-cxcrelnw64jh6lvhzb6pfar7nijv6us6
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/readline-8.1.2-kgyvtw5h6mi5nms32x3vzgbw32ymmfwa
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/libtool-2.4.7-bdxu4wnbhlmvj6sh5y7uynrldzepiilz
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/gdbm-1.23-cpmyntybsnm3se7lfnvqosbiqzrcg2kq
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/perl-5.36.0-eydiwimku2cctu6dsom3yvfxxjmqyr4w
==> Installing texinfo-6.5-hdyi7fuh542t3qqvlg54vyuzde2pxdf4
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-texinfo-6.5-hdyi7fuh542t3qqvlg54vyuzde2pxdf4.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/texinfo-6.5/linux-ubuntu18.04-x86_64-gcc-7.5.0-texinfo-6.5-hdyi7fuh542t3qqvlg54vyuzde2pxdf4.spack
==> Extracting texinfo-6.5-hdyi7fuh542t3qqvlg54vyuzde2pxdf4 from binary cache
==> texinfo: Successfully installed texinfo-6.5-hdyi7fuh542t3qqvlg54vyuzde2pxdf4
  Fetch: 0.10s.	 Build: 0.37s.	Total: 0.47s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/texinfo-6.5-hdyi7fuh542t3qqvlg54vyuzde2pxdf4
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/autoconf-2.69-btoteeiz74epw4kulm7aecae4cxraxua
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/automake-1.16.5-rxjqnjw5jkrbym5x4yshogm3f262crre
==> Installing gmp-6.2.1-iowhen4zynaexq7iy4m2hiifo5mrzbrd
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-gmp-6.2.1-iowhen4zynaexq7iy4m2hiifo5mrzbrd.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/gmp-6.2.1/linux-ubuntu18.04-x86_64-gcc-7.5.0-gmp-6.2.1-iowhen4zynaexq7iy4m2hiifo5mrzbrd.spack
==> Extracting gmp-6.2.1-iowhen4zynaexq7iy4m2hiifo5mrzbrd from binary cache
==> gmp: Successfully installed gmp-6.2.1-iowhen4zynaexq7iy4m2hiifo5mrzbrd
  Fetch: 0.02s.	 Build: 0.26s.	Total: 0.28s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/gmp-6.2.1-iowhen4zynaexq7iy4m2hiifo5mrzbrd
==> Installing mpfr-3.1.6-3brr36efadvhnhtggkuoowsko3go7aic
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-mpfr-3.1.6-3brr36efadvhnhtggkuoowsko3go7aic.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/mpfr-3.1.6/linux-ubuntu18.04-x86_64-gcc-7.5.0-mpfr-3.1.6-3brr36efadvhnhtggkuoowsko3go7aic.spack
==> Extracting mpfr-3.1.6-3brr36efadvhnhtggkuoowsko3go7aic from binary cache
==> mpfr: Successfully installed mpfr-3.1.6-3brr36efadvhnhtggkuoowsko3go7aic
  Fetch: 0.01s.	 Build: 0.29s.	Total: 0.30s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/mpfr-3.1.6-3brr36efadvhnhtggkuoowsko3go7aic
==> Installing mpc-1.1.0-l5bs2ru7ylkobccsbz7iw7w5akw7ycsd
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-mpc-1.1.0-l5bs2ru7ylkobccsbz7iw7w5akw7ycsd.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/mpc-1.1.0/linux-ubuntu18.04-x86_64-gcc-7.5.0-mpc-1.1.0-l5bs2ru7ylkobccsbz7iw7w5akw7ycsd.spack
==> Extracting mpc-1.1.0-l5bs2ru7ylkobccsbz7iw7w5akw7ycsd from binary cache
==> mpc: Successfully installed mpc-1.1.0-l5bs2ru7ylkobccsbz7iw7w5akw7ycsd
  Fetch: 0.01s.	 Build: 0.26s.	Total: 0.28s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/mpc-1.1.0-l5bs2ru7ylkobccsbz7iw7w5akw7ycsd
==> Installing gawk-5.1.1-dco3nzdpwnlybuvy7ymfpxobgszskgfr
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-gawk-5.1.1-dco3nzdpwnlybuvy7ymfpxobgszskgfr.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/gawk-5.1.1/linux-ubuntu18.04-x86_64-gcc-7.5.0-gawk-5.1.1-dco3nzdpwnlybuvy7ymfpxobgszskgfr.spack
==> Extracting gawk-5.1.1-dco3nzdpwnlybuvy7ymfpxobgszskgfr from binary cache
==> gawk: Successfully installed gawk-5.1.1-dco3nzdpwnlybuvy7ymfpxobgszskgfr
  Fetch: 0.02s.	 Build: 0.29s.	Total: 0.31s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/gawk-5.1.1-dco3nzdpwnlybuvy7ymfpxobgszskgfr
==> Installing gcc-8.4.0-uobbegc3e3qn7lktajfr53buov2vf72e
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64-gcc-7.5.0-gcc-8.4.0-uobbegc3e3qn7lktajfr53buov2vf72e.spec.json.sig
==> Fetching file:///mirror/build_cache/linux-ubuntu18.04-x86_64/gcc-7.5.0/gcc-8.4.0/linux-ubuntu18.04-x86_64-gcc-7.5.0-gcc-8.4.0-uobbegc3e3qn7lktajfr53buov2vf72e.spack
==> Extracting gcc-8.4.0-uobbegc3e3qn7lktajfr53buov2vf72e from binary cache
==> gcc: Successfully installed gcc-8.4.0-uobbegc3e3qn7lktajfr53buov2vf72e
  Fetch: 0.33s.	 Build: 7.47s.	Total: 7.81s.
[+] /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/gcc-8.4.0-uobbegc3e3qn7lktajfr53buov2vf72e
$ spack find -p gcc
-- linux-ubuntu18.04-x86_64 / gcc@7.5.0 -------------------------
gcc@8.4.0  /home/spack/spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-7.5.0/gcc-8.4.0-uobbegc3e3qn7lktajfr53buov2vf72e
==> 1 installed package

We can add GCC to Spack as an available compiler using the spack compiler add command. This will allow future packages to build with gcc@8.4.0. To avoid having to copy and paste GCC’s path, we can use spack location -i to get the installation prefix.

$ spack compiler add "$(spack location -i gcc@8.4.0)"
==> Added 1 new compiler to /home/spack/.spack/linux/compilers.yaml
    gcc@8.4.0
==> Compilers are defined in the following files:
    /home/spack/.spack/linux/compilers.yaml

We can also remove compilers from our configuration using spack compiler remove <compiler_spec>

$ spack compiler remove gcc@8.4.0
==> Removed compiler gcc@8.4.0