summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGregory Becker <becker33@llnl.gov>2016-11-12 16:28:02 -0700
committerTodd Gamblin <tgamblin@llnl.gov>2016-11-12 16:55:37 -0700
commit7201053f2a95ee25cf9bd82e6d485f3d4d941f18 (patch)
tree4b8726a5c6df586766ed76b20aa04354e6071d15
parent216d269f1d85b9e3aba43009ceda11035ee57430 (diff)
downloadspack-7201053f2a95ee25cf9bd82e6d485f3d4d941f18.tar.gz
spack-7201053f2a95ee25cf9bd82e6d485f3d4d941f18.tar.bz2
spack-7201053f2a95ee25cf9bd82e6d485f3d4d941f18.tar.xz
spack-7201053f2a95ee25cf9bd82e6d485f3d4d941f18.zip
Basic usage step-by-step tutorial
-rw-r--r--lib/spack/docs/Makefile3
-rw-r--r--lib/spack/docs/basic_usage_tutorial.rst1243
-rw-r--r--lib/spack/docs/index.rst1
-rwxr-xr-xshare/spack/qa/run-doc-tests3
4 files changed, 1247 insertions, 3 deletions
diff --git a/lib/spack/docs/Makefile b/lib/spack/docs/Makefile
index 1b56959aad..bcba423d94 100644
--- a/lib/spack/docs/Makefile
+++ b/lib/spack/docs/Makefile
@@ -3,7 +3,8 @@
# You can set these variables from the command line.
SPHINXOPTS = -E
-SPHINXBUILD = sphinx-build
+JOBS ?= $(shell python -c 'import multiprocessing; print multiprocessing.cpu_count()')
+SPHINXBUILD = sphinx-build -j $(JOBS)
PAPER =
BUILDDIR = _build
diff --git a/lib/spack/docs/basic_usage_tutorial.rst b/lib/spack/docs/basic_usage_tutorial.rst
new file mode 100644
index 0000000000..4ec58daeba
--- /dev/null
+++ b/lib/spack/docs/basic_usage_tutorial.rst
@@ -0,0 +1,1243 @@
+.. _basics_tutorial:
+
+=========================================
+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. 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 a cluster running Red Hat
+Enterprise Linux.
+
+.. _basics-tutorial-install:
+
+-------------------
+Installing Packages
+-------------------
+
+Installing a package with Spack is very simple. To install a piece of
+software, simply type ``spack install <package_name>``
+
+.. code-block:: console
+
+ $ spack install libelf
+ ==> Installing libelf
+ ==> Trying to fetch from file:///g/g0/becker33/SC16-spack/spack/var/spack/cache/libelf/libelf-0.8.13.tar.gz
+ curl: (37) Couldn't open file /g/g0/becker33/SC16-spack/spack/var/spack/cache/libelf/libelf-0.8.13.tar.gz
+ ==> Fetching from file:///g/g0/becker33/SC16-spack/spack/var/spack/cache/libelf/libelf-0.8.13.tar.gz failed.
+ ==> Trying to fetch from http://www.mr511.de/software/libelf-0.8.13.tar.gz
+ ################################################################################################################################################################################# 100.0%
+ ==> Staging archive: /g/g0/becker33/SC16-spack/spack/var/spack/stage/libelf-0.8.13-csrt4qxfkhjgn5xg3zjpkir7xdnszl2a/libelf-0.8.13.tar.gz
+ ==> Created stage in /g/g0/becker33/SC16-spack/spack/var/spack/stage/libelf-0.8.13-csrt4qxfkhjgn5xg3zjpkir7xdnszl2a
+ ==> No patches needed for libelf
+ ==> Building libelf [Package]
+ ==> Executing phase : 'install'
+ ==> Successfully installed libelf
+ Fetch: 1.21s. Build: 8.42s. Total: 9.62s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/libelf-0.8.13-csrt4qxfkhjgn5xg3zjpkir7xdnszl2a
+
+
+Spack's spec syntax is the interface by which we can request specific
+configurations of the package. The ``%`` sigil is used to specify
+compilers.
+
+.. code-block:: console
+
+ $ spack install libelf %intel
+ ==> Installing libelf
+ ==> Trying to fetch from file:///g/g0/becker33/SC16-spack/spack/var/spack/cache/libelf/libelf-0.8.13.tar.gz
+ ################################################################################################################################################################################# 100.0%
+ ==> Staging archive: /g/g0/becker33/SC16-spack/spack/var/spack/stage/libelf-0.8.13-7wgp32xksatkvw2tbssmehw2t5tnxndj/libelf-0.8.13.tar.gz
+ ==> Created stage in /g/g0/becker33/SC16-spack/spack/var/spack/stage/libelf-0.8.13-7wgp32xksatkvw2tbssmehw2t5tnxndj
+ ==> No patches needed for libelf
+ ==> Building libelf [Package]
+ ==> Executing phase : 'install'
+ ==> Successfully installed libelf
+ Fetch: 0.09s. Build: 50.64s. Total: 50.72s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/intel-16.0.3/libelf-0.8.13-7wgp32xksatkvw2tbssmehw2t5tnxndj
+
+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 ``libelf``.
+
+.. code-block:: console
+
+ $ spack versions libelf
+ ==> Safe versions (already checksummed):
+ 0.8.13
+ 0.8.12
+ ==> Remote versions (not yet checksummed):
+ 0.8.11
+ 0.8.10
+ 0.8.9
+ 0.8.8
+ 0.8.7
+ 0.8.6
+ 0.8.5
+ 0.8.4
+ 0.8.3
+ 0.8.2
+ 0.8.0
+ 0.7.0
+ 0.6.4
+ 0.5.2
+
+
+The ``@`` sigil is used to specify versions, both of packages and of
+compilers.
+
+.. code-block:: console
+
+ $ spack install libelf @0.8.12
+ ==> Installing libelf
+ ==> Trying to fetch from file:///g/g0/becker33/SC16-spack/spack/var/spack/cache/libelf/libelf-0.8.12.tar.gz
+ curl: (37) Couldn't open file /g/g0/becker33/SC16-spack/spack/var/spack/cache/libelf/libelf-0.8.12.tar.gz
+ ==> Fetching from file:///g/g0/becker33/SC16-spack/spack/var/spack/cache/libelf/libelf-0.8.12.tar.gz failed.
+ ==> Trying to fetch from http://www.mr511.de/software/libelf-0.8.12.tar.gz
+ ################################################################################################################################################################################# 100.0%
+ ==> Staging archive: /g/g0/becker33/SC16-spack/spack/var/spack/stage/libelf-0.8.12-ipggckv6i7h44iryzfa4dwdela32a7fy/libelf-0.8.12.tar.gz
+ ==> Created stage in /g/g0/becker33/SC16-spack/spack/var/spack/stage/libelf-0.8.12-ipggckv6i7h44iryzfa4dwdela32a7fy
+ ==> No patches needed for libelf
+ ==> Building libelf [Package]
+ ==> Executing phase : 'install'
+ ==> Successfully installed libelf
+ Fetch: 1.12s. Build: 7.88s. Total: 9.00s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/libelf-0.8.12-ipggckv6i7h44iryzfa4dwdela32a7fy
+
+
+
+ $ spack install libelf %intel@15.0.4
+ ==> Installing libelf
+ ==> Trying to fetch from file:///g/g0/becker33/SC16-spack/spack/var/spack/cache/libelf/libelf-0.8.13.tar.gz
+ ################################################################################################################################################################################# 100.0%
+ ==> Staging archive: /g/g0/becker33/SC16-spack/spack/var/spack/stage/libelf-0.8.13-w33hrejdyqu2j2gggdswitls2zv6kdsi/libelf-0.8.13.tar.gz
+ ==> Created stage in /g/g0/becker33/SC16-spack/spack/var/spack/stage/libelf-0.8.13-w33hrejdyqu2j2gggdswitls2zv6kdsi
+ ==> No patches needed for libelf
+ ==> Building libelf [Package]
+ ==> Executing phase : 'install'
+ ==> Successfully installed libelf
+ Fetch: 0.09s. Build: 55.51s. Total: 55.60s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/intel-15.0.4/libelf-0.8.13-w33hrejdyqu2j2gggdswitls2zv6kdsi
+
+
+The spec syntax also includes compiler flags. Spack accepts ``cppflags``,
+``cflags``, ``cxxflags``, ``fflags``, ``ldflags``, and ``ldlibs``
+parameters. The values of these fields must be escape-quoted with ``\"``
+on the command line. These values are injected into the compile line
+automatically by the Spack compiler wrappers.
+
+.. code-block:: console
+
+ $ spack install libelf @0.8.12 cppflags=\"-O3\"
+ ==> Installing libelf
+ ==> Trying to fetch from file:///g/g0/becker33/SC16-spack/spack/var/spack/cache/libelf/libelf-0.8.12.tar.gz
+ ################################################################################################################################################################################# 100.0%
+ ==> Staging archive: /g/g0/becker33/SC16-spack/spack/var/spack/stage/libelf-0.8.12-vrv2ttbd34xlfoxy4jwt6qsjrcbalmmw/libelf-0.8.12.tar.gz
+ ==> Created stage in /g/g0/becker33/SC16-spack/spack/var/spack/stage/libelf-0.8.12-vrv2ttbd34xlfoxy4jwt6qsjrcbalmmw
+ ==> No patches needed for libelf
+ ==> Building libelf [Package]
+ ==> Executing phase : 'install'
+ ==> Successfully installed libelf
+ Fetch: 0.04s. Build: 7.95s. Total: 7.99s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/libelf-0.8.12-vrv2ttbd34xlfoxy4jwt6qsjrcbalmmw
+
+
+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.
+
+.. code-block:: console
+
+ $ spack find
+ ==> 5 installed packages.
+ -- linux-redhat6-x86_64 / gcc@4.4.7 -----------------------------
+ libelf@0.8.12
+ libelf@0.8.12
+ libelf@0.8.13
+
+ -- linux-redhat6-x86_64 / intel@15.0.4 --------------------------
+ libelf@0.8.13
+
+ -- linux-redhat6-x86_64 / intel@16.0.3 --------------------------
+ libelf@0.8.13
+
+
+
+ $ spack find -lf
+ ==> 5 installed packages.
+ -- linux-redhat6-x86_64 / gcc@4.4.7 -----------------------------
+ ipggckv libelf@0.8.12%gcc
+
+ vrv2ttb libelf@0.8.12%gcc cppflags="-O3"
+
+ csrt4qx libelf@0.8.13%gcc
+
+
+ -- linux-redhat6-x86_64 / intel@15.0.4 --------------------------
+ w33hrej libelf@0.8.13%intel
+
+
+ -- linux-redhat6-x86_64 / intel@16.0.3 --------------------------
+ 7wgp32x libelf@0.8.13%intel
+
+
+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 only when the
+existing package's hash matches the desired spec.
+
+.. code-block:: console
+
+ $ spack install libdwarf
+ ==> Installing libdwarf
+ ==> libelf is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/libelf-0.8.13-csrt4qxfkhjgn5xg3zjpkir7xdnszl2a
+ ==> Can not find version 20160507 in url_list
+ ==> Trying to fetch from file:///g/g0/becker33/SC16-spack/spack/var/spack/cache/libdwarf/libdwarf-20160507.tar.gz
+ curl: (37) Couldn't open file /g/g0/becker33/SC16-spack/spack/var/spack/cache/libdwarf/libdwarf-20160507.tar.gz
+ ==> Fetching from file:///g/g0/becker33/SC16-spack/spack/var/spack/cache/libdwarf/libdwarf-20160507.tar.gz failed.
+ ==> Trying to fetch from http://www.prevanders.net/libdwarf-20160507.tar.gz
+ ################################################################################################################################################################################# 100.0%
+ ==> Staging archive: /g/g0/becker33/SC16-spack/spack/var/spack/stage/libdwarf-20160507-yfx6p3g3rkmqvcqbmtb34o6pln7pqvcz/libdwarf-20160507.tar.gz
+ ==> Created stage in /g/g0/becker33/SC16-spack/spack/var/spack/stage/libdwarf-20160507-yfx6p3g3rkmqvcqbmtb34o6pln7pqvcz
+ ==> No patches needed for libdwarf
+ ==> Building libdwarf [Package]
+ ==> Executing phase : 'install'
+ ==> Successfully installed libdwarf
+ Fetch: 1.56s. Build: 33.59s. Total: 35.15s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/libdwarf-20160507-yfx6p3g3rkmqvcqbmtb34o6pln7pqvcz
+
+
+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 ``^``.
+
+.. code-block:: console
+
+ $ spack install libdwarf ^libelf @0.8.12 %intel
+ ==> Installing libdwarf
+ ==> Installing libelf
+ ==> Trying to fetch from file:///g/g0/becker33/SC16-spack/spack/var/spack/cache/libelf/libelf-0.8.12.tar.gz
+ ################################################################################################################################################################################# 100.0%
+ ==> Staging archive: /g/g0/becker33/SC16-spack/spack/var/spack/stage/libelf-0.8.12-4blbe3qxqct3ymrfoxxnxysmybvbxay7/libelf-0.8.12.tar.gz
+ ==> Created stage in /g/g0/becker33/SC16-spack/spack/var/spack/stage/libelf-0.8.12-4blbe3qxqct3ymrfoxxnxysmybvbxay7
+ ==> No patches needed for libelf
+ ==> Building libelf [Package]
+ ==> Executing phase : 'install'
+ ==> Successfully installed libelf
+ Fetch: 0.04s. Build: 52.16s. Total: 52.19s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/intel-16.0.3/libelf-0.8.12-4blbe3qxqct3ymrfoxxnxysmybvbxay7
+ ==> Can not find version 20160507 in url_list
+ ==> Trying to fetch from file:///g/g0/becker33/SC16-spack/spack/var/spack/cache/libdwarf/libdwarf-20160507.tar.gz
+ ################################################################################################################################################################################# 100.0%
+ ==> Staging archive: /g/g0/becker33/SC16-spack/spack/var/spack/stage/libdwarf-20160507-csruprgucaujkfkrcywhwou7nbeis5fo/libdwarf-20160507.tar.gz
+ ==> Created stage in /g/g0/becker33/SC16-spack/spack/var/spack/stage/libdwarf-20160507-csruprgucaujkfkrcywhwou7nbeis5fo
+ ==> No patches needed for libdwarf
+ ==> Building libdwarf [Package]
+ ==> Executing phase : 'install'
+ ==> Successfully installed libdwarf
+ Fetch: 0.40s. Build: 2m 17.29s. Total: 2m 17.69s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/intel-16.0.3/libdwarf-20160507-csruprgucaujkfkrcywhwou7nbeis5fo
+
+
+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 libelf (``cppflags=\"-O3\"``) began with
+``vrv2ttb``. 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.
+
+.. code-block:: console
+
+ $ spack install libdwarf ^/vrv2ttb
+ ==> Installing libdwarf
+ ==> libelf is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/libelf-0.8.12-vrv2ttbd34xlfoxy4jwt6qsjrcbalmmw
+ ==> Can not find version 20160507 in url_list
+ ==> Trying to fetch from file:///g/g0/becker33/SC16-spack/spack/var/spack/cache/libdwarf/libdwarf-20160507.tar.gz
+ #################################################################################################################################################################################################################################################### 100.0%
+ ==> Staging archive: /g/g0/becker33/SC16-spack/spack/var/spack/stage/libdwarf-20160507-dtg3tgnp7htccoly26gduqlrgvnwcp5t/libdwarf-20160507.tar.gz
+ ==> Created stage in /g/g0/becker33/SC16-spack/spack/var/spack/stage/libdwarf-20160507-dtg3tgnp7htccoly26gduqlrgvnwcp5t
+ ==> No patches needed for libdwarf
+ ==> Building libdwarf [Package]
+ ==> Executing phase : 'install'
+ ==> Successfully installed libdwarf
+ Fetch: 0.96s. Build: 24.03s. Total: 24.99s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/libdwarf-20160507-dtg3tgnp7htccoly26gduqlrgvnwcp5t
+
+
+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.
+
+.. code-block:: console
+
+ $ spack find -ldf
+ ==> 9 installed packages.
+ -- linux-redhat6-x86_64 / gcc@4.4.7 -----------------------------
+ dtg3tgn libdwarf@20160507%gcc
+ vrv2ttb ^libelf@0.8.12%gcc cppflags="-O3"
+
+ yfx6p3g libdwarf@20160507%gcc
+ csrt4qx ^libelf@0.8.13%gcc
+
+ ipggckv libelf@0.8.12%gcc
+
+ vrv2ttb libelf@0.8.12%gcc cppflags="-O3"
+
+ csrt4qx libelf@0.8.13%gcc
+
+
+ -- linux-redhat6-x86_64 / intel@15.0.4 --------------------------
+ w33hrej libelf@0.8.13%intel
+
+
+ -- linux-redhat6-x86_64 / intel@16.0.3 --------------------------
+ csruprg libdwarf@20160507%intel
+ 4blbe3q ^libelf@0.8.12%intel
+
+ 4blbe3q libelf@0.8.12%intel
+
+ 7wgp32x libelf@0.8.13%intel
+
+
+As we get to more complex packages, full installs will take too long to
+build in the time allotted for this tutorial. Our collaborators at CERN
+have been working on binary caching for Spack, which would allow for very
+fast installs of previously built packages. We are still working out the
+security ramifications of the feature, but it is coming soon.
+
+For now, we will switch to doing "fake" installs. When supplied with the
+``--fake`` flag (primarily used for debugging), Spack computes build
+metadata the same way it normally would, but it does not download the
+source or run the install script for a pacakge. We can use this to
+quickly demonstrate some of the more advanced Spack features in our
+limited tutorial time.
+
+``HDF5`` is an example of a more complicated package, with an MPI
+dependency. If we install it "out of the box," it will build with
+``openmpi``.
+
+.. code-block:: console
+
+ $ spack install --fake hdf5
+ ==> Installing hdf5
+ ==> Installing zlib
+ ==> Building zlib [Package]
+ ==> Successfully installed zlib
+ Fetch: . Build: 0.11s. Total: 0.11s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/zlib-1.2.8-ayc4jq7vxuzge5n444gutvskeytfdruh
+ ==> Installing openmpi
+ ==> Installing hwloc
+ ==> Installing libpciaccess
+ ==> Installing util-macros
+ ==> Building util-macros [Package]
+ ==> Successfully installed util-macros
+ Fetch: . Build: 0.11s. Total: 0.11s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/util-macros-1.19.0-pc6zhs4cnkmg2cv4et4fizsp6scuvacg
+ ==> Installing libtool
+ ==> Installing m4
+ ==> Installing libsigsegv
+ ==> Building libsigsegv [Package]
+ ==> Successfully installed libsigsegv
+ Fetch: . Build: 0.11s. Total: 0.11s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/libsigsegv-2.10-q4cok3yber7lhf3jswg6mysg7oi53unh
+ ==> Building m4 [Package]
+ ==> Successfully installed m4
+ Fetch: . Build: 0.23s. Total: 0.23s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/m4-1.4.17-qijdzvhjyybrtwbqm73vykhmkaqro3je
+ ==> Building libtool [Package]
+ ==> Successfully installed libtool
+ Fetch: . Build: 0.11s. Total: 0.11s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/libtool-2.4.6-rdx5nkfjwlvcanz5il3ys2pe34j4vxx5
+ ==> Installing pkg-config
+ ==> Building pkg-config [Package]
+ ==> Successfully installed pkg-config
+ Fetch: . Build: 0.11s. Total: 0.11s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/pkg-config-0.29.1-wpjnlzahdw6ahkrgmqyeugkj2zhv4tui
+ ==> Building libpciaccess [Package]
+ ==> Successfully installed libpciaccess
+ Fetch: . Build: 0.10s. Total: 0.10s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/libpciaccess-0.13.4-m2f6fpm22rpprq2ihkmfx6llf363264m
+ ==> Building hwloc [Package]
+ ==> Successfully installed hwloc
+ Fetch: . Build: 0.23s. Total: 0.23s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/hwloc-1.11.4-xpb6hbl2hsze25cgdgfnoppn6rchhzaz
+ ==> Building openmpi [Package]
+ ==> Successfully installed openmpi
+ Fetch: . Build: 0.35s. Total: 0.35s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/openmpi-2.0.1-j4cgoq4furxvr73pq72r2qgywgksw3qn
+ ==> Building hdf5 [AutotoolsPackage]
+ ==> Successfully installed hdf5
+ Fetch: . Build: 0.61s. Total: 0.61s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/hdf5-1.10.0-patch1-ezvtnox35albuaxqryuondweyjgeo6es
+
+
+Spack packages can also have variants. Boolean variants can be specified
+using the ``+`` and ``~`` or ``-`` sigils. There are two sigils for
+``False`` 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.
+
+.. code-block:: console
+
+ $ spack install --fake hdf5~mpi
+ ==> Installing hdf5
+ ==> zlib is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/zlib-1.2.8-ayc4jq7vxuzge5n444gutvskeytfdruh
+ ==> Building hdf5 [AutotoolsPackage]
+ ==> Successfully installed hdf5
+ Fetch: . Build: 0.22s. Total: 0.22s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/hdf5-1.10.0-patch1-twppaioxqn6lti4grgopnmhwcq3h2rpw
+
+
+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``, ``mvapich``, 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 safisfied
+by any of several providers.
+
+.. code-block:: console
+
+ $ spack install --fake hdf5+mpi ^mpich
+ ==> Installing hdf5
+ ==> mpich is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/mpich-3.2-5jlp2ndnsb67txggraglu47vjmayx5za
+ ==> zlib is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/zlib-1.2.8-ayc4jq7vxuzge5n444gutvskeytfdruh
+ ==> Building hdf5 [AutotoolsPackage]
+ ==> Successfully installed hdf5
+ Fetch: . Build: 0.38s. Total: 0.38s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/hdf5-1.10.0-patch1-j36yfw25i6gdd3q4vwlupgkpwic4ua6m
+
+
+We'll do a quick check in on what we have installed so far.
+
+.. code-block:: console
+
+ $ spack find -ldf
+ ==> 22 installed packages.
+ -- linux-redhat6-x86_64 / gcc@4.4.7 -----------------------------
+ twppaio hdf5@1.10.0-patch1%gcc
+ ayc4jq7 ^zlib@1.2.8%gcc
+
+ j36yfw2 hdf5@1.10.0-patch1%gcc
+ 5jlp2nd ^mpich@3.2%gcc
+ ayc4jq7 ^zlib@1.2.8%gcc
+
+ ezvtnox hdf5@1.10.0-patch1%gcc
+ j4cgoq4 ^openmpi@2.0.1%gcc
+ xpb6hbl ^hwloc@1.11.4%gcc
+ m2f6fpm ^libpciaccess@0.13.4%gcc
+ ayc4jq7 ^zlib@1.2.8%gcc
+
+ xpb6hbl hwloc@1.11.4%gcc
+ m2f6fpm ^libpciaccess@0.13.4%gcc
+
+ dtg3tgn libdwarf@20160507%gcc
+ vrv2ttb ^libelf@0.8.12%gcc cppflags="-O3"
+
+ yfx6p3g libdwarf@20160507%gcc
+ csrt4qx ^libelf@0.8.13%gcc
+
+ ipggckv libelf@0.8.12%gcc
+
+ vrv2ttb libelf@0.8.12%gcc cppflags="-O3"
+
+ csrt4qx libelf@0.8.13%gcc
+
+ m2f6fpm libpciaccess@0.13.4%gcc
+
+ q4cok3y libsigsegv@2.10%gcc
+
+ rdx5nkf libtool@2.4.6%gcc
+
+ qijdzvh m4@1.4.17%gcc
+ q4cok3y ^libsigsegv@2.10%gcc
+
+ 5jlp2nd mpich@3.2%gcc
+
+ j4cgoq4 openmpi@2.0.1%gcc
+ xpb6hbl ^hwloc@1.11.4%gcc
+ m2f6fpm ^libpciaccess@0.13.4%gcc
+
+ wpjnlza pkg-config@0.29.1%gcc
+
+ pc6zhs4 util-macros@1.19.0%gcc
+
+ ayc4jq7 zlib@1.2.8%gcc
+
+
+ -- linux-redhat6-x86_64 / intel@15.0.4 --------------------------
+ w33hrej libelf@0.8.13%intel
+
+
+ -- linux-redhat6-x86_64 / intel@16.0.3 --------------------------
+ csruprg libdwarf@20160507%intel
+ 4blbe3q ^libelf@0.8.12%intel
+
+ 4blbe3q libelf@0.8.12%intel
+
+ 7wgp32x libelf@0.8.13%intel
+
+
+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.
+
+.. code-block:: console
+
+ $ spack graph hdf5+mpi ^mpich
+ o hdf5
+ |\
+ o | zlib
+ /
+ o mpich
+
+You may also have noticed that there are some packages shown in the
+``spack find -d`` output that we didn't install explicitly. These are
+dependencies that were installed implicitly. A few packages installed
+implicitly are not shown as dependencies in the ``spack find -d``
+output. These are build dependencies. For example, ``libpciaccess`` is a
+dependency of openmpi and requires m4 to build. Spack will build `m4`` as
+part of the installation of ``openmpi``, but it does not become a part of
+the DAG because it is not linked in at run time. Spack handles build
+dependencies differently because of their different (less strict)
+consistency requirements. It is entirely possible to have two packages
+using different versions of a dependency to build, which obviously cannot
+be done with linked dependencies.
+
+``HDF5`` is more complicated than our basic example of libelf and
+libdwarf, but it's still within the realm of software that an experienced
+HPC user could reasonably expect to install given a bit of time. Now
+let's look at a more complicated package.
+
+.. code-block:: console
+
+ $ spack install --fake trilinos
+ ==> Installing trilinos
+ ==> Installing superlu-dist
+ ==> openmpi is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/openmpi-2.0.1-j4cgoq4furxvr73pq72r2qgywgksw3qn
+ ==> Installing parmetis
+ ==> openmpi is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/openmpi-2.0.1-j4cgoq4furxvr73pq72r2qgywgksw3qn
+ ==> Installing cmake
+ ==> Installing bzip2
+ ==> Building bzip2 [Package]
+ ==> Successfully installed bzip2
+ Fetch: . Build: 0.11s. Total: 0.11s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/bzip2-1.0.6-gll2xsahysy7ji5gkmfxwkofdt3mwjhs
+ ==> expat is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/expat-2.2.0-mg5kwd3kluxdgorj32vzbp7aksg3vqej
+ ==> Installing ncurses
+ ==> Building ncurses [Package]
+ ==> Successfully installed ncurses
+ Fetch: . Build: 0.11s. Total: 0.11s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/ncurses-6.0-fttg4astvrtq2buey4wq66tnyu7bgj2c
+ ==> zlib is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/zlib-1.2.8-ayc4jq7vxuzge5n444gutvskeytfdruh
+ ==> Installing openssl
+ ==> zlib is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/zlib-1.2.8-ayc4jq7vxuzge5n444gutvskeytfdruh
+ ==> Building openssl [Package]
+ ==> Successfully installed openssl
+ Fetch: . Build: 0.23s. Total: 0.23s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/openssl-1.0.2j-kt5xyk2dkho6tzadnqlbnbujmljprylg
+ ==> Installing libarchive
+ ==> Installing lzma
+ ==> Building lzma [Package]
+ ==> Successfully installed lzma
+ Fetch: . Build: 0.11s. Total: 0.11s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/lzma-4.32.7-hah2cdo3zbulz6yg5do6dvnfn6en5v5c
+ ==> Installing nettle
+ ==> m4 is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/m4-1.4.17-qijdzvhjyybrtwbqm73vykhmkaqro3je
+ ==> Installing gmp
+ ==> m4 is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/m4-1.4.17-qijdzvhjyybrtwbqm73vykhmkaqro3je
+ ==> Building gmp [AutotoolsPackage]
+ ==> Successfully installed gmp
+ Fetch: . Build: 0.11s. Total: 0.11s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/gmp-6.1.1-uwn4gfdtq3sywy5uf4f7znrh66oybikf
+ ==> Building nettle [Package]
+ ==> Successfully installed nettle
+ Fetch: . Build: 0.18s. Total: 0.18s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/nettle-3.2-w4ieitifcmrldo4ra7as63apagzf56ja
+ ==> bzip2 is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/bzip2-1.0.6-gll2xsahysy7ji5gkmfxwkofdt3mwjhs
+ ==> expat is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/expat-2.2.0-mg5kwd3kluxdgorj32vzbp7aksg3vqej
+ ==> Installing libxml2
+ ==> Installing xz
+ ==> Building xz [Package]
+ ==> Successfully installed xz
+ Fetch: . Build: 0.11s. Total: 0.11s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/xz-5.2.2-bxh6cpyqqozazm5okvjqk23sww3gccnf
+ ==> zlib is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/zlib-1.2.8-ayc4jq7vxuzge5n444gutvskeytfdruh
+ ==> Building libxml2 [Package]
+ ==> Successfully installed libxml2
+ Fetch: . Build: 0.35s. Total: 0.35s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/libxml2-2.9.4-un323rppyu5qipkegyf7flmymvtmunrx
+ ==> zlib is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/zlib-1.2.8-ayc4jq7vxuzge5n444gutvskeytfdruh
+ ==> Installing lz4
+ ==> Building lz4 [Package]
+ ==> Successfully installed lz4
+ Fetch: . Build: 0.12s. Total: 0.12s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/lz4-131-ivy2fcaw7ywujx74weebdi5bsm7q4vkc
+ ==> openssl is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/openssl-1.0.2j-kt5xyk2dkho6tzadnqlbnbujmljprylg
+ ==> xz is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/xz-5.2.2-bxh6cpyqqozazm5okvjqk23sww3gccnf
+ ==> Installing lzo
+ ==> Building lzo [AutotoolsPackage]
+ ==> Successfully installed lzo
+ Fetch: . Build: 0.11s. Total: 0.11s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/lzo-2.09-dlgnm74ozo6baactkft5oah2jre2ri2i
+ ==> Building libarchive [Package]
+ ==> Successfully installed libarchive
+ Fetch: . Build: 1.35s. Total: 1.35s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/libarchive-3.2.1-biq3kebw7vel7njusill7vv7mjldkqjv
+ ==> xz is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/xz-5.2.2-bxh6cpyqqozazm5okvjqk23sww3gccnf
+ ==> Installing curl
+ ==> zlib is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/zlib-1.2.8-ayc4jq7vxuzge5n444gutvskeytfdruh
+ ==> openssl is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/openssl-1.0.2j-kt5xyk2dkho6tzadnqlbnbujmljprylg
+ ==> Building curl [Package]
+ ==> Successfully installed curl
+ Fetch: . Build: 0.36s. Total: 0.36s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/curl-7.50.3-oze4gqutj4x2isbkcn5ob2bhhxbskod4
+ ==> Building cmake [Package]
+ ==> Successfully installed cmake
+ Fetch: . Build: 1.64s. Total: 1.64s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/cmake-3.6.1-n2nkknrku6dvuneo3rjumim7axt7n36e
+ ==> Installing metis
+ ==> cmake is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/cmake-3.6.1-n2nkknrku6dvuneo3rjumim7axt7n36e
+ ==> Building metis [Package]
+ ==> Successfully installed metis
+ Fetch: . Build: 0.11s. Total: 0.11s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/metis-5.1.0-ithifyl4xvqbn76js23wsb4tjnztrbdv
+ ==> Building parmetis [Package]
+ ==> Successfully installed parmetis
+ Fetch: . Build: 0.62s. Total: 0.62s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/parmetis-4.0.3-rtg6hml5t6acdcnxomn3l5zfiful4d2t
+ ==> Installing openblas
+ ==> Building openblas [Package]
+ ==> Successfully installed openblas
+ Fetch: . Build: 0.11s. Total: 0.11s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/openblas-0.2.19-bwofa7fhff6od5zn56vy3j4eeyupsqgt
+ ==> metis is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/metis-5.1.0-ithifyl4xvqbn76js23wsb4tjnztrbdv
+ ==> Building superlu-dist [Package]
+ ==> Successfully installed superlu-dist
+ Fetch: . Build: 0.85s. Total: 0.85s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/superlu-dist-5.1.1-25r6jlvkpjnkiuwt2rtbzhk3l3htuxs7
+ ==> cmake is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/cmake-3.6.1-n2nkknrku6dvuneo3rjumim7axt7n36e
+ ==> Installing glm
+ ==> cmake is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/cmake-3.6.1-n2nkknrku6dvuneo3rjumim7axt7n36e
+ ==> Building glm [Package]
+ ==> Successfully installed glm
+ Fetch: . Build: 0.12s. Total: 0.12s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/glm-0.9.7.1-7a6oho4aerz7vftxd5ur7lywscht2iry
+ ==> Installing hypre
+ ==> openmpi is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/openmpi-2.0.1-j4cgoq4furxvr73pq72r2qgywgksw3qn
+ ==> openblas is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/openblas-0.2.19-bwofa7fhff6od5zn56vy3j4eeyupsqgt
+ ==> Building hypre [Package]
+ ==> Successfully installed hypre
+ Fetch: . Build: 0.61s. Total: 0.61s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/hypre-2.11.1-lf7hcejiiww5peesh57quda72z67veit
+ ==> metis is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/metis-5.1.0-ithifyl4xvqbn76js23wsb4tjnztrbdv
+ ==> Installing netlib-scalapack
+ ==> openmpi is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/openmpi-2.0.1-j4cgoq4furxvr73pq72r2qgywgksw3qn
+ ==> cmake is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/cmake-3.6.1-n2nkknrku6dvuneo3rjumim7axt7n36e
+ ==> openblas is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/openblas-0.2.19-bwofa7fhff6od5zn56vy3j4eeyupsqgt
+ ==> Building netlib-scalapack [Package]
+ ==> Successfully installed netlib-scalapack
+ Fetch: . Build: 0.61s. Total: 0.61s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/netlib-scalapack-2.0.2-dvcanz2qq4dfcexznbhbmzbxfj43uz4q
+ ==> Installing suite-sparse
+ ==> Installing tbb
+ ==> Building tbb [Package]
+ ==> Successfully installed tbb
+ Fetch: . Build: 0.12s. Total: 0.12s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/tbb-4.4.4-zawzkkhrmdonbjpj3a5bb6gkgnqlrjeu
+ ==> openblas is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/openblas-0.2.19-bwofa7fhff6od5zn56vy3j4eeyupsqgt
+ ==> metis is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/metis-5.1.0-ithifyl4xvqbn76js23wsb4tjnztrbdv
+ ==> Building suite-sparse [Package]
+ ==> Successfully installed suite-sparse
+ Fetch: . Build: 0.49s. Total: 0.49s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/suite-sparse-4.5.3-lvur6hriy2j7xfjwh5punp3exwpynzm6
+ ==> openmpi is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/openmpi-2.0.1-j4cgoq4furxvr73pq72r2qgywgksw3qn
+ ==> Installing netcdf
+ ==> m4 is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/m4-1.4.17-qijdzvhjyybrtwbqm73vykhmkaqro3je
+ ==> curl is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/curl-7.50.3-oze4gqutj4x2isbkcn5ob2bhhxbskod4
+ ==> zlib is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/zlib-1.2.8-ayc4jq7vxuzge5n444gutvskeytfdruh
+ ==> hdf5 is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/hdf5-1.10.0-patch1-ezvtnox35albuaxqryuondweyjgeo6es
+ ==> Building netcdf [Package]
+ ==> Successfully installed netcdf
+ Fetch: . Build: 0.90s. Total: 0.90s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/netcdf-4.4.1-tcl4zbrmdfrit2cqlaxig6xieu5h552j
+ ==> Installing mumps
+ ==> netlib-scalapack is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/netlib-scalapack-2.0.2-dvcanz2qq4dfcexznbhbmzbxfj43uz4q
+ ==> openmpi is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/openmpi-2.0.1-j4cgoq4furxvr73pq72r2qgywgksw3qn
+ ==> openblas is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/openblas-0.2.19-bwofa7fhff6od5zn56vy3j4eeyupsqgt
+ ==> Building mumps [Package]
+ ==> Successfully installed mumps
+ Fetch: . Build: 0.74s. Total: 0.74s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/mumps-5.0.2-kr5r4nnx5tfcacxnk3ii5dsxbe6pu5fy
+ ==> Installing matio
+ ==> Building matio [Package]
+ ==> Successfully installed matio
+ Fetch: . Build: 0.11s. Total: 0.11s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/matio-1.5.2-4zrozucookychlvc4q53omp2zyfk2bed
+ ==> Installing boost
+ ==> bzip2 is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/bzip2-1.0.6-gll2xsahysy7ji5gkmfxwkofdt3mwjhs
+ ==> zlib is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/zlib-1.2.8-ayc4jq7vxuzge5n444gutvskeytfdruh
+ ==> Building boost [Package]
+ ==> Successfully installed boost
+ Fetch: . Build: 0.35s. Total: 0.35s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/boost-1.62.0-je7eqvzt74kezwhh55y5lwt5dy6pnali
+ ==> parmetis is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/parmetis-4.0.3-rtg6hml5t6acdcnxomn3l5zfiful4d2t
+ ==> openblas is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/openblas-0.2.19-bwofa7fhff6od5zn56vy3j4eeyupsqgt
+ ==> hdf5 is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/hdf5-1.10.0-patch1-ezvtnox35albuaxqryuondweyjgeo6es
+ ==> Building trilinos [Package]
+ ==> Successfully installed trilinos
+ Fetch: . Build: 2.63s. Total: 2.63s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/trilinos-12.8.1-uvd6dfd7x4uyvck4awo3r3frudihn4ar
+
+
+Now we're starting to see the power of Spack. Trilinos has 11 top level
+dependecies, 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 fake installation for the tutorial, a real
+installation of trilinos using Spack takes about 3 hours (depending on
+the system), but only 20 seconds of programmer time.
+
+Spack manages constistency 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``:
+
+.. code-block:: console
+
+ $ spack install --fake trilinos ^hdf5+mpi ^mpich
+ ==> Installing trilinos
+ ==> Installing superlu-dist
+ ==> mpich is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/mpich-3.2-5jlp2ndnsb67txggraglu47vjmayx5za
+ ==> metis is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/metis-5.1.0-ithifyl4xvqbn76js23wsb4tjnztrbdv
+ ==> Installing parmetis
+ ==> mpich is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/mpich-3.2-5jlp2ndnsb67txggraglu47vjmayx5za
+ ==> metis is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/metis-5.1.0-ithifyl4xvqbn76js23wsb4tjnztrbdv
+ ==> cmake is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/cmake-3.6.1-n2nkknrku6dvuneo3rjumim7axt7n36e
+ ==> Building parmetis [Package]
+ ==> Successfully installed parmetis
+ Fetch: . Build: 0.38s. Total: 0.38s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/parmetis-4.0.3-43kbtni6p5y446c6qdkybq4htj7ot4zn
+ ==> openblas is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/openblas-0.2.19-bwofa7fhff6od5zn56vy3j4eeyupsqgt
+ ==> Building superlu-dist [Package]
+ ==> Successfully installed superlu-dist
+ Fetch: . Build: 0.61s. Total: 0.61s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/superlu-dist-5.1.1-46uuupehmonx5jicc6xnegnud2n5jqyl
+ ==> cmake is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/cmake-3.6.1-n2nkknrku6dvuneo3rjumim7axt7n36e
+ ==> glm is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/glm-0.9.7.1-7a6oho4aerz7vftxd5ur7lywscht2iry
+ ==> Installing hypre
+ ==> mpich is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/mpich-3.2-5jlp2ndnsb67txggraglu47vjmayx5za
+ ==> openblas is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/openblas-0.2.19-bwofa7fhff6od5zn56vy3j4eeyupsqgt
+ ==> Building hypre [Package]
+ ==> Successfully installed hypre
+ Fetch: . Build: 0.37s. Total: 0.37s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/hypre-2.11.1-6ajnyymoivs5apajd7thjisae36jv4lz
+ ==> metis is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/metis-5.1.0-ithifyl4xvqbn76js23wsb4tjnztrbdv
+ ==> Installing netlib-scalapack
+ ==> mpich is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/mpich-3.2-5jlp2ndnsb67txggraglu47vjmayx5za
+ ==> cmake is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/cmake-3.6.1-n2nkknrku6dvuneo3rjumim7axt7n36e
+ ==> openblas is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/openblas-0.2.19-bwofa7fhff6od5zn56vy3j4eeyupsqgt
+ ==> Building netlib-scalapack [Package]
+ ==> Successfully installed netlib-scalapack
+ Fetch: . Build: 0.37s. Total: 0.37s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/netlib-scalapack-2.0.2-dayeep27omm26wksd3iqvbu3gezc2eoh
+ ==> suite-sparse is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/suite-sparse-4.5.3-lvur6hriy2j7xfjwh5punp3exwpynzm6
+ ==> Installing netcdf
+ ==> m4 is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/m4-1.4.17-qijdzvhjyybrtwbqm73vykhmkaqro3je
+ ==> curl is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/curl-7.50.3-oze4gqutj4x2isbkcn5ob2bhhxbskod4
+ ==> zlib is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/zlib-1.2.8-ayc4jq7vxuzge5n444gutvskeytfdruh
+ ==> hdf5 is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/hdf5-1.10.0-patch1-j36yfw25i6gdd3q4vwlupgkpwic4ua6m
+ ==> Building netcdf [Package]
+ ==> Successfully installed netcdf
+ Fetch: . Build: 0.67s. Total: 0.67s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/netcdf-4.4.1-gfemi4jk4qltvp33xhtpkam7dozbqvhq
+ ==> Installing mumps
+ ==> mpich is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/mpich-3.2-5jlp2ndnsb67txggraglu47vjmayx5za
+ ==> netlib-scalapack is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/netlib-scalapack-2.0.2-dayeep27omm26wksd3iqvbu3gezc2eoh
+ ==> openblas is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/openblas-0.2.19-bwofa7fhff6od5zn56vy3j4eeyupsqgt
+ ==> Building mumps [Package]
+ ==> Successfully installed mumps
+ Fetch: . Build: 0.49s. Total: 0.49s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/mumps-5.0.2-w7t5pl3jhhwitfiyer63zj6zv7idkt3m
+ ==> mpich is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/mpich-3.2-5jlp2ndnsb67txggraglu47vjmayx5za
+ ==> matio is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/matio-1.5.2-4zrozucookychlvc4q53omp2zyfk2bed
+ ==> boost is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/boost-1.62.0-je7eqvzt74kezwhh55y5lwt5dy6pnali
+ ==> parmetis is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/parmetis-4.0.3-43kbtni6p5y446c6qdkybq4htj7ot4zn
+ ==> openblas is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/openblas-0.2.19-bwofa7fhff6od5zn56vy3j4eeyupsqgt
+ ==> hdf5 is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/hdf5-1.10.0-patch1-j36yfw25i6gdd3q4vwlupgkpwic4ua6m
+ ==> Building trilinos [Package]
+ ==> Successfully installed trilinos
+ Fetch: . Build: 2.42s. Total: 2.42s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/trilinos-12.8.1-ffwrpxnq7lhiw2abxn2u7ffr4jjsdwep
+
+We see that every package in the trilinos DAG that depends on MPI now
+uses ``mpich``.
+
+.. code-block:: console
+
+ $ spack find -d trilinos
+ ==> 2 installed packages.
+ -- linux-redhat6-x86_64 / gcc@4.4.7 -----------------------------
+ trilinos@12.8.1
+ ^boost@1.62.0
+ ^bzip2@1.0.6
+ ^zlib@1.2.8
+ ^glm@0.9.7.1
+ ^hdf5@1.10.0-patch1
+ ^mpich@3.2
+ ^hypre@2.11.1
+ ^openblas@0.2.19
+ ^matio@1.5.2
+ ^metis@5.1.0
+ ^mumps@5.0.2
+ ^netlib-scalapack@2.0.2
+ ^netcdf@4.4.1
+ ^curl@7.50.3
+ ^openssl@1.0.2j
+ ^parmetis@4.0.3
+ ^suite-sparse@4.5.3
+ ^tbb@4.4.4
+ ^superlu-dist@5.1.1
+
+ trilinos@12.8.1
+ ^boost@1.62.0
+ ^bzip2@1.0.6
+ ^zlib@1.2.8
+ ^glm@0.9.7.1
+ ^hdf5@1.10.0-patch1
+ ^openmpi@2.0.1
+ ^hwloc@1.11.4
+ ^libpciaccess@0.13.4
+ ^hypre@2.11.1
+ ^openblas@0.2.19
+ ^matio@1.5.2
+ ^metis@5.1.0
+ ^mumps@5.0.2
+ ^netlib-scalapack@2.0.2
+ ^netcdf@4.4.1
+ ^curl@7.50.3
+ ^openssl@1.0.2j
+ ^parmetis@4.0.3
+ ^suite-sparse@4.5.3
+ ^tbb@4.4.4
+ ^superlu-dist@5.1.1
+
+
+The ``spack find -d`` command shows the dependency information as a
+tree. While that is often sufficient, many complicated packages cannot be
+fully represented as a tree. Again, the ``spack graph`` command shows the
+full DAG of the dependency information.
+
+.. code-block:: console
+
+ $ spack graph trilinos
+ o trilinos
+ |\
+ | |\
+ | | |\
+ | | | |\
+ | | | | |\
+ | | | | | |\
+ | | | | | | |\
+ | o | | | | | | netcdf
+ | |\ \ \ \ \ \ \
+ | | |\ \ \ \ \ \ \
+ | | | o | | | | | | curl
+ | | |/| | | | | | |
+ | |/| | | | | | | |
+ | | | o | | | | | | openssl
+ | | |/ / / / / / /
+ | |/| | | | | | |
+ | | o | | | | | | hdf5
+ | |/| | | | | | |
+ | | |/ / / / / /
+ | o | | | | | | zlib
+ | / / / / / /
+ o | | | | | | swig
+ o | | | | | | pcre
+ / / / / / /
+ o | | | | | mpi
+ / / / / /
+ o | | | | matio
+ / / / /
+ o | | | lapack
+ / / /
+ o | | glm
+ / /
+ o | boost
+ /
+ o blas
+
+
+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.
+
+.. code-block:: console
+
+ $ spack graph --dot trilinos | dot -Tpdf trilinos_graph.pdf
+
+.. _basics-tutorial-uninstall:
+
+---------------------
+Uninstalling Packages
+---------------------
+
+Earlier we installed many configurations each of libelf and
+libdwarf. Now we will go through and uninstall some of those packages
+that we didn't really need.
+
+.. code-block:: console
+
+ $ spack find -d libdwarf
+ ==> 3 installed packages.
+ -- linux-redhat6-x86_64 / gcc@4.4.7 -----------------------------
+ libdwarf@20160507
+ ^libelf@0.8.12
+
+ libdwarf@20160507
+ ^libelf@0.8.13
+
+
+ -- linux-redhat6-x86_64 / intel@16.0.3 --------------------------
+ libdwarf@20160507
+ ^libelf@0.8.12
+
+ $ spack find libelf
+ ==> 6 installed packages.
+ -- linux-redhat6-x86_64 / gcc@4.4.7 -----------------------------
+ libelf@0.8.12
+ libelf@0.8.12
+ libelf@0.8.13
+
+ -- linux-redhat6-x86_64 / intel@15.0.4 --------------------------
+ libelf@0.8.13
+
+ -- linux-redhat6-x86_64 / intel@16.0.3 --------------------------
+ libelf@0.8.12
+ libelf@0.8.13
+
+
+We can uninstall packages by spec using the same syntax as install.
+
+.. code-block:: console
+
+ $ spack uninstall libelf%intel@15.0.4
+ ==> The following packages will be uninstalled :
+
+ -- linux-redhat6-x86_64 / intel@15.0.4 --------------------------
+ w33hrej libelf@0.8.13%intel
+
+
+ ==> Do you want to proceed ? [y/n]
+ y
+ ==> Successfully uninstalled libelf@0.8.13%intel@15.0.4 arch=linux-redhat6-x86_64-w33hrej
+
+
+
+ $ spack find -lf libelf
+ ==> 5 installed packages.
+ -- linux-redhat6-x86_64 / gcc@4.4.7 -----------------------------
+ ipggckv libelf@0.8.12%gcc
+
+ vrv2ttb libelf@0.8.12%gcc cppflags="-O3"
+
+ csrt4qx libelf@0.8.13%gcc
+
+
+ -- linux-redhat6-x86_64 / intel@16.0.3 --------------------------
+ 4blbe3q libelf@0.8.12%intel
+
+ 7wgp32x libelf@0.8.13%intel
+
+
+We can uninstall packages by referring only to their hash.
+
+
+We can use either ``-f`` (force) or ``-d`` (remove dependents as well) to
+remove packages that are required by another installed package.
+
+
+ $ spack uninstall /4blb
+ ==> Error: Will not uninstall libelf@0.8.12%intel@16.0.3-4blbe3q
+
+ The following packages depend on it:
+ -- linux-redhat6-x86_64 / intel@16.0.3 --------------------------
+ csruprg libdwarf@20160507%intel
+
+
+ ==> Error: You can use spack uninstall --dependents to uninstall these dependencies as well
+ $ spack uninstall -d /4blb
+ ==> The following packages will be uninstalled :
+
+ -- linux-redhat6-x86_64 / intel@16.0.3 --------------------------
+ csruprg libdwarf@20160507%intel
+
+ 4blbe3q libelf@0.8.12%intel
+
+
+ ==> Do you want to proceed ? [y/n]
+ y
+ ==> Successfully uninstalled libdwarf@20160507%intel@16.0.3 arch=linux-redhat6-x86_64-csruprg
+ ==> Successfully uninstalled libelf@0.8.12%intel@16.0.3 arch=linux-redhat6-x86_64-4blbe3q
+
+
+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-redhat6-x86_64 / gcc@4.4.7 -----------------------------
+ ffwrpxn trilinos@12.8.1%gcc+boost~debug+hdf5+hypre+metis+mumps~python+shared+suite-sparse+superlu-dist
+
+ uvd6dfd trilinos@12.8.1%gcc+boost~debug+hdf5+hypre+metis+mumps~python+shared+suite-sparse+superlu-dist
+
+
+ ==> Error: You can either:
+ a) Use a more specific spec, or
+ b) use spack uninstall -a to uninstall ALL matching specs.
+
+
+
+ $ spack uninstall /ffwr
+ ==> The following packages will be uninstalled :
+
+ -- linux-redhat6-x86_64 / gcc@4.4.7 -----------------------------
+ ffwrpxn trilinos@12.8.1%gcc+boost~debug+hdf5+hypre+metis+mumps~python+shared+suite-sparse+superlu-dist
+
+
+ ==> Do you want to proceed ? [y/n]
+ y
+ ==> Successfully uninstalled trilinos@12.8.1%gcc@4.4.7+boost~debug+hdf5+hypre+metis+mumps~python+shared+suite-sparse+superlu-dist arch=linux-redhat6-x86_64-ffwrpxn
+
+-----------------------------
+Advanced ``spack find`` Usage
+-----------------------------
+
+We will go over some additional uses for the `spack find` command not
+already covered in the :ref:`basics-tutorial-install` and
+:ref:`basics-tutorial-uninstall` sections.
+
+Spack find can accept what we call "anonymous specs." These are
+expressions in spec syntax that do not contain a package name. For
+example, `spack find %intel` will return every package built with the
+intel compiler, and ``spack find cppflags=\\"-O3\\"`` will return every
+package which was built with ``cppflags=\\"-O3\\"``.
+
+.. code-block:: console
+
+ $ spack find %intel
+ ==> 1 installed packages.
+ -- linux-redhat6-x86_64 / intel@16.0.3 --------------------------
+ libelf@0.8.13
+
+
+
+ $ spack find cppflags=\"-O3\"
+ ==> 1 installed packages.
+ -- linux-redhat6-x86_64 / gcc@4.4.7 -----------------------------
+ libelf@0.8.12
+
+
+The find command can also show which packages were installed
+explicitly (rather than pulled in as a dependency) using the ``-e``
+flag. The ``-E`` flag shows implicit installs only. The find command can
+also show the path to which a spack package was installed using the ``-p``
+command.
+
+.. code-block:: console
+
+ $ spack find -pe
+ ==> 10 installed packages.
+ -- linux-redhat6-x86_64 / gcc@4.4.7 -----------------------------
+ hdf5@1.10.0-patch1 /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/hdf5-1.10.0-patch1-twppaioxqn6lti4grgopnmhwcq3h2rpw
+ hdf5@1.10.0-patch1 /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/hdf5-1.10.0-patch1-j36yfw25i6gdd3q4vwlupgkpwic4ua6m
+ hdf5@1.10.0-patch1 /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/hdf5-1.10.0-patch1-ezvtnox35albuaxqryuondweyjgeo6es
+ libdwarf@20160507 /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/libdwarf-20160507-dtg3tgnp7htccoly26gduqlrgvnwcp5t
+ libdwarf@20160507 /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/libdwarf-20160507-yfx6p3g3rkmqvcqbmtb34o6pln7pqvcz
+ libelf@0.8.12 /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/libelf-0.8.12-ipggckv6i7h44iryzfa4dwdela32a7fy
+ libelf@0.8.12 /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/libelf-0.8.12-vrv2ttbd34xlfoxy4jwt6qsjrcbalmmw
+ libelf@0.8.13 /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/libelf-0.8.13-csrt4qxfkhjgn5xg3zjpkir7xdnszl2a
+ trilinos@12.8.1 /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/trilinos-12.8.1-uvd6dfd7x4uyvck4awo3r3frudihn4ar
+
+ -- linux-redhat6-x86_64 / intel@16.0.3 --------------------------
+ libelf@0.8.13 /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/intel-16.0.3/libelf-0.8.13-7wgp32xksatkvw2tbssmehw2t5tnxndj
+
+
+---------------------
+Customizing Compilers
+---------------------
+
+
+Spack manages a list of available compilers on the system, detected
+automatically from from the user's ``PATH`` variable. The ``spack
+compilers`` command is an alias for the command ``spack compiler list``.
+
+.. code-block:: console
+
+ $ spack compilers
+ ==> Available compilers
+ -- gcc ----------------------------------------------------------
+ gcc@4.4.7
+
+ -- intel --------------------------------------------------------
+ intel@16.0.3
+ intel@16.0.2
+ intel@16.0.1
+ intel@16.0.0
+ intel@15.0.4
+ intel@15.0.3
+ intel@15.0.1
+ intel@15.0.0
+ intel@14.0.4
+ intel@14.0.3
+ intel@14.0.2
+ intel@14.0.1
+ intel@14.0.0
+ intel@13.1.1
+ intel@13.1.0
+ intel@13.0.1
+ intel@13.0.0
+ intel@12.1.5
+ intel@12.1.3
+ intel@12.1.2
+ intel@12.1.0
+ intel@12.0.4
+ intel@11.1
+ intel@10.1
+ intel@10.0
+ intel@9.1
+
+ -- pgi ----------------------------------------------------------
+ pgi@16.5-0
+ pgi@16.3-0
+ pgi@16.1-0
+ pgi@15.10-0
+ pgi@15.7-0
+ pgi@15.5-0
+ pgi@15.1-0
+ pgi@14.10-0
+ pgi@14.7-0
+ pgi@14.3-0
+ pgi@13.10-0
+ pgi@13.6-0
+ pgi@13.2-0
+ pgi@13.1-1
+ pgi@12.8-0
+ pgi@12.1-0
+ pgi@11.10-0
+ pgi@11.1-0
+ pgi@10.9-0
+ pgi@10.2-0
+ pgi@9.0-4
+ pgi@8.0-1
+ pgi@7.1-3
+ pgi@7.0-6
+
+
+The compilers are maintained in a YAML file that can be hand-edited
+for special cases. Spack also has tools to add compilers, and
+compilers built with Spack can be added to the configuration.
+
+.. code-block:: console
+
+ $ spack install --fake gcc@6.1.0
+ ==> Installing gcc
+ ==> gmp is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/gmp-6.1.1-uwn4gfdtq3sywy5uf4f7znrh66oybikf
+ ==> Installing isl
+ ==> gmp is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/gmp-6.1.1-uwn4gfdtq3sywy5uf4f7znrh66oybikf
+ ==> Building isl [Package]
+ ==> Successfully installed isl
+ Fetch: . Build: 0.19s. Total: 0.19s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/isl-0.14-hs2w7mjjjaakkmbbv5yvfqf7yyzhorl6
+ ==> Installing mpc
+ ==> gmp is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/gmp-6.1.1-uwn4gfdtq3sywy5uf4f7znrh66oybikf
+ ==> Installing mpfr
+ ==> gmp is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/gmp-6.1.1-uwn4gfdtq3sywy5uf4f7znrh66oybikf
+ ==> Building mpfr [Package]
+ ==> Successfully installed mpfr
+ Fetch: . Build: 0.17s. Total: 0.17s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/mpfr-3.1.4-7kt5ij437khredfq4bvnyu22t3fmtfvt
+ ==> Building mpc [Package]
+ ==> Successfully installed mpc
+ Fetch: . Build: 0.28s. Total: 0.28s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/mpc-1.0.3-g5taq6lt3zuy5l2jtggi5lctxnl4la5u
+ ==> Installing binutils
+ ==> m4 is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/m4-1.4.17-qijdzvhjyybrtwbqm73vykhmkaqro3je
+ ==> Installing bison
+ ==> m4 is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/m4-1.4.17-qijdzvhjyybrtwbqm73vykhmkaqro3je
+ ==> Building bison [Package]
+ ==> Successfully installed bison
+ Fetch: . Build: 0.12s. Total: 0.12s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/bison-3.0.4-hkhfysfvq5l6rsns67g2htmkpxauvnwa
+ ==> Installing flex
+ ==> m4 is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/m4-1.4.17-qijdzvhjyybrtwbqm73vykhmkaqro3je
+ ==> bison is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/bison-3.0.4-hkhfysfvq5l6rsns67g2htmkpxauvnwa
+ ==> Building flex [Package]
+ ==> Successfully installed flex
+ Fetch: . Build: 0.11s. Total: 0.11s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/flex-2.6.0-qd6d73rdfrozdrsdpimvl4tj7d5ps7qg
+ ==> Building binutils [Package]
+ ==> Successfully installed binutils
+ Fetch: . Build: 0.11s. Total: 0.11s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/binutils-2.27-iq2hry3gvaxszmwwbnll7njgdgaek56o
+ ==> mpfr is already installed in /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/mpfr-3.1.4-7kt5ij437khredfq4bvnyu22t3fmtfvt
+ ==> Building gcc [Package]
+ ==> Successfully installed gcc
+ Fetch: . Build: 0.66s. Total: 0.66s.
+ [+] /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/gcc-6.1.0-j5576zbsot2ydljlthjzhsirsesnogvh
+
+
+
+ $ spack find -p gcc
+ ==> 1 installed packages.
+ -- linux-redhat6-x86_64 / gcc@4.4.7 -----------------------------
+ gcc@6.1.0 /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/gcc-6.1.0-j5576zbsot2ydljlthjzhsirsesnogvh
+
+
+If we had done a "real" install of gcc, we could add it to our
+configuration now using the `spack compiler add` command, but we would
+also be waiting for it to install. If we run the command now, it will
+return no new compilers.
+
+.. code-block:: console
+
+ $ spack compiler find /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/gcc-6.1.0-j5576zbsot2ydljlthjzhsirsesnogvh/bin
+ ==> Found no new compilers
+
+If we had done a real install, the output would have been as follows:
+
+.. code-block:: console
+
+ $ spack compiler find /g/g0/becker33/SC16-spack/spack/opt/spack/linux-redhat6-x86_64/gcc-4.4.7/gcc-6.1.0-j5576zbsot2ydljlthjzhsirsesnogvh/bin
+ ==> Added 1 new compiler to /g/g0/becker33/.spack/linux/compilers.yaml
+ gcc@6.1.0
diff --git a/lib/spack/docs/index.rst b/lib/spack/docs/index.rst
index dfce28c185..65fb995d1e 100644
--- a/lib/spack/docs/index.rst
+++ b/lib/spack/docs/index.rst
@@ -63,6 +63,7 @@ or refer to the full manual below.
:maxdepth: 2
:caption: Step-by-step
+ basic_usage_tutorial
module_file_tutorial
package_tutorial
diff --git a/share/spack/qa/run-doc-tests b/share/spack/qa/run-doc-tests
index dbf46c71aa..ca892d7eb4 100755
--- a/share/spack/qa/run-doc-tests
+++ b/share/spack/qa/run-doc-tests
@@ -38,5 +38,4 @@ cd "$DOC_DIR"
# Treat warnings as fatal errors
make clean --silent
-make SPHINXOPTS=-W
-
+make SPHINXOPTS=-W JOBS=1