From 847703c13d0fd69be0b06d355308c47f4a060e66 Mon Sep 17 00:00:00 2001
From: Todd Gamblin <tgamblin@llnl.gov>
Date: Fri, 25 Oct 2019 21:49:27 -0700
Subject: [PATCH] tutorial: move tutorial to standalone site (#13450)

* docs: add a spack environment for building the docs

* docs: remove tutorial and link to spack-tutorial.readthedocs.io

The tutorial now has its own standalone website, versioned by instances
of the tutorial.  Link to that instead of versioning it directly with Spack.
---
 lib/spack/docs/.gitignore                     |    2 +
 lib/spack/docs/build_systems/intelpackage.rst |   10 +-
 lib/spack/docs/conf.py                        |    2 +-
 lib/spack/docs/index.rst                      |    2 +-
 lib/spack/docs/spack.yaml                     |   19 +
 lib/spack/docs/tutorial.rst                   |   75 -
 lib/spack/docs/tutorial/examples/0.package.py |   39 -
 lib/spack/docs/tutorial/examples/1.package.py |   24 -
 lib/spack/docs/tutorial/examples/2.package.py |   25 -
 lib/spack/docs/tutorial/examples/3.package.py |   25 -
 lib/spack/docs/tutorial/examples/4.package.py |   27 -
 lib/spack/docs/tutorial/examples/5.package.py |   42 -
 .../tutorial/examples/Autotools/0.package.py  |   27 -
 .../tutorial/examples/Autotools/1.package.py  |   32 -
 .../docs/tutorial/examples/Cmake/0.package.py |   41 -
 .../docs/tutorial/examples/Cmake/1.package.py |   23 -
 .../docs/tutorial/examples/Cmake/2.package.py |   33 -
 .../tutorial/examples/Makefile/0.package.py   |   26 -
 .../tutorial/examples/Makefile/1.package.py   |   27 -
 .../tutorial/examples/Makefile/2.package.py   |   25 -
 .../tutorial/examples/Makefile/3.package.py   |   36 -
 .../tutorial/examples/PyPackage/0.package.py  |   41 -
 .../tutorial/examples/PyPackage/1.package.py  |   32 -
 .../tutorial/sc16-tutorial-slide-preview.png  |  Bin 71641 -> 0 bytes
 .../docs/tutorial_advanced_packaging.rst      |  515 -----
 lib/spack/docs/tutorial_basics.rst            | 1736 -----------------
 lib/spack/docs/tutorial_buildsystems.rst      |  807 --------
 lib/spack/docs/tutorial_configuration.rst     |  951 ---------
 lib/spack/docs/tutorial_environments.rst      |  815 --------
 lib/spack/docs/tutorial_modules.rst           | 1575 ---------------
 lib/spack/docs/tutorial_packaging.rst         |  559 ------
 31 files changed, 28 insertions(+), 7565 deletions(-)
 create mode 100644 lib/spack/docs/spack.yaml
 delete mode 100644 lib/spack/docs/tutorial.rst
 delete mode 100644 lib/spack/docs/tutorial/examples/0.package.py
 delete mode 100644 lib/spack/docs/tutorial/examples/1.package.py
 delete mode 100644 lib/spack/docs/tutorial/examples/2.package.py
 delete mode 100644 lib/spack/docs/tutorial/examples/3.package.py
 delete mode 100644 lib/spack/docs/tutorial/examples/4.package.py
 delete mode 100644 lib/spack/docs/tutorial/examples/5.package.py
 delete mode 100644 lib/spack/docs/tutorial/examples/Autotools/0.package.py
 delete mode 100644 lib/spack/docs/tutorial/examples/Autotools/1.package.py
 delete mode 100644 lib/spack/docs/tutorial/examples/Cmake/0.package.py
 delete mode 100644 lib/spack/docs/tutorial/examples/Cmake/1.package.py
 delete mode 100644 lib/spack/docs/tutorial/examples/Cmake/2.package.py
 delete mode 100644 lib/spack/docs/tutorial/examples/Makefile/0.package.py
 delete mode 100644 lib/spack/docs/tutorial/examples/Makefile/1.package.py
 delete mode 100644 lib/spack/docs/tutorial/examples/Makefile/2.package.py
 delete mode 100644 lib/spack/docs/tutorial/examples/Makefile/3.package.py
 delete mode 100644 lib/spack/docs/tutorial/examples/PyPackage/0.package.py
 delete mode 100644 lib/spack/docs/tutorial/examples/PyPackage/1.package.py
 delete mode 100644 lib/spack/docs/tutorial/sc16-tutorial-slide-preview.png
 delete mode 100644 lib/spack/docs/tutorial_advanced_packaging.rst
 delete mode 100644 lib/spack/docs/tutorial_basics.rst
 delete mode 100644 lib/spack/docs/tutorial_buildsystems.rst
 delete mode 100644 lib/spack/docs/tutorial_configuration.rst
 delete mode 100644 lib/spack/docs/tutorial_environments.rst
 delete mode 100644 lib/spack/docs/tutorial_modules.rst
 delete mode 100644 lib/spack/docs/tutorial_packaging.rst

diff --git a/lib/spack/docs/.gitignore b/lib/spack/docs/.gitignore
index 0b6258af50..1624dfeaea 100644
--- a/lib/spack/docs/.gitignore
+++ b/lib/spack/docs/.gitignore
@@ -3,3 +3,5 @@ command_index.rst
 spack*.rst
 llnl*.rst
 _build
+.spack-env
+spack.lock
diff --git a/lib/spack/docs/build_systems/intelpackage.rst b/lib/spack/docs/build_systems/intelpackage.rst
index 30c567373e..f7d975899e 100644
--- a/lib/spack/docs/build_systems/intelpackage.rst
+++ b/lib/spack/docs/build_systems/intelpackage.rst
@@ -120,7 +120,7 @@ version numbers seen with most other Spack packages. For example, we have:
    ...
    Preferred version:
        professional.2018.3    http:...
-  
+
    Safe versions:
        professional.2018.3    http:...
        ...
@@ -728,7 +728,7 @@ For packages that contain a compiler, follow `the previous section
 
    .. code-block:: console
 
-      $ spack install intel-mpi@2018.3.199 
+      $ spack install intel-mpi@2018.3.199
       $ spack install intel-mpi@2018.3.199  %intel@18
 
 4. To prepare the new packages for use with client packages,
@@ -802,7 +802,7 @@ by one of the following means:
   Configure the order of compilers in the appropriate ``packages.yaml`` file,
   under either an ``all:`` or client-package-specific entry, in a
   ``compiler:`` list. Consult the Spack documentation for
-  :ref:`Configuring Package Preferences <configs-tutorial-package-prefs>`
+  `Configuring Package Preferences <https://spack-tutorial.readthedocs.io/en/latest/tutorial_configuration.html#configuring-package-preferences>`_
   and
   :ref:`Concretization Preferences <concretization-preferences>`.
 
@@ -851,7 +851,7 @@ client packages, edit the ``packages.yaml`` file.  Customize, either in the
 the virtual packages and whose values are the Spack specs that satisfy the
 virtual package, in order of decreasing preference.  To learn more about the
 ``providers:`` settings, see the Spack tutorial for
-:ref:`Configuring Package Preferences <configs-tutorial-package-prefs>`
+`Configuring Package Preferences <https://spack-tutorial.readthedocs.io/en/latest/tutorial_configuration.html#configuring-package-preferences>`_
 and the section
 :ref:`Concretization Preferences <concretization-preferences>`.
 
@@ -972,7 +972,7 @@ a *virtual* ``mkl`` package is declared in Spack.
   .. code-block:: python
 
     self.spec['blas'].headers.include_flags
-    
+
   and to generate linker options (``-L<dir> -llibname ...``), use the same as above,
 
   .. code-block:: python
diff --git a/lib/spack/docs/conf.py b/lib/spack/docs/conf.py
index cacbbb3a41..e5305a9317 100644
--- a/lib/spack/docs/conf.py
+++ b/lib/spack/docs/conf.py
@@ -159,7 +159,7 @@ def setup(sphinx):
 
 # List of patterns, relative to source directory, that match files and
 # directories to ignore when looking for source files.
-exclude_patterns = ['_build', '_spack_root']
+exclude_patterns = ['_build', '_spack_root', '.spack-env']
 
 # The reST default role (used for this markup: `text`) to use for all documents.
 #default_role = None
diff --git a/lib/spack/docs/index.rst b/lib/spack/docs/index.rst
index 5c93285cbb..48af67982a 100644
--- a/lib/spack/docs/index.rst
+++ b/lib/spack/docs/index.rst
@@ -55,7 +55,7 @@ or refer to the full manual below.
    getting_started
    basic_usage
    workflows
-   tutorial
+   Tutorial: Spack 101 <https://spack-tutorial.readthedocs.io>
    known_issues
 
 .. toctree::
diff --git a/lib/spack/docs/spack.yaml b/lib/spack/docs/spack.yaml
new file mode 100644
index 0000000000..bade961fce
--- /dev/null
+++ b/lib/spack/docs/spack.yaml
@@ -0,0 +1,19 @@
+# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+
+#
+# These are requirements for building the documentation.  You can run
+# these commands in this directory to install Sphinx and its plugins,
+# then build the docs:
+#
+#     spack install
+#     spack env activate .
+#     make
+#
+spack:
+  specs:
+  - py-sphinx
+  - py-sphinxcontrib-programoutput
+  - py-sphinx-rtd-theme
diff --git a/lib/spack/docs/tutorial.rst b/lib/spack/docs/tutorial.rst
deleted file mode 100644
index 4ece87ade0..0000000000
--- a/lib/spack/docs/tutorial.rst
+++ /dev/null
@@ -1,75 +0,0 @@
-.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
-   Spack Project Developers. See the top-level COPYRIGHT file for details.
-
-   SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
-.. _spack-101:
-
-=============================
-Tutorial: Spack 101
-=============================
-
-This is a full-day introduction to Spack with lectures and live demos.
-It was last presented at the `Practice and Experience in Advanced
-Research Computing Conference (PEARC19)
-<https://www.pearc19.pearc.org/>`_ on July 31, 2019.
-
-You can use these materials to teach a course on Spack at your own site,
-or you can just skip ahead and read the live demo scripts to see how
-Spack is used in practice.
-
-.. _sc16-slides:
-
-.. rubric:: Slides
-
-.. figure:: tutorial/sc16-tutorial-slide-preview.png
-   :target: https://spack.io/slides/spack-pearc19-tutorial-slides.pdf
-   :height: 72px
-   :align: left
-   :alt: Slide Preview
-
-`Download Slides <https://spack.io/slides/spack-pearc19-tutorial-slides.pdf>`_.
-
-**Full citation:** Levi Baber, Gregory Becker, Adam J. Stewart, and Todd
-Gamblin. Managing HPC Software Complexity with Spack.  Tutorial presented
-at the Practice and Experience in Advanced Research Computing Conference
-(PEARC19).  July 31, 2019.  Chicago, IL, USA.
-
-.. _sc16-live-demos:
-
-.. rubric:: Live Demos
-
-We provide scripts that take you step-by-step through basic Spack tasks.
-They correspond to sections in the slides above. You can use one of the
-following methods to run through the scripts:
-
-  1. We provide the `spack/tutorial
-     <https://hub.docker.com/r/spack/tutorial>`_ container image on
-     Docker Hub that you can use to do the tutorial on your local
-     machine.  You can invoke ``docker run -it spack/tutorial`` to start
-     using the container.
-
-  2. When we host the tutorial, we also provision VM instances in `AWS
-     <https://aws.amazon.com/>`_, so that users who are unfamiliar with
-     Docker can simply log into a VPM to do the demo exercises.
-
-You should now be ready to run through our demo scripts:
-
-  1. :ref:`basics-tutorial`
-  2. :ref:`configs-tutorial`
-  3. :ref:`packaging-tutorial`
-  4. :ref:`environments-tutorial`
-  5. :ref:`modules-tutorial`
-  6. :ref:`build-systems-tutorial`
-  7. :ref:`advanced-packaging-tutorial`
-
-Full contents:
-
-.. toctree::
-   tutorial_basics
-   tutorial_configuration
-   tutorial_packaging
-   tutorial_environments
-   tutorial_modules
-   tutorial_buildsystems
-   tutorial_advanced_packaging
diff --git a/lib/spack/docs/tutorial/examples/0.package.py b/lib/spack/docs/tutorial/examples/0.package.py
deleted file mode 100644
index 990ba7d3d8..0000000000
--- a/lib/spack/docs/tutorial/examples/0.package.py
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
-# Spack Project Developers. See the top-level COPYRIGHT file for details.
-#
-# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
-#
-# This is a template package file for Spack.  We've put "FIXME"
-# next to all the things you'll want to change. Once you've handled
-# them, you can save this file and test your package like this:
-#
-#     spack install mpileaks
-#
-# You can edit this file again by typing:
-#
-#     spack edit mpileaks
-#
-# See the Spack documentation for more information on packaging.
-# If you submit this package back to Spack as a pull request,
-# please first remove this boilerplate and all FIXME comments.
-#
-from spack import *
-
-
-class Mpileaks(Package):
-    """FIXME: Put a proper description of your package here."""
-
-    # FIXME: Add a proper url for your package's homepage here.
-    homepage = "http://www.example.com"
-    url      = "https://github.com/LLNL/mpileaks/releases/download/v1.0/mpileaks-1.0.tar.gz"
-
-    version('1.0', sha256='2e34cc4505556d1c1f085758e26f2f8eea0972db9382f051b2dcfb1d7d9e1825')
-
-    # FIXME: Add dependencies if required.
-    # depends_on('foo')
-
-    def install(self, spec, prefix):
-        # FIXME: Unknown build system
-        make()
-        make('install')
diff --git a/lib/spack/docs/tutorial/examples/1.package.py b/lib/spack/docs/tutorial/examples/1.package.py
deleted file mode 100644
index f2d515fa4a..0000000000
--- a/lib/spack/docs/tutorial/examples/1.package.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
-# Spack Project Developers. See the top-level COPYRIGHT file for details.
-#
-# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
-from spack import *
-
-
-class Mpileaks(Package):
-    """Tool to detect and report MPI objects like MPI_Requests and
-    MPI_Datatypes."""
-
-    homepage = "https://github.com/LLNL/mpileaks"
-    url      = "https://github.com/LLNL/mpileaks/releases/download/v1.0/mpileaks-1.0.tar.gz"
-
-    version('1.0', sha256='2e34cc4505556d1c1f085758e26f2f8eea0972db9382f051b2dcfb1d7d9e1825')
-
-    # FIXME: Add dependencies if required.
-    # depends_on('foo')
-
-    def install(self, spec, prefix):
-        # FIXME: Unknown build system
-        make()
-        make('install')
diff --git a/lib/spack/docs/tutorial/examples/2.package.py b/lib/spack/docs/tutorial/examples/2.package.py
deleted file mode 100644
index d0f1e6d062..0000000000
--- a/lib/spack/docs/tutorial/examples/2.package.py
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
-# Spack Project Developers. See the top-level COPYRIGHT file for details.
-#
-# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
-from spack import *
-
-
-class Mpileaks(Package):
-    """Tool to detect and report MPI objects like MPI_Requests and
-    MPI_Datatypes."""
-
-    homepage = "https://github.com/LLNL/mpileaks"
-    url      = "https://github.com/LLNL/mpileaks/releases/download/v1.0/mpileaks-1.0.tar.gz"
-
-    version('1.0', sha256='2e34cc4505556d1c1f085758e26f2f8eea0972db9382f051b2dcfb1d7d9e1825')
-
-    depends_on('mpi')
-    depends_on('adept-utils')
-    depends_on('callpath')
-
-    def install(self, spec, prefix):
-        # FIXME: Unknown build system
-        make()
-        make('install')
diff --git a/lib/spack/docs/tutorial/examples/3.package.py b/lib/spack/docs/tutorial/examples/3.package.py
deleted file mode 100644
index 05fd7aa00a..0000000000
--- a/lib/spack/docs/tutorial/examples/3.package.py
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
-# Spack Project Developers. See the top-level COPYRIGHT file for details.
-#
-# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
-from spack import *
-
-
-class Mpileaks(Package):
-    """Tool to detect and report MPI objects like MPI_Requests and
-    MPI_Datatypes."""
-
-    homepage = "https://github.com/LLNL/mpileaks"
-    url      = "https://github.com/LLNL/mpileaks/releases/download/v1.0/mpileaks-1.0.tar.gz"
-
-    version('1.0', sha256='2e34cc4505556d1c1f085758e26f2f8eea0972db9382f051b2dcfb1d7d9e1825')
-
-    depends_on('mpi')
-    depends_on('adept-utils')
-    depends_on('callpath')
-
-    def install(self, spec, prefix):
-        configure()
-        make()
-        make('install')
diff --git a/lib/spack/docs/tutorial/examples/4.package.py b/lib/spack/docs/tutorial/examples/4.package.py
deleted file mode 100644
index 626e7d3fec..0000000000
--- a/lib/spack/docs/tutorial/examples/4.package.py
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
-# Spack Project Developers. See the top-level COPYRIGHT file for details.
-#
-# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
-from spack import *
-
-
-class Mpileaks(Package):
-    """Tool to detect and report MPI objects like MPI_Requests and
-    MPI_Datatypes."""
-
-    homepage = "https://github.com/LLNL/mpileaks"
-    url      = "https://github.com/LLNL/mpileaks/releases/download/v1.0/mpileaks-1.0.tar.gz"
-
-    version('1.0', sha256='2e34cc4505556d1c1f085758e26f2f8eea0972db9382f051b2dcfb1d7d9e1825')
-
-    depends_on('mpi')
-    depends_on('adept-utils')
-    depends_on('callpath')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix),
-                  '--with-adept-utils={0}'.format(spec['adept-utils'].prefix),
-                  '--with-callpath={0}'.format(spec['callpath'].prefix))
-        make()
-        make('install')
diff --git a/lib/spack/docs/tutorial/examples/5.package.py b/lib/spack/docs/tutorial/examples/5.package.py
deleted file mode 100644
index 9a1dec2079..0000000000
--- a/lib/spack/docs/tutorial/examples/5.package.py
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
-# Spack Project Developers. See the top-level COPYRIGHT file for details.
-#
-# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
-from spack import *
-
-
-class Mpileaks(Package):
-    """Tool to detect and report MPI objects like MPI_Requests and
-    MPI_Datatypes."""
-
-    homepage = "https://github.com/LLNL/mpileaks"
-    url      = "https://github.com/LLNL/mpileaks/releases/download/v1.0/mpileaks-1.0.tar.gz"
-
-    version('1.0', sha256='2e34cc4505556d1c1f085758e26f2f8eea0972db9382f051b2dcfb1d7d9e1825')
-
-    variant('stackstart', values=int, default=0,
-            description='Specify the number of stack frames to truncate')
-
-    depends_on('mpi')
-    depends_on('adept-utils')
-    depends_on('callpath')
-
-    def install(self, spec, prefix):
-        stackstart = int(spec.variants['stackstart'].value)
-
-        args = [
-            '--prefix={0}'.format(prefix),
-            '--with-adept-utils={0}'.format(spec['adept-utils'].prefix),
-            '--with-callpath={0}'.format(spec['callpath'].prefix),
-        ]
-
-        if stackstart:
-            args.extend([
-                '--with-stack-start-c={0}'.format(stackstart),
-                '--with-stack-start-fortran={0}'.format(stackstart)
-            ])
-
-        configure(*args)
-        make()
-        make('install')
diff --git a/lib/spack/docs/tutorial/examples/Autotools/0.package.py b/lib/spack/docs/tutorial/examples/Autotools/0.package.py
deleted file mode 100644
index 213965e5c6..0000000000
--- a/lib/spack/docs/tutorial/examples/Autotools/0.package.py
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
-# Spack Project Developers. See the top-level COPYRIGHT file for details.
-#
-# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
-from spack import *
-
-
-class Mpileaks(AutotoolsPackage):
-    """Tool to detect and report leaked MPI objects like MPI_Requests and
-       MPI_Datatypes."""
-
-    homepage = "https://github.com/hpc/mpileaks"
-    url      = "https://github.com/hpc/mpileaks/releases/download/v1.0/mpileaks-1.0.tar.gz"
-
-    version('1.0', '8838c574b39202a57d7c2d68692718aa')
-
-    depends_on("mpi")
-    depends_on("adept-utils")
-    depends_on("callpath")
-
-    def install(self, spec, prefix):
-        configure("--prefix=" + prefix,
-                  "--with-adept-utils=" + spec['adept-utils'].prefix,
-                  "--with-callpath=" + spec['callpath'].prefix)
-        make()
-        make("install")
diff --git a/lib/spack/docs/tutorial/examples/Autotools/1.package.py b/lib/spack/docs/tutorial/examples/Autotools/1.package.py
deleted file mode 100644
index 639f130596..0000000000
--- a/lib/spack/docs/tutorial/examples/Autotools/1.package.py
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
-# Spack Project Developers. See the top-level COPYRIGHT file for details.
-#
-# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
-from spack import *
-
-
-class Mpileaks(AutotoolsPackage):
-    """Tool to detect and report leaked MPI objects like MPI_Requests and
-       MPI_Datatypes."""
-
-    homepage = "https://github.com/hpc/mpileaks"
-    url      = "https://github.com/hpc/mpileaks/releases/download/v1.0/mpileaks-1.0.tar.gz"
-
-    version('1.0', '8838c574b39202a57d7c2d68692718aa')
-
-    variant("stackstart", values=int, default=0,
-            description="Specify the number of stack frames to truncate")
-
-    depends_on("mpi")
-    depends_on("adept-utils")
-    depends_on("callpath")
-
-    def configure_args(self):
-        stackstart = int(self.spec.variants['stackstart'].value)
-        args = ["--with-adept-utils=" + spec['adept-utils'].prefix,
-                "--with-callpath=" + spec['callpath'].prefix]
-        if stackstart:
-            args.extend(['--with-stack-start-c=%s' % stackstart,
-                         '--with-stack-start-fortran=%s' % stackstart])
-        return args
diff --git a/lib/spack/docs/tutorial/examples/Cmake/0.package.py b/lib/spack/docs/tutorial/examples/Cmake/0.package.py
deleted file mode 100644
index b8c96a1929..0000000000
--- a/lib/spack/docs/tutorial/examples/Cmake/0.package.py
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
-# Spack Project Developers. See the top-level COPYRIGHT file for details.
-#
-# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
-#
-# This is a template package file for Spack.  We've put "FIXME"
-# next to all the things you'll want to change. Once you've handled
-# them, you can save this file and test your package like this:
-#
-#     spack install callpath
-#
-# You can edit this file again by typing:
-#
-#     spack edit callpath
-#
-# See the Spack documentation for more information on packaging.
-# If you submit this package back to Spack as a pull request,
-# please first remove this boilerplate and all FIXME comments.
-#
-from spack import *
-
-
-class Callpath(CMakePackage):
-    """FIXME: Put a proper description of your package here."""
-
-    # FIXME: Add a proper url for your package's homepage here.
-    homepage = "http://www.example.com"
-    url      = "https://github.com/llnl/callpath/archive/v1.0.1.tar.gz"
-
-    version('1.0.3', 'c89089b3f1c1ba47b09b8508a574294a')
-
-    # FIXME: Add dependencies if required.
-    # depends_on('foo')
-
-    def cmake_args(self):
-        # FIXME: Add arguments other than
-        # FIXME: CMAKE_INSTALL_PREFIX and CMAKE_BUILD_TYPE
-        # FIXME: If not needed delete this function
-        args = []
-        return args
diff --git a/lib/spack/docs/tutorial/examples/Cmake/1.package.py b/lib/spack/docs/tutorial/examples/Cmake/1.package.py
deleted file mode 100644
index 8a0d9d0e82..0000000000
--- a/lib/spack/docs/tutorial/examples/Cmake/1.package.py
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
-# Spack Project Developers. See the top-level COPYRIGHT file for details.
-#
-# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
-from spack import *
-
-
-class Callpath(CMakePackage):
-    """Library for representing callpaths consistently in
-       distributed-memory performance tools."""
-
-    homepage = "https://github.com/llnl/callpath"
-    url      = "https://github.com/llnl/callpath/archive/v1.0.3.tar.gz"
-
-    version('1.0.3', 'c89089b3f1c1ba47b09b8508a574294a')
-
-    depends_on("elf", type="link")
-    depends_on("libdwarf")
-    depends_on("dyninst")
-    depends_on("adept-utils")
-    depends_on("mpi")
-    depends_on("cmake@2.8:", type="build")
diff --git a/lib/spack/docs/tutorial/examples/Cmake/2.package.py b/lib/spack/docs/tutorial/examples/Cmake/2.package.py
deleted file mode 100644
index 2b4faca90d..0000000000
--- a/lib/spack/docs/tutorial/examples/Cmake/2.package.py
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
-# Spack Project Developers. See the top-level COPYRIGHT file for details.
-#
-# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
-from spack import *
-
-
-class Callpath(CMakePackage):
-    """Library for representing callpaths consistently in
-       distributed-memory performance tools."""
-
-    homepage = "https://github.com/llnl/callpath"
-    url      = "https://github.com/llnl/callpath/archive/v1.0.3.tar.gz"
-
-    version('1.0.3', 'c89089b3f1c1ba47b09b8508a574294a')
-
-    depends_on("elf", type="link")
-    depends_on("libdwarf")
-    depends_on("dyninst")
-    depends_on("adept-utils")
-    depends_on("mpi")
-    depends_on("cmake@2.8:", type="build")
-
-    def cmake_args(self):
-        args = ["-DCALLPATH_WALKER=dyninst"]
-
-        if self.spec.satisfies("^dyninst@9.3.0:"):
-            std.flag = self.compiler.cxx_flag
-            args.append("-DCMAKE_CXX_FLAGS='{0}' -fpermissive'".format(
-                std_flag))
-
-        return args
diff --git a/lib/spack/docs/tutorial/examples/Makefile/0.package.py b/lib/spack/docs/tutorial/examples/Makefile/0.package.py
deleted file mode 100644
index 8ad252f5b3..0000000000
--- a/lib/spack/docs/tutorial/examples/Makefile/0.package.py
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
-# Spack Project Developers. See the top-level COPYRIGHT file for details.
-#
-# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
-from spack import *
-
-
-class Bowtie(MakefilePackage):
-    """FIXME: Put a proper description of your package here."""
-
-    # FIXME: Add a proper url for your package's homepage here.
-    homepage = "http://www.example.com"
-    url      = "https://downloads.sourceforge.net/project/bowtie-bio/bowtie/1.2.1.1/bowtie-1.2.1.1-src.zip"
-
-    version('1.2.1.1', 'ec06265730c5f587cd58bcfef6697ddf')
-
-    # FIXME: Add dependencies if required.
-    # depends_on('foo')
-
-    def edit(self, spec, prefix):
-        # FIXME: Edit the Makefile if necessary
-        # FIXME: If not needed delete this function
-        # makefile = FileFilter('Makefile')
-        # makefile.filter('CC = .*', 'CC = cc')
-        return
diff --git a/lib/spack/docs/tutorial/examples/Makefile/1.package.py b/lib/spack/docs/tutorial/examples/Makefile/1.package.py
deleted file mode 100644
index 16988dc1b0..0000000000
--- a/lib/spack/docs/tutorial/examples/Makefile/1.package.py
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
-# Spack Project Developers. See the top-level COPYRIGHT file for details.
-#
-# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
-from spack import *
-
-
-class Bowtie(MakefilePackage):
-    """Bowtie is an ultrafast, memory efficient short read aligner
-    for short DNA sequences (reads) from next-gen sequencers."""
-
-    homepage = "https://sourceforge.net/projects/bowtie-bio/"
-    url      = "https://downloads.sourceforge.net/project/bowtie-bio/bowtie/1.2.1.1/bowtie-1.2.1.1-src.zip"
-
-    version('1.2.1.1', 'ec06265730c5f587cd58bcfef6697ddf')
-
-    variant("tbb", default=False, description="Use Intel thread building block")
-
-    depends_on("tbb", when="+tbb")
-
-    def edit(self, spec, prefix):
-        # FIXME: Edit the Makefile if necessary
-        # FIXME: If not needed delete this function
-        # makefile = FileFilter('Makefile')
-        # makefile.filter('CC = .*', 'CC = cc')
-        return
diff --git a/lib/spack/docs/tutorial/examples/Makefile/2.package.py b/lib/spack/docs/tutorial/examples/Makefile/2.package.py
deleted file mode 100644
index 0973b2028e..0000000000
--- a/lib/spack/docs/tutorial/examples/Makefile/2.package.py
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
-# Spack Project Developers. See the top-level COPYRIGHT file for details.
-#
-# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
-from spack import *
-
-
-class Bowtie(MakefilePackage):
-    """Bowtie is an ultrafast, memory efficient short read aligner
-    for short DNA sequences (reads) from next-gen sequencers."""
-
-    homepage = "https://sourceforge.net/projects/bowtie-bio/"
-    url      = "https://downloads.sourceforge.net/project/bowtie-bio/bowtie/1.2.1.1/bowtie-1.2.1.1-src.zip"
-
-    version('1.2.1.1', 'ec06265730c5f587cd58bcfef6697ddf')
-
-    variant("tbb", default=False, description="Use Intel thread building block")
-
-    depends_on("tbb", when="+tbb")
-
-    def edit(self, spec, prefix):
-        makefile = FileFilter("Makefile")
-        makefile.filter('CC= .*', 'CC = ' + env['CC'])
-        makefile.filter('CXX = .*', 'CXX = ' + env['CXX'])
diff --git a/lib/spack/docs/tutorial/examples/Makefile/3.package.py b/lib/spack/docs/tutorial/examples/Makefile/3.package.py
deleted file mode 100644
index 6a1942e627..0000000000
--- a/lib/spack/docs/tutorial/examples/Makefile/3.package.py
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
-# Spack Project Developers. See the top-level COPYRIGHT file for details.
-#
-# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
-from spack import *
-
-
-class Bowtie(MakefilePackage):
-    """Bowtie is an ultrafast, memory efficient short read aligner
-    for short DNA sequences (reads) from next-gen sequencers."""
-
-    homepage = "https://sourceforge.net/projects/bowtie-bio/"
-    url      = "https://downloads.sourceforge.net/project/bowtie-bio/bowtie/1.2.1.1/bowtie-1.2.1.1-src.zip"
-
-    version('1.2.1.1', 'ec06265730c5f587cd58bcfef6697ddf')
-
-    variant("tbb", default=False, description="Use Intel thread building block")
-
-    depends_on("tbb", when="+tbb")
-
-    def edit(self, spec, prefix):
-        makefile = FileFilter("Makefile")
-        makefile.filter('CC= .*', 'CC = ' + env['CC'])
-        makefile.filter('CXX = .*', 'CXX = ' + env['CXX'])
-
-    @property
-    def build_targets(self):
-        if "+tbb" in spec:
-            return []
-        else:
-            return ["NO_TBB=1"]
-
-    @property
-    def install_targets(self):
-        return ['prefix={0}'.format(self.prefix), 'install']
diff --git a/lib/spack/docs/tutorial/examples/PyPackage/0.package.py b/lib/spack/docs/tutorial/examples/PyPackage/0.package.py
deleted file mode 100644
index 9ad94189d9..0000000000
--- a/lib/spack/docs/tutorial/examples/PyPackage/0.package.py
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
-# Spack Project Developers. See the top-level COPYRIGHT file for details.
-#
-# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
-#
-# This is a template package file for Spack.  We've put "FIXME"
-# next to all the things you'll want to change. Once you've handled
-# them, you can save this file and test your package like this:
-#
-#     spack install py-pandas
-#
-# You can edit this file again by typing:
-#
-#     spack edit py-pandas
-#
-# See the Spack documentation for more information on packaging.
-# If you submit this package back to Spack as a pull request,
-# please first remove this boilerplate and all FIXME comments.
-#
-from spack import *
-
-
-class PyPandas(PythonPackage):
-    """FIXME: Put a proper description of your package here."""
-
-    # FIXME: Add a proper url for your package's homepage here.
-    homepage = "http://www.example.com"
-    url      = "https://pypi.io/packages/source/p/pandas/pandas-0.19.0.tar.gz"
-
-    version('0.19.0', 'bc9bb7188e510b5d44fbdd249698a2c3')
-
-    # FIXME: Add dependencies if required.
-    # depends_on('py-setuptools', type='build')
-    # depends_on('py-foo',        type=('build', 'run'))
-
-    def build_args(self, spec, prefix):
-        # FIXME: Add arguments other than --prefix
-        # FIXME: If not needed delete this function
-        args = []
-        return args
diff --git a/lib/spack/docs/tutorial/examples/PyPackage/1.package.py b/lib/spack/docs/tutorial/examples/PyPackage/1.package.py
deleted file mode 100644
index 8ac335d4a6..0000000000
--- a/lib/spack/docs/tutorial/examples/PyPackage/1.package.py
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
-# Spack Project Developers. See the top-level COPYRIGHT file for details.
-#
-# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
-from spack import *
-
-
-class PyPandas(PythonPackage):
-    """pandas is a Python package providing fast, flexible, and expressive
-       data structures designed to make working with relational or
-       labeled data both easy and intuitive. It aims to be the
-       fundamental high-level building block for doing practical, real
-       world data analysis in Python. Additionally, it has the broader
-       goal of becoming the most powerful and flexible open source data
-       analysis / manipulation tool available in any language.
-    """
-    homepage = "http://pandas.pydata.org/"
-    url = "https://pypi.io/packages/source/p/pandas/pandas-0.19.0.tar.gz"
-
-    version('0.19.0', 'bc9bb7188e510b5d44fbdd249698a2c3')
-    version('0.18.0', 'f143762cd7a59815e348adf4308d2cf6')
-    version('0.16.1', 'fac4f25748f9610a3e00e765474bdea8')
-    version('0.16.0', 'bfe311f05dc0c351f8955fbd1e296e73')
-
-    depends_on('py-dateutil', type=('build', 'run'))
-    depends_on('py-numpy', type=('build', 'run'))
-    depends_on('py-setuptools', type='build')
-    depends_on('py-cython', type='build')
-    depends_on('py-pytz', type=('build', 'run'))
-    depends_on('py-numexpr', type=('build', 'run'))
-    depends_on('py-bottleneck', type=('build', 'run'))
diff --git a/lib/spack/docs/tutorial/sc16-tutorial-slide-preview.png b/lib/spack/docs/tutorial/sc16-tutorial-slide-preview.png
deleted file mode 100644
index e7f9b2e323065e8cbdc200ce344d4fd99e145dd1..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 71641
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
XSsT5uEVq||fq}u()z4*}Q$iB}XA~mO

diff --git a/lib/spack/docs/tutorial_advanced_packaging.rst b/lib/spack/docs/tutorial_advanced_packaging.rst
deleted file mode 100644
index 876a6e8f70..0000000000
--- a/lib/spack/docs/tutorial_advanced_packaging.rst
+++ /dev/null
@@ -1,515 +0,0 @@
-.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
-   Spack Project Developers. See the top-level COPYRIGHT file for details.
-
-   SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
-.. _advanced-packaging-tutorial:
-
-============================
-Advanced Topics in Packaging
-============================
-
-Spack tries to automatically configure packages with information from
-dependencies such that all you need to do is to list the dependencies
-(i.e., with the ``depends_on`` directive) and the build system (for example
-by deriving from :code:`CmakePackage`).
-
-However, there are many special cases. Often you need to retrieve details
-about dependencies to set package-specific configuration options, or to
-define package-specific environment variables used by the package's build
-system. This tutorial covers how to retrieve build information from
-dependencies, and how you can automatically provide important information to
-dependents in your package.
-
-----------------------
-Setup for the tutorial
-----------------------
-
-.. note::
-
-  We do not recommend doing this section of the tutorial in a
-  production Spack instance.
-
-The tutorial uses custom package definitions with missing sections that
-will be filled in during the tutorial. These package definitions are stored
-in a separate package repository, which can be enabled with:
-
-.. code-block:: console
-
-  $ spack repo add --scope=site var/spack/repos/tutorial
-
-This section of the tutorial may also require a newer version of
-gcc. If you have not already installed gcc@7.2.0 and added it to your
-configuration, you can do so with:
-
-.. code-block:: console
-
-  $ spack install gcc@7.2.0 %gcc@5.4.0
-  $ spack compiler add --scope=site `spack location -i gcc@7.2.0 %gcc@5.4.0`
-
-If you are using the tutorial docker image, all dependency packages
-will have been installed. Otherwise, to install these packages you can use
-the following commands:
-
-.. code-block:: console
-
-  $ spack install openblas
-  $ spack install netlib-lapack
-  $ spack install mpich
-
-Now, you are ready to set your preferred ``EDITOR`` and continue with
-the rest of the tutorial.
-
-.. note::
-
-  Several of these packages depend on an MPI implementation. You can use
-  OpenMPI if you install it from scratch, but this is slow (>10 min.).
-  A binary cache of MPICH may be provided, in which case you can force
-  the package to use it and install quickly. All tutorial examples with
-  packages that depend on MPICH include the spec syntax for building with it
-
-.. _adv_pkg_tutorial_start:
-
----------------------------------------
-Modifying a package's build environment
----------------------------------------
-
-Spack sets up several environment variables like ``PATH`` by default to aid in
-building a package, but many packages make use of environment variables which
-convey specific information about their dependencies (e.g., ``MPICC``).
-This section covers how to update your Spack packages so that package-specific
-environment variables are defined at build-time.
-
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Set environment variables in dependent packages at build-time
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Dependencies can set environment variables that are required when their
-dependents build. For example, when a package depends on a python extension
-like py-numpy, Spack's ``python`` package will add it to ``PYTHONPATH``
-so it is available at build time; this is required because the default setup
-that spack does is not sufficient for python to import modules.
-
-Any package can override the
-:py:func:`setup_dependent_build_environment <spack.package.PackageBase.setup_dependent_build_environment>`
-method to setup the build environment for a dependent.
-This method takes as an argument a :py:class:`EnvironmentModifications <spack.util.environment.EnvironmentModifications>`
-object which includes convenience methods to update the environment. For
-example, an MPI implementation can set ``MPICC`` for packages that depend on it:
-
-.. code-block:: python
-
-  def setup_dependent_build_environment(self, env, dependent_spec):
-      env.set('MPICC', join_path(self.prefix.bin, 'mpicc'))
-
-In this case packages that depend on ``mpi`` will have ``MPICC`` defined in
-their environment when they build. This section is focused on setting up the
-build-time environment but it's worth noting that a similar method called
-:py:func:`setup_dependent_run_environment <spack.package.PackageBase.setup_dependent_run_environment>`
-can be used to code modifications that will be included in Spack's automatically-generated
-module files.
-
-We can practice by editing the ``mpich`` package to set the ``MPICC``
-environment variable in the build-time environment of dependent packages.
-
-.. code-block:: console
-
-  root@advanced-packaging-tutorial:/# spack edit mpich
-
-Once you're finished, the method should look like this:
-
-.. code-block:: python
-
-  def setup_dependent_build_environment(self, env, dependent_spec):
-      env.set('MPICC',  join_path(self.prefix.bin, 'mpicc'))
-      env.set('MPICXX', join_path(self.prefix.bin, 'mpic++'))
-      env.set('MPIF77', join_path(self.prefix.bin, 'mpif77'))
-      env.set('MPIF90', join_path(self.prefix.bin, 'mpif90'))
-
-      env.set('MPICH_CC', spack_cc)
-      env.set('MPICH_CXX', spack_cxx)
-      env.set('MPICH_F77', spack_f77)
-      env.set('MPICH_F90', spack_fc)
-      env.set('MPICH_FC', spack_fc)
-
-At this point we can, for instance, install ``netlib-scalapack`` with
-``mpich``:
-
-.. code-block:: console
-
-  root@advanced-packaging-tutorial:/# spack install netlib-scalapack ^mpich
-  ...
-  ==> Created stage in /usr/local/var/spack/stage/netlib-scalapack-2.0.2-km7tsbgoyyywonyejkjoojskhc5knz3z
-  ==> No patches needed for netlib-scalapack
-  ==> Building netlib-scalapack [CMakePackage]
-  ==> Executing phase: 'cmake'
-  ==> Executing phase: 'build'
-  ==> Executing phase: 'install'
-  ==> Successfully installed netlib-scalapack
-    Fetch: 0.01s.  Build: 3m 59.86s.  Total: 3m 59.87s.
-  [+] /usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/netlib-scalapack-2.0.2-km7tsbgoyyywonyejkjoojskhc5knz3z
-
-
-and double check the environment logs to verify that every variable was
-set to the correct value.
-
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Set environment variables in your own package
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Packages can override the
-:py:func:`setup_build_environment <spack.package.PackageBase.setup_build_environment>`
-or the
-:py:func:`setup_run_environment <spack.package.PackageBase.setup_run_environment>`
-methods to modify their own build-time or run-time environment respectively.
-An example of a package that overrides both methods is ``qt``:
-
-.. code-block:: python
-
-    def setup_build_environment(self, env):
-        env.set('MAKEFLAGS', '-j{0}'.format(make_jobs))
-
-    def setup_run_environment(self, env):
-        env.set('QTDIR', self.prefix)
-
-When ``qt`` builds, ``MAKEFLAGS`` will be defined in the environment. Likewise, when a
-module file is created for ``qt`` it will contain commands to define ``QTDIR`` appropriately.
-
-To contrast with ``qt``'s
-:py:func:`setup_dependent_build_environment <spack.package.PackageBase.setup_dependent_build_environment>`
-function:
-
-.. code-block:: python
-
-    def setup_dependent_build_environment(self, env, dependent_spec):
-        env.set('QTDIR', self.prefix)
-
-Let's see how it works by completing the ``elpa`` package:
-
-.. code-block:: console
-
-  root@advanced-packaging-tutorial:/# spack edit elpa
-
-In the end your method should look like:
-
-.. code-block:: python
-
-  def setup_build_environment(self, env):
-      spec = self.spec
-
-      env.set('CC', spec['mpi'].mpicc)
-      env.set('FC', spec['mpi'].mpifc)
-      env.set('CXX', spec['mpi'].mpicxx)
-      env.set('SCALAPACK_LDFLAGS', spec['scalapack'].libs.joined())
-
-      env.append_flags('LDFLAGS', spec['lapack'].libs.search_flags)
-      env.append_flags('LIBS', spec['lapack'].libs.link_flags)
-
-At this point it's possible to proceed with the installation of ``elpa ^mpich``
-
-------------------------------
-Retrieving library information
-------------------------------
-
-Although Spack attempts to help packages locate their dependency libraries
-automatically (e.g. by setting ``PKG_CONFIG_PATH`` and ``CMAKE_PREFIX_PATH``),
-a package may have unique configuration options that are required to locate
-libraries. When a package needs information about dependency libraries, the
-general approach in Spack is to query the dependencies for the locations of
-their libraries and set configuration options accordingly. By default most
-Spack packages know how to automatically locate their libraries. This section
-covers how to retrieve library information from dependencies and how to locate
-libraries when the default logic doesn't work.
-
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Accessing dependency libraries
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-If you need to access the libraries of a dependency, you can do so
-via the ``libs`` property of the spec, for example in the ``arpack-ng``
-package:
-
-.. code-block:: python
-
-    def install(self, spec, prefix):
-        lapack_libs = spec['lapack'].libs.joined(';')
-        blas_libs = spec['blas'].libs.joined(';')
-
-        cmake(*[
-            '-DLAPACK_LIBRARIES={0}'.format(lapack_libs),
-            '-DBLAS_LIBRARIES={0}'.format(blas_libs)
-        ], '.')
-
-Note that ``arpack-ng`` is querying virtual dependencies, which Spack
-automatically resolves to the installed implementation (e.g. ``openblas``
-for ``blas``).
-
-We've started work on a package for ``armadillo``. You should open it,
-read through the comment that starts with ``# TUTORIAL:`` and complete
-the ``cmake_args`` section:
-
-.. code-block:: console
-
-  root@advanced-packaging-tutorial:/# spack edit armadillo
-
-If you followed the instructions in the package, when you are finished your
-``cmake_args`` method should look like:
-
-.. code-block:: python
-
-  def cmake_args(self):
-        spec = self.spec
-
-        return [
-            # ARPACK support
-            '-DARPACK_LIBRARY={0}'.format(spec['arpack-ng'].libs.joined(";")),
-            # BLAS support
-            '-DBLAS_LIBRARY={0}'.format(spec['blas'].libs.joined(";")),
-            # LAPACK support
-            '-DLAPACK_LIBRARY={0}'.format(spec['lapack'].libs.joined(";")),
-            # SuperLU support
-            '-DSuperLU_INCLUDE_DIR={0}'.format(spec['superlu'].prefix.include),
-            '-DSuperLU_LIBRARY={0}'.format(spec['superlu'].libs.joined(";")),
-            # HDF5 support
-            '-DDETECT_HDF5={0}'.format('ON' if '+hdf5' in spec else 'OFF')
-        ]
-
-As you can see, getting the list of libraries that your dependencies provide
-is as easy as accessing the their ``libs`` attribute. Furthermore, the interface
-remains the same whether you are querying regular or virtual dependencies.
-
-At this point you can complete the installation of ``armadillo`` using ``openblas``
-as a LAPACK provider (``armadillo ^openblas ^mpich``):
-
-.. code-block:: console
-
-  root@advanced-packaging-tutorial:/# spack install armadillo ^openblas ^mpich
-  ==> pkg-config is already installed in /usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/pkg-config-0.29.2-ae2hwm7q57byfbxtymts55xppqwk7ecj
-  ...
-  ==> superlu is already installed in /usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/superlu-5.2.1-q2mbtw2wo4kpzis2e2n227ip2fquxrno
-  ==> Installing armadillo
-  ==> Using cached archive: /usr/local/var/spack/cache/armadillo/armadillo-8.100.1.tar.xz
-  ==> Staging archive: /usr/local/var/spack/stage/armadillo-8.100.1-n2eojtazxbku6g4l5izucwwgnpwz77r4/armadillo-8.100.1.tar.xz
-  ==> Created stage in /usr/local/var/spack/stage/armadillo-8.100.1-n2eojtazxbku6g4l5izucwwgnpwz77r4
-  ==> Applied patch undef_linux.patch
-  ==> Building armadillo [CMakePackage]
-  ==> Executing phase: 'cmake'
-  ==> Executing phase: 'build'
-  ==> Executing phase: 'install'
-  ==> Successfully installed armadillo
-    Fetch: 0.01s.  Build: 3.96s.  Total: 3.98s.
-  [+] /usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/armadillo-8.100.1-n2eojtazxbku6g4l5izucwwgnpwz77r4
-
-Hopefully the installation went fine and the code we added expanded to the right list
-of semicolon separated libraries (you are encouraged to open ``armadillo``'s
-build logs to double check).
-
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Providing libraries to dependents
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Spack provides a default implementation for ``libs`` which often works
-out of the box. A user can write a package definition without having to
-implement a ``libs`` property and dependents can retrieve its libraries
-as shown in the above section. However, the default implementation assumes that
-libraries follow the naming scheme ``lib<package name>.so`` (or e.g.
-``lib<package name>.a`` for static libraries). Packages which don't
-follow this naming scheme must implement this function themselves, e.g.
-``opencv``:
-
-.. code-block:: python
-
-    @property
-    def libs(self):
-        shared = "+shared" in self.spec
-        return find_libraries(
-            "libopencv_*", root=self.prefix, shared=shared, recurse=True
-        )
-
-This issue is common for packages which implement an interface (i.e.
-virtual package providers in Spack). If we try to build another version of
-``armadillo`` tied to ``netlib-lapack`` (``armadillo ^netlib-lapack ^mpich``)
-we'll notice that this time the installation won't complete:
-
-.. code-block:: console
-
-  root@advanced-packaging-tutorial:/# spack install  armadillo ^netlib-lapack ^mpich
-  ==> pkg-config is already installed in /usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/pkg-config-0.29.2-ae2hwm7q57byfbxtymts55xppqwk7ecj
-  ...
-  ==> openmpi is already installed in /usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/openmpi-3.0.0-yo5qkfvumpmgmvlbalqcadu46j5bd52f
-  ==> Installing arpack-ng
-  ==> Using cached archive: /usr/local/var/spack/cache/arpack-ng/arpack-ng-3.5.0.tar.gz
-  ==> Already staged arpack-ng-3.5.0-bloz7cqirpdxj33pg7uj32zs5likz2un in /usr/local/var/spack/stage/arpack-ng-3.5.0-bloz7cqirpdxj33pg7uj32zs5likz2un
-  ==> No patches needed for arpack-ng
-  ==> Building arpack-ng [Package]
-  ==> Executing phase: 'install'
-  ==> Error: RuntimeError: Unable to recursively locate netlib-lapack libraries in /usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/netlib-lapack-3.6.1-jjfe23wgt7nkjnp2adeklhseg3ftpx6z
-  RuntimeError: RuntimeError: Unable to recursively locate netlib-lapack libraries in /usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/netlib-lapack-3.6.1-jjfe23wgt7nkjnp2adeklhseg3ftpx6z
-
-  /usr/local/var/spack/repos/builtin/packages/arpack-ng/package.py:105, in install:
-       5             options.append('-DCMAKE_INSTALL_NAME_DIR:PATH=%s/lib' % prefix)
-       6
-       7             # Make sure we use Spack's blas/lapack:
-    >> 8             lapack_libs = spec['lapack'].libs.joined(';')
-       9             blas_libs = spec['blas'].libs.joined(';')
-       10
-       11            options.extend([
-
-  See build log for details:
-    /usr/local/var/spack/stage/arpack-ng-3.5.0-bloz7cqirpdxj33pg7uj32zs5likz2un/arpack-ng-3.5.0/spack-build-out.txt
-
-Unlike ``openblas`` which provides a library named ``libopenblas.so``,
-``netlib-lapack`` provides ``liblapack.so``, so it needs to implement
-customized library search logic. Let's edit it:
-
-.. code-block:: console
-
-  root@advanced-packaging-tutorial:/# spack edit netlib-lapack
-
-and follow the instructions in the ``# TUTORIAL:`` comment as before.
-What we need to implement is:
-
-.. code-block:: python
-
-  @property
-  def lapack_libs(self):
-      shared = True if '+shared' in self.spec else False
-      return find_libraries(
-          'liblapack', root=self.prefix, shared=shared, recursive=True
-      )
-
-i.e., a property that returns the correct list of libraries for the LAPACK interface.
-
-We use the name ``lapack_libs`` rather than ``libs`` because
-``netlib-lapack`` can also provide ``blas``, and when it does it is provided
-as a separate library file. Using this name ensures that when
-dependents ask for ``lapack`` libraries, ``netlib-lapack`` will retrieve only
-the libraries associated with the ``lapack`` interface. Now we can finally
-install ``armadillo ^netlib-lapack ^mpich``:
-
-.. code-block:: console
-
-  root@advanced-packaging-tutorial:/# spack install  armadillo ^netlib-lapack ^mpich
-  ...
-
-  ==> Building armadillo [CMakePackage]
-  ==> Executing phase: 'cmake'
-  ==> Executing phase: 'build'
-  ==> Executing phase: 'install'
-  ==> Successfully installed armadillo
-    Fetch: 0.01s.  Build: 3.75s.  Total: 3.76s.
-  [+] /usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/armadillo-8.100.1-sxmpu5an4dshnhickh6ykchyfda7jpyn
-
-Since each implementation of a virtual package is responsible for locating the
-libraries associated with the interfaces it provides, dependents do not need
-to include special-case logic for different implementations and for example
-need only ask for :code:`spec['blas'].libs`.
-
-----------------------
-Other Packaging Topics
-----------------------
-
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Attach attributes to other packages
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Build tools usually also provide a set of executables that can be used
-when another package is being installed. Spack gives you the opportunity
-to monkey-patch dependent modules and attach attributes to them. This
-helps make the packager experience as similar as possible to what would
-have been the manual installation of the same package.
-
-An example here is the ``automake`` package, which overrides
-:py:func:`setup_dependent_package <spack.package.PackageBase.setup_dependent_package>`:
-
-.. code-block:: python
-
-  def setup_dependent_package(self, module, dependent_spec):
-      # Automake is very likely to be a build dependency,
-      # so we add the tools it provides to the dependent module
-      executables = ['aclocal', 'automake']
-      for name in executables:
-          setattr(module, name, self._make_executable(name))
-
-so that every other package that depends on it can use directly ``aclocal``
-and ``automake`` with the usual function call syntax of :py:class:`Executable <spack.util.executable.Executable>`:
-
-.. code-block:: python
-
-  aclocal('--force')
-
-^^^^^^^^^^^^^^^^^^^^^^^
-Extra query parameters
-^^^^^^^^^^^^^^^^^^^^^^^
-
-An advanced feature of the Spec's build-interface protocol is the support
-for extra parameters after the subscript key. In fact, any of the keys used in the query
-can be followed by a comma-separated list of extra parameters which can be
-inspected by the package receiving the request to fine-tune a response.
-
-Let's look at an example and try to install ``netcdf ^mpich``:
-
-.. code-block:: console
-
-  root@advanced-packaging-tutorial:/# spack install netcdf ^mpich
-  ==> libsigsegv is already installed in /usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/libsigsegv-2.11-fypapcprssrj3nstp6njprskeyynsgaz
-  ==> m4 is already installed in /usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/m4-1.4.18-r5envx3kqctwwflhd4qax4ahqtt6x43a
-  ...
-  ==> Error: AttributeError: 'list' object has no attribute 'search_flags'
-  AttributeError: AttributeError: 'list' object has no attribute 'search_flags'
-
-  /usr/local/var/spack/repos/builtin/packages/netcdf/package.py:207, in configure_args:
-       50            # used instead.
-       51            hdf5_hl = self.spec['hdf5:hl']
-       52            CPPFLAGS.append(hdf5_hl.headers.cpp_flags)
-    >> 53            LDFLAGS.append(hdf5_hl.libs.search_flags)
-       54
-       55            if '+parallel-netcdf' in self.spec:
-       56                config_args.append('--enable-pnetcdf')
-
-  See build log for details:
-    /usr/local/var/spack/stage/netcdf-4.4.1.1-gk2xxhbqijnrdwicawawcll4t3c7dvoj/netcdf-4.4.1.1/spack-build-out.txt
-
-We can see from the error that ``netcdf`` needs to know how to link the *high-level interface*
-of ``hdf5``, and thus passes the extra parameter ``hl`` after the request to retrieve it.
-Clearly the implementation in the ``hdf5`` package is not complete, and we need to fix it:
-
-.. code-block:: console
-
-  root@advanced-packaging-tutorial:/# spack edit hdf5
-
-If you followed the instructions correctly, the code added to the
-``lib`` property should be similar to:
-
-.. code-block:: python
-  :emphasize-lines: 1
-
-  query_parameters = self.spec.last_query.extra_parameters
-  key = tuple(sorted(query_parameters))
-  libraries = query2libraries[key]
-  shared = '+shared' in self.spec
-  return find_libraries(
-      libraries, root=self.prefix, shared=shared, recurse=True
-  )
-
-where we highlighted the line retrieving the extra parameters. Now we can successfully
-complete the installation of ``netcdf ^mpich``:
-
-.. code-block:: console
-
-  root@advanced-packaging-tutorial:/# spack install netcdf ^mpich
-  ==> libsigsegv is already installed in /usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/libsigsegv-2.11-fypapcprssrj3nstp6njprskeyynsgaz
-  ==> m4 is already installed in /usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/m4-1.4.18-r5envx3kqctwwflhd4qax4ahqtt6x43a
-  ...
-  ==> Installing netcdf
-  ==> Using cached archive: /usr/local/var/spack/cache/netcdf/netcdf-4.4.1.1.tar.gz
-  ==> Already staged netcdf-4.4.1.1-gk2xxhbqijnrdwicawawcll4t3c7dvoj in /usr/local/var/spack/stage/netcdf-4.4.1.1-gk2xxhbqijnrdwicawawcll4t3c7dvoj
-  ==> Already patched netcdf
-  ==> Building netcdf [AutotoolsPackage]
-  ==> Executing phase: 'autoreconf'
-  ==> Executing phase: 'configure'
-  ==> Executing phase: 'build'
-  ==> Executing phase: 'install'
-  ==> Successfully installed netcdf
-    Fetch: 0.01s.  Build: 24.61s.  Total: 24.62s.
-  [+] /usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/netcdf-4.4.1.1-gk2xxhbqijnrdwicawawcll4t3c7dvoj
diff --git a/lib/spack/docs/tutorial_basics.rst b/lib/spack/docs/tutorial_basics.rst
deleted file mode 100644
index 9a6a2074b3..0000000000
--- a/lib/spack/docs/tutorial_basics.rst
+++ /dev/null
@@ -1,1736 +0,0 @@
-.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
-   Spack Project Developers. See the top-level COPYRIGHT file for details.
-
-   SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
-.. _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 an AWS
-instance running Ubuntu 16.04
-
-.. _basics-tutorial-install:
-
-----------------
-Installing Spack
-----------------
-
-Spack works out of the box. Simply clone spack and get going. We will
-clone Spack and immediately checkout the most recent release, v0.12.
-
-.. code-block:: console
-
-  $ git clone https://github.com/spack/spack
-  git clone https://github.com/spack/spack
-  Cloning into 'spack'...
-  remote: Enumerating objects: 68, done.
-  remote: Counting objects: 100% (68/68), done.
-  remote: Compressing objects: 100% (56/56), done.
-  remote: Total 135389 (delta 40), reused 16 (delta 9), pack-reused 135321
-  Receiving objects: 100% (135389/135389), 47.31 MiB | 1.01 MiB/s, done.
-  Resolving deltas: 100% (64414/64414), done.
-  Checking connectivity... done.
-  $ cd spack
-  $ git checkout releases/v0.12
-  Branch releases/v0.12 set up to track remote branch releases/v0.12 from origin.
-  Switched to a new branch 'releases/v0.12'
-
-Next add Spack to your path. Spack has some nice command line
-integration tools, so instead of simply appending to your ``PATH``
-variable, source the spack setup script.  Then add Spack to your path.
-
-.. code-block:: console
-
-  $ . share/spack/setup-env.sh
-
-You're good to go!
-
------------------
-What is in Spack?
------------------
-
-The ``spack list`` command shows available packages.
-
-.. code-block:: console
-
-  $ spack list
-  ==> 2907 packages.
-  abinit                           libgpuarray                            py-espresso                     r-mlrmbo
-  abyss                            libgridxc                              py-espressopp                   r-mmwrweek
-  accfft                           libgtextutils                          py-et-xmlfile                   r-mnormt
-  ...
-
-The ``spack list`` command can also take a query string. Spack
-automatically adds wildcards to both ends of the string. For example,
-we can view all available python packages.
-
-.. code-block:: console
-
-  $ spack list py-
-  ==> 479 packages.
-  lumpy-sv                               py-funcsigs          py-numpydoc         py-utililib
-  perl-file-copy-recursive               py-functools32       py-olefile          py-pywavelets
-  py-3to2                                py-future            py-ont-fast5-api    py-pyyaml
-  ...
-
--------------------
-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 zlib
-  ==> Installing zlib
-  ==> Searching for binary cache of zlib
-  ==> Warning: No Spack mirrors are currently configured
-  ==> No binary for zlib found: installing from source
-  ==> Fetching http://zlib.net/fossils/zlib-1.2.11.tar.gz
-  ######################################################################## 100.0%
-  ==> Staging archive: /home/spack1/spack/var/spack/stage/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb/zlib-1.2.11.tar.gz
-  ==> Created stage in /home/spack1/spack/var/spack/stage/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb
-  ==> No patches needed for zlib
-  ==> Building zlib [Package]
-  ==> Executing phase: 'install'
-  ==> Successfully installed zlib
-    Fetch: 3.27s.  Build: 2.18s.  Total: 5.44s.
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb
-
-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.
-
-.. code-block:: console
-
-  $ spack mirror add tutorial /mirror
-  $ spack gpg trust /mirror/public.key
-  gpg: keybox '/home/spack1/spack/opt/spack/gpg/pubring.kbx' created
-  gpg: /home/spack1/spack/opt/spack/gpg/trustdb.gpg: trustdb created
-  gpg: key 3B7C69B2: public key "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" imported
-  gpg: Total number processed: 1
-  gpg:               imported: 1
-
-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.
-
-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 zlib %clang
-  ==> Installing zlib
-  ==> Searching for binary cache of zlib
-  ==> Finding buildcaches in /mirror/build_cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64-gcc-7.2.0-texinfo-6.5-cuqnfgfhhmudqp5f7upmld6ax7pratzw.spec.yaml
-  ######################################################################## 100.0%
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64-gcc-4.7-zlib-1.2.11-bq2wtdxakpjytk2tjr7qu23i4py2fi2r.spec.yaml
-  ######################################################################## 100.0%
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64-gcc-5.4.0-dyninst-9.3.2-bu6s2jzievsjkwtcnrtimc5b625j5omf.spec.yaml
-  ######################################################################## 100.0%
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64-gcc-7.2.0-openmpi-3.1.3-do5xfer2whhk7gc26atgs3ozr3ljbvs4.spec.yaml
-  ...
-  ==> Installing zlib from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/clang-3.8.0-2ubuntu4/zlib-1.2.11/linux-ubuntu16.04-x86_64-clang-3.8.0-2ubuntu4-zlib-1.2.11-4pt75q7qq6lygf3hgnona4lyc2uwedul.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:08:01 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed zlib from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/clang-3.8.0-2ubuntu4/zlib-1.2.11-4pt75q7qq6lygf3hgnona4lyc2uwedul
-
-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``.
-
-.. code-block:: console
-
-  $ spack versions zlib
-  ==> Safe versions (already checksummed):
-    1.2.11  1.2.8  1.2.3
-  ==> Remote versions (not yet checksummed):
-    1.2.10   1.2.7    1.2.5.1  1.2.4.2  1.2.3.7
-    ...
-
-The ``@`` sigil is used to specify versions, both of packages and of
-compilers.
-
-.. code-block:: console
-
-  $ spack install zlib@1.2.8
-  ==> Installing zlib
-  ==> Searching for binary cache of zlib
-  ==> Finding buildcaches in /mirror/build_cache
-  ==> Installing zlib from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/zlib-1.2.8/linux-ubuntu16.04-x86_64-gcc-5.4.0-zlib-1.2.8-bkyl5bhuep6fmhuxzkmhqy25qefjcvzc.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:18:30 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed zlib from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/zlib-1.2.8-bkyl5bhuep6fmhuxzkmhqy25qefjcvzc
-
-  $ spack install zlib %gcc@4.7
-  ==> Installing zlib
-  ==> Searching for binary cache of zlib
-  ==> Finding buildcaches in /mirror/build_cache
-  ==> Installing zlib from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-4.7/zlib-1.2.11/linux-ubuntu16.04-x86_64-gcc-4.7-zlib-1.2.11-bq2wtdxakpjytk2tjr7qu23i4py2fi2r.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 04:55:30 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed zlib from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-4.7/zlib-1.2.11-bq2wtdxakpjytk2tjr7qu23i4py2fi2r
-
-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.
-
-.. code-block:: console
-
-  $ spack install zlib @1.2.8 cppflags=-O3
-  ==> Installing zlib
-  ==> Searching for binary cache of zlib
-  ==> Finding buildcaches in /mirror/build_cache
-  ==> Installing zlib from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/zlib-1.2.8/linux-ubuntu16.04-x86_64-gcc-5.4.0-zlib-1.2.8-64mns5mvdacqvlashkf7v6lqrxixhmxu.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:31:54 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed zlib from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/zlib-1.2.8-64mns5mvdacqvlashkf7v6lqrxixhmxu
-
-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-ubuntu16.04-x86_64 / clang@3.8.0-2ubuntu4 --------------
-  zlib@1.2.11
-
-  -- linux-ubuntu16.04-x86_64 / gcc@4.7 ---------------------------
-  zlib@1.2.11
-
-  -- linux-ubuntu16.04-x86_64 / gcc@5.4.0 -------------------------
-  zlib@1.2.8  zlib@1.2.8  zlib@1.2.11
-
-
-  $ spack find -lf
-  ==> 5 installed packages.
-  -- linux-ubuntu16.04-x86_64 / clang@3.8.0-2ubuntu4 --------------
-  4pt75q7 zlib@1.2.11%clang
-
-
-  -- linux-ubuntu16.04-x86_64 / gcc@4.7 ---------------------------
-  bq2wtdx zlib@1.2.11%gcc
-
-
-  -- linux-ubuntu16.04-x86_64 / gcc@5.4.0 -------------------------
-  bkyl5bh zlib@1.2.8%gcc
-
-  64mns5m zlib@1.2.8%gcc cppflags="-O3"
-
-  5nus6kn zlib@1.2.11%gcc
-
-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 tcl
-  ==> zlib is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb
-  ==> Installing tcl
-  ==> Searching for binary cache of tcl
-  ==> Finding buildcaches in /mirror/build_cache
-  ==> Installing tcl from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/tcl-8.6.8/linux-ubuntu16.04-x86_64-gcc-5.4.0-tcl-8.6.8-qhwyccywhx2i6s7ob2gvjrjtj3rnfuqt.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:07:15 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed tcl from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/tcl-8.6.8-qhwyccywhx2i6s7ob2gvjrjtj3rnfuqt
-
-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 tcl ^zlib @1.2.8 %clang
-  ==> Installing zlib
-  ==> Searching for binary cache of zlib
-  ==> Finding buildcaches in /mirror/build_cache
-  ==> Installing zlib from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/clang-3.8.0-2ubuntu4/zlib-1.2.8/linux-ubuntu16.04-x86_64-clang-3.8.0-2ubuntu4-zlib-1.2.8-i426yu3o6lyau5fv5ljwsajfkqxj5rl5.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:09:01 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed zlib from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/clang-3.8.0-2ubuntu4/zlib-1.2.8-i426yu3o6lyau5fv5ljwsajfkqxj5rl5
-  ==> Installing tcl
-  ==> Searching for binary cache of tcl
-  ==> Installing tcl from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/clang-3.8.0-2ubuntu4/tcl-8.6.8/linux-ubuntu16.04-x86_64-clang-3.8.0-2ubuntu4-tcl-8.6.8-6wc66etr7y6hgibp2derrdkf763exwvc.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:10:21 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed tcl from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/clang-3.8.0-2ubuntu4/tcl-8.6.8-6wc66etr7y6hgibp2derrdkf763exwvc
-
-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
-``64mns5m``. 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 tcl ^/64mn
-  ==> zlib is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/zlib-1.2.8-64mns5mvdacqvlashkf7v6lqrxixhmxu
-  ==> Installing tcl
-  ==> Searching for binary cache of tcl
-  ==> Finding buildcaches in /mirror/build_cache
-  ==> Installing tcl from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/tcl-8.6.8/linux-ubuntu16.04-x86_64-gcc-5.4.0-tcl-8.6.8-am4pbatrtga3etyusg2akmsvrswwxno2.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:11:53 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed tcl from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/tcl-8.6.8-am4pbatrtga3etyusg2akmsvrswwxno2
-
-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-ubuntu16.04-x86_64 / clang@3.8.0-2ubuntu4 --------------
-  6wc66et    tcl@8.6.8%clang
-  i426yu3        ^zlib@1.2.8%clang
-
-  i426yu3    zlib@1.2.8%clang
-
-  4pt75q7    zlib@1.2.11%clang
-
-
-  -- linux-ubuntu16.04-x86_64 / gcc@4.7 ---------------------------
-  bq2wtdx    zlib@1.2.11%gcc
-
-
-  -- linux-ubuntu16.04-x86_64 / gcc@5.4.0 -------------------------
-  am4pbat    tcl@8.6.8%gcc
-  64mns5m        ^zlib@1.2.8%gcc cppflags="-O3"
-
-  qhwyccy    tcl@8.6.8%gcc
-  5nus6kn        ^zlib@1.2.11%gcc
-
-  bkyl5bh    zlib@1.2.8%gcc
-
-  64mns5m    zlib@1.2.8%gcc cppflags="-O3"
-
-  5nus6kn    zlib@1.2.11%gcc
-
-
-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``.
-
-.. code-block:: console
-
-  $ spack install hdf5
-  ==> Installing libsigsegv
-  ==> Searching for binary cache of libsigsegv
-  ==> Finding buildcaches in /mirror/build_cache
-  ==> Installing libsigsegv from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/libsigsegv-2.11/linux-ubuntu16.04-x86_64-gcc-5.4.0-libsigsegv-2.11-fypapcprssrj3nstp6njprskeyynsgaz.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:08:01 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed libsigsegv from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/libsigsegv-2.11-fypapcprssrj3nstp6njprskeyynsgaz
-  ==> Installing m4
-  ==> Searching for binary cache of m4
-  ==> Installing m4 from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/m4-1.4.18/linux-ubuntu16.04-x86_64-gcc-5.4.0-m4-1.4.18-suf5jtcfehivwfesrc5hjy72r4nukyel.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:24:11 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed m4 from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/m4-1.4.18-suf5jtcfehivwfesrc5hjy72r4nukyel
-  ==> Installing libtool
-  ==> Searching for binary cache of libtool
-  ==> Installing libtool from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/libtool-2.4.6/linux-ubuntu16.04-x86_64-gcc-5.4.0-libtool-2.4.6-o2pfwjf44353ajgr42xqtvzyvqsazkgu.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:12:47 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed libtool from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/libtool-2.4.6-o2pfwjf44353ajgr42xqtvzyvqsazkgu
-  ==> Installing pkgconf
-  ==> Searching for binary cache of pkgconf
-  ==> Installing pkgconf from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/pkgconf-1.4.2/linux-ubuntu16.04-x86_64-gcc-5.4.0-pkgconf-1.4.2-fovrh7alpft646n6mhis5mml6k6e5f4v.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:00:47 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed pkgconf from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/pkgconf-1.4.2-fovrh7alpft646n6mhis5mml6k6e5f4v
-  ==> Installing util-macros
-  ==> Searching for binary cache of util-macros
-  ==> Installing util-macros from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/util-macros-1.19.1/linux-ubuntu16.04-x86_64-gcc-5.4.0-util-macros-1.19.1-milz7fmttmptcic2qdk5cnel7ll5sybr.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:31:54 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed util-macros from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/util-macros-1.19.1-milz7fmttmptcic2qdk5cnel7ll5sybr
-  ==> Installing libpciaccess
-  ==> Searching for binary cache of libpciaccess
-  ==> Installing libpciaccess from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/libpciaccess-0.13.5/linux-ubuntu16.04-x86_64-gcc-5.4.0-libpciaccess-0.13.5-5urc6tcjae26fbbd2wyfohoszhgxtbmc.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:09:34 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed libpciaccess from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/libpciaccess-0.13.5-5urc6tcjae26fbbd2wyfohoszhgxtbmc
-  ==> Installing xz
-  ==> Searching for binary cache of xz
-  ==> Installing xz from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/xz-5.2.4/linux-ubuntu16.04-x86_64-gcc-5.4.0-xz-5.2.4-teneqii2xv5u6zl5r6qi3pwurc6pmypz.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:05:03 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed xz from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/xz-5.2.4-teneqii2xv5u6zl5r6qi3pwurc6pmypz
-  ==> zlib is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb
-  ==> Installing libxml2
-  ==> Searching for binary cache of libxml2
-  ==> Installing libxml2 from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/libxml2-2.9.8/linux-ubuntu16.04-x86_64-gcc-5.4.0-libxml2-2.9.8-wpexsphdmfayxqxd4up5vgwuqgu5woo7.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 04:56:04 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed libxml2 from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/libxml2-2.9.8-wpexsphdmfayxqxd4up5vgwuqgu5woo7
-  ==> Installing ncurses
-  ==> Searching for binary cache of ncurses
-  ==> Installing ncurses from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/ncurses-6.1/linux-ubuntu16.04-x86_64-gcc-5.4.0-ncurses-6.1-3o765ourmesfrji6yeclb4wb5w54aqbh.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:04:49 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed ncurses from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/ncurses-6.1-3o765ourmesfrji6yeclb4wb5w54aqbh
-  ==> Installing readline
-  ==> Searching for binary cache of readline
-  ==> Installing readline from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/readline-7.0/linux-ubuntu16.04-x86_64-gcc-5.4.0-readline-7.0-nxhwrg7xwc6nbsm2v4ezwe63l6nfidbi.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:04:56 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed readline from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/readline-7.0-nxhwrg7xwc6nbsm2v4ezwe63l6nfidbi
-  ==> Installing gdbm
-  ==> Searching for binary cache of gdbm
-  ==> Installing gdbm from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/gdbm-1.14.1/linux-ubuntu16.04-x86_64-gcc-5.4.0-gdbm-1.14.1-q4fpyuo7ouhkeq6d3oabtrppctpvxmes.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:18:34 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed gdbm from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gdbm-1.14.1-q4fpyuo7ouhkeq6d3oabtrppctpvxmes
-  ==> Installing perl
-  ==> Searching for binary cache of perl
-  ==> Installing perl from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/perl-5.26.2/linux-ubuntu16.04-x86_64-gcc-5.4.0-perl-5.26.2-ic2kyoadgp3dxfejcbllyplj2wf524fo.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:12:45 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed perl from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/perl-5.26.2-ic2kyoadgp3dxfejcbllyplj2wf524fo
-  ==> Installing autoconf
-  ==> Searching for binary cache of autoconf
-  ==> Installing autoconf from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/autoconf-2.69/linux-ubuntu16.04-x86_64-gcc-5.4.0-autoconf-2.69-3sx2gxeibc4oasqd4o5h6lnwpcpsgd2q.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:24:03 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed autoconf from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/autoconf-2.69-3sx2gxeibc4oasqd4o5h6lnwpcpsgd2q
-  ==> Installing automake
-  ==> Searching for binary cache of automake
-  ==> Installing automake from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/automake-1.16.1/linux-ubuntu16.04-x86_64-gcc-5.4.0-automake-1.16.1-rymw7imfehycqxzj4nuy2oiw3abegooy.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:12:03 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed automake from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/automake-1.16.1-rymw7imfehycqxzj4nuy2oiw3abegooy
-  ==> Installing numactl
-  ==> Searching for binary cache of numactl
-  ==> Installing numactl from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/numactl-2.0.11/linux-ubuntu16.04-x86_64-gcc-5.4.0-numactl-2.0.11-ft463odrombnxlc3qew4omckhlq7tqgc.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:30:34 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed numactl from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/numactl-2.0.11-ft463odrombnxlc3qew4omckhlq7tqgc
-  ==> Installing hwloc
-  ==> Searching for binary cache of hwloc
-  ==> Installing hwloc from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/hwloc-1.11.9/linux-ubuntu16.04-x86_64-gcc-5.4.0-hwloc-1.11.9-43tkw5mt6huhv37vqnybqgxtkodbsava.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:08:00 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed hwloc from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/hwloc-1.11.9-43tkw5mt6huhv37vqnybqgxtkodbsava
-  ==> Installing openmpi
-  ==> Searching for binary cache of openmpi
-  ==> Installing openmpi from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/openmpi-3.1.3/linux-ubuntu16.04-x86_64-gcc-5.4.0-openmpi-3.1.3-3njc4q5pqdpptq6jvqjrezkffwokv2sx.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:01:54 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed openmpi from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/openmpi-3.1.3-3njc4q5pqdpptq6jvqjrezkffwokv2sx
-  ==> Installing hdf5
-  ==> Searching for binary cache of hdf5
-  ==> Installing hdf5 from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/hdf5-1.10.4/linux-ubuntu16.04-x86_64-gcc-5.4.0-hdf5-1.10.4-ozyvmhzdew66byarohm4p36ep7wtcuiw.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:23:04 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed hdf5 from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/hdf5-1.10.4-ozyvmhzdew66byarohm4p36ep7wtcuiw
-
-Spack packages can also have build options, called 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 hdf5~mpi
-   ==> zlib is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb
-   ==> Installing hdf5
-   ==> Searching for binary cache of hdf5
-   ==> Finding buildcaches in /mirror/build_cache
-   ==> Installing hdf5 from binary cache
-   ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/hdf5-1.10.4/linux-ubuntu16.04-x86_64-gcc-5.4.0-hdf5-1.10.4-5vcv5r67vpjzenq4apyebshclelnzuja.spack
-   ######################################################################## 100.0%
-   gpg: Signature made Sat Nov 10 05:23:24 2018 UTC using RSA key ID 3B7C69B2
-   gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-   gpg: WARNING: This key is not certified with a trusted signature!
-   gpg:          There is no indication that the signature belongs to the owner.
-   Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-   ==> Successfully installed hdf5 from binary cache
-   [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/hdf5-1.10.4-5vcv5r67vpjzenq4apyebshclelnzuja
-
-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 hdf5+hl+mpi ^mpich
-  ==> libsigsegv is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/libsigsegv-2.11-fypapcprssrj3nstp6njprskeyynsgaz
-  ==> m4 is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/m4-1.4.18-suf5jtcfehivwfesrc5hjy72r4nukyel
-  ==> pkgconf is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/pkgconf-1.4.2-fovrh7alpft646n6mhis5mml6k6e5f4v
-  ==> ncurses is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/ncurses-6.1-3o765ourmesfrji6yeclb4wb5w54aqbh
-  ==> readline is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/readline-7.0-nxhwrg7xwc6nbsm2v4ezwe63l6nfidbi
-  ==> gdbm is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gdbm-1.14.1-q4fpyuo7ouhkeq6d3oabtrppctpvxmes
-  ==> perl is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/perl-5.26.2-ic2kyoadgp3dxfejcbllyplj2wf524fo
-  ==> autoconf is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/autoconf-2.69-3sx2gxeibc4oasqd4o5h6lnwpcpsgd2q
-  ==> automake is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/automake-1.16.1-rymw7imfehycqxzj4nuy2oiw3abegooy
-  ==> libtool is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/libtool-2.4.6-o2pfwjf44353ajgr42xqtvzyvqsazkgu
-  ==> Installing texinfo
-  ==> Searching for binary cache of texinfo
-  ==> Finding buildcaches in /mirror/build_cache
-  ==> Installing texinfo from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/texinfo-6.5/linux-ubuntu16.04-x86_64-gcc-5.4.0-texinfo-6.5-zs7a2pcwhq6ho2cj2x26uxfktwkpyucn.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:18:29 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed texinfo from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/texinfo-6.5-zs7a2pcwhq6ho2cj2x26uxfktwkpyucn
-  ==> Installing findutils
-  ==> Searching for binary cache of findutils
-  ==> Installing findutils from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/findutils-4.6.0/linux-ubuntu16.04-x86_64-gcc-5.4.0-findutils-4.6.0-d4iajxsopzrlcjtasahxqeyjkjv5jx4v.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:07:17 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed findutils from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/findutils-4.6.0-d4iajxsopzrlcjtasahxqeyjkjv5jx4v
-  ==> Installing mpich
-  ==> Searching for binary cache of mpich
-  ==> Installing mpich from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/mpich-3.2.1/linux-ubuntu16.04-x86_64-gcc-5.4.0-mpich-3.2.1-p3f7p2r5ntrynqibosglxvhwyztiwqs5.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:23:57 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed mpich from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/mpich-3.2.1-p3f7p2r5ntrynqibosglxvhwyztiwqs5
-  ==> zlib is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb
-  ==> Installing hdf5
-  ==> Searching for binary cache of hdf5
-  ==> Installing hdf5 from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/hdf5-1.10.4/linux-ubuntu16.04-x86_64-gcc-5.4.0-hdf5-1.10.4-xxd7syhgej6onpyfyewxqcqe7ltkt7ob.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:07:32 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed hdf5 from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/hdf5-1.10.4-xxd7syhgej6onpyfyewxqcqe7ltkt7ob
-
-We'll do a quick check in on what we have installed so far.
-
-.. code-block:: console
-
-  $ spack find -ldf
-  ==> 32 installed packages
-  -- linux-ubuntu16.04-x86_64 / clang@3.8.0-2ubuntu4 --------------
-  6wc66et    tcl@8.6.8%clang
-  i426yu3        ^zlib@1.2.8%clang
-
-  i426yu3    zlib@1.2.8%clang
-
-  4pt75q7    zlib@1.2.11%clang
-
-
-  -- linux-ubuntu16.04-x86_64 / gcc@4.7 ---------------------------
-  bq2wtdx    zlib@1.2.11%gcc
-
-
-  -- linux-ubuntu16.04-x86_64 / gcc@5.4.0 -------------------------
-  3sx2gxe    autoconf@2.69%gcc
-  suf5jtc        ^m4@1.4.18%gcc
-  fypapcp            ^libsigsegv@2.11%gcc
-  ic2kyoa        ^perl@5.26.2%gcc
-  q4fpyuo            ^gdbm@1.14.1%gcc
-  nxhwrg7                ^readline@7.0%gcc
-  3o765ou                    ^ncurses@6.1%gcc
-
-  rymw7im    automake@1.16.1%gcc
-  ic2kyoa        ^perl@5.26.2%gcc
-  q4fpyuo            ^gdbm@1.14.1%gcc
-  nxhwrg7                ^readline@7.0%gcc
-  3o765ou                    ^ncurses@6.1%gcc
-
-  d4iajxs    findutils@4.6.0%gcc
-
-  q4fpyuo    gdbm@1.14.1%gcc
-  nxhwrg7        ^readline@7.0%gcc
-  3o765ou            ^ncurses@6.1%gcc
-
-  5vcv5r6    hdf5@1.10.4%gcc
-  5nus6kn        ^zlib@1.2.11%gcc
-
-  ozyvmhz    hdf5@1.10.4%gcc
-  3njc4q5        ^openmpi@3.1.3%gcc
-  43tkw5m            ^hwloc@1.11.9%gcc
-  5urc6tc                ^libpciaccess@0.13.5%gcc
-  wpexsph                ^libxml2@2.9.8%gcc
-  teneqii                    ^xz@5.2.4%gcc
-  5nus6kn                    ^zlib@1.2.11%gcc
-  ft463od                ^numactl@2.0.11%gcc
-
-  xxd7syh    hdf5@1.10.4%gcc
-  p3f7p2r        ^mpich@3.2.1%gcc
-  5nus6kn        ^zlib@1.2.11%gcc
-
-  43tkw5m    hwloc@1.11.9%gcc
-  5urc6tc        ^libpciaccess@0.13.5%gcc
-  wpexsph        ^libxml2@2.9.8%gcc
-  teneqii            ^xz@5.2.4%gcc
-  5nus6kn            ^zlib@1.2.11%gcc
-  ft463od        ^numactl@2.0.11%gcc
-
-  5urc6tc    libpciaccess@0.13.5%gcc
-
-  fypapcp    libsigsegv@2.11%gcc
-
-  o2pfwjf    libtool@2.4.6%gcc
-
-  wpexsph    libxml2@2.9.8%gcc
-  teneqii        ^xz@5.2.4%gcc
-  5nus6kn        ^zlib@1.2.11%gcc
-
-  suf5jtc    m4@1.4.18%gcc
-  fypapcp        ^libsigsegv@2.11%gcc
-
-  p3f7p2r    mpich@3.2.1%gcc
-
-  3o765ou    ncurses@6.1%gcc
-
-  ft463od    numactl@2.0.11%gcc
-
-  3njc4q5    openmpi@3.1.3%gcc
-  43tkw5m        ^hwloc@1.11.9%gcc
-  5urc6tc            ^libpciaccess@0.13.5%gcc
-  wpexsph            ^libxml2@2.9.8%gcc
-  teneqii                ^xz@5.2.4%gcc
-  5nus6kn                ^zlib@1.2.11%gcc
-  ft463od            ^numactl@2.0.11%gcc
-
-  ic2kyoa    perl@5.26.2%gcc
-  q4fpyuo        ^gdbm@1.14.1%gcc
-  nxhwrg7            ^readline@7.0%gcc
-  3o765ou                ^ncurses@6.1%gcc
-
-  fovrh7a    pkgconf@1.4.2%gcc
-
-  nxhwrg7    readline@7.0%gcc
-  3o765ou        ^ncurses@6.1%gcc
-
-  am4pbat    tcl@8.6.8%gcc
-  64mns5m        ^zlib@1.2.8%gcc cppflags="-O3"
-
-  qhwyccy    tcl@8.6.8%gcc
-  5nus6kn        ^zlib@1.2.11%gcc
-
-  zs7a2pc    texinfo@6.5%gcc
-  ic2kyoa        ^perl@5.26.2%gcc
-  q4fpyuo            ^gdbm@1.14.1%gcc
-  nxhwrg7                ^readline@7.0%gcc
-  3o765ou                    ^ncurses@6.1%gcc
-
-  milz7fm    util-macros@1.19.1%gcc
-
-  teneqii    xz@5.2.4%gcc
-
-  bkyl5bh    zlib@1.2.8%gcc
-
-  64mns5m    zlib@1.2.8%gcc cppflags="-O3"
-
-  5nus6kn    zlib@1.2.11%gcc
-
-
-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+hl+mpi ^mpich
-  o  hdf5
-  |\
-  o |  zlib
-   /
-  o  mpich
-  o  findutils
-  |\
-  | |\
-  | | |\
-  | | | |\
-  o | | | |  texinfo
-  | | | o |  automake
-  | |_|/| |
-  |/| | | |
-  | | | |/
-  | | | o  autoconf
-  | |_|/|
-  |/| |/
-  | |/|
-  o | |  perl
-  o | |  gdbm
-  o | |  readline
-  o | |  ncurses
-  o | |  pkgconf
-   / /
-  | o  libtool
-  |/
-  o  m4
-  o  libsigsegv
-
-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 zlib and
-openssl, 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 an even more complicated package.
-
-.. code-block:: console
-
-  $ spack install trilinos
-  ==> Installing diffutils
-  ==> Searching for binary cache of diffutils
-  ==> Finding buildcaches in /mirror/build_cache
-  ==> Installing diffutils from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/diffutils-3.6/linux-ubuntu16.04-x86_64-gcc-5.4.0-diffutils-3.6-2rhuivgjrna2nrxhntyde6md2khcvs34.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:30:17 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed diffutils from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/diffutils-3.6-2rhuivgjrna2nrxhntyde6md2khcvs34
-  ==> Installing bzip2
-  ==> Searching for binary cache of bzip2
-  ==> Installing bzip2 from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/bzip2-1.0.6/linux-ubuntu16.04-x86_64-gcc-5.4.0-bzip2-1.0.6-ufczdvsqt6edesm36xiucyry7myhj7e7.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:34:37 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed bzip2 from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/bzip2-1.0.6-ufczdvsqt6edesm36xiucyry7myhj7e7
-  ==> zlib is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb
-  ==> Installing boost
-  ==> Searching for binary cache of boost
-  ==> Installing boost from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/boost-1.68.0/linux-ubuntu16.04-x86_64-gcc-5.4.0-boost-1.68.0-zbgfxapchxa4awxdwpleubfuznblxzvt.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 04:58:55 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed boost from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/boost-1.68.0-zbgfxapchxa4awxdwpleubfuznblxzvt
-  ==> pkgconf is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/pkgconf-1.4.2-fovrh7alpft646n6mhis5mml6k6e5f4v
-  ==> ncurses is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/ncurses-6.1-3o765ourmesfrji6yeclb4wb5w54aqbh
-  ==> readline is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/readline-7.0-nxhwrg7xwc6nbsm2v4ezwe63l6nfidbi
-  ==> gdbm is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gdbm-1.14.1-q4fpyuo7ouhkeq6d3oabtrppctpvxmes
-  ==> perl is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/perl-5.26.2-ic2kyoadgp3dxfejcbllyplj2wf524fo
-  ==> Installing openssl
-  ==> Searching for binary cache of openssl
-  ==> Installing openssl from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/openssl-1.0.2o/linux-ubuntu16.04-x86_64-gcc-5.4.0-openssl-1.0.2o-b4y3w3bsyvjla6eesv4vt6aplpfrpsha.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:24:10 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed openssl from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/openssl-1.0.2o-b4y3w3bsyvjla6eesv4vt6aplpfrpsha
-  ==> Installing cmake
-  ==> Searching for binary cache of cmake
-  ==> Installing cmake from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/cmake-3.12.3/linux-ubuntu16.04-x86_64-gcc-5.4.0-cmake-3.12.3-otafqzhh4xnlq2mpakch7dr3tjfsrjnx.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:33:15 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed cmake from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/cmake-3.12.3-otafqzhh4xnlq2mpakch7dr3tjfsrjnx
-  ==> Installing glm
-  ==> Searching for binary cache of glm
-  ==> Installing glm from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/glm-0.9.7.1/linux-ubuntu16.04-x86_64-gcc-5.4.0-glm-0.9.7.1-jnw622jwcbsymzj2fsx22omjl7tmvaws.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:30:33 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed glm from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/glm-0.9.7.1-jnw622jwcbsymzj2fsx22omjl7tmvaws
-  ==> libsigsegv is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/libsigsegv-2.11-fypapcprssrj3nstp6njprskeyynsgaz
-  ==> m4 is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/m4-1.4.18-suf5jtcfehivwfesrc5hjy72r4nukyel
-  ==> libtool is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/libtool-2.4.6-o2pfwjf44353ajgr42xqtvzyvqsazkgu
-  ==> util-macros is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/util-macros-1.19.1-milz7fmttmptcic2qdk5cnel7ll5sybr
-  ==> libpciaccess is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/libpciaccess-0.13.5-5urc6tcjae26fbbd2wyfohoszhgxtbmc
-  ==> xz is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/xz-5.2.4-teneqii2xv5u6zl5r6qi3pwurc6pmypz
-  ==> libxml2 is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/libxml2-2.9.8-wpexsphdmfayxqxd4up5vgwuqgu5woo7
-  ==> autoconf is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/autoconf-2.69-3sx2gxeibc4oasqd4o5h6lnwpcpsgd2q
-  ==> automake is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/automake-1.16.1-rymw7imfehycqxzj4nuy2oiw3abegooy
-  ==> numactl is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/numactl-2.0.11-ft463odrombnxlc3qew4omckhlq7tqgc
-  ==> hwloc is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/hwloc-1.11.9-43tkw5mt6huhv37vqnybqgxtkodbsava
-  ==> openmpi is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/openmpi-3.1.3-3njc4q5pqdpptq6jvqjrezkffwokv2sx
-  ==> Installing hdf5
-  ==> Searching for binary cache of hdf5
-  ==> Installing hdf5 from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/hdf5-1.10.4/linux-ubuntu16.04-x86_64-gcc-5.4.0-hdf5-1.10.4-oqwnui7wtovuf2id4vjwcxfmxlzjus6y.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:09:10 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed hdf5 from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/hdf5-1.10.4-oqwnui7wtovuf2id4vjwcxfmxlzjus6y
-  ==> Installing openblas
-  ==> Searching for binary cache of openblas
-  ==> Installing openblas from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/openblas-0.3.3/linux-ubuntu16.04-x86_64-gcc-5.4.0-openblas-0.3.3-cyeg2yiitpuqglhvbox5gtbgsim2v5vn.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:32:04 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed openblas from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/openblas-0.3.3-cyeg2yiitpuqglhvbox5gtbgsim2v5vn
-  ==> Installing hypre
-  ==> Searching for binary cache of hypre
-  ==> Installing hypre from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/hypre-2.15.1/linux-ubuntu16.04-x86_64-gcc-5.4.0-hypre-2.15.1-fshksdpecwiq7r6vawfswpboedhbisju.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:07:34 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed hypre from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/hypre-2.15.1-fshksdpecwiq7r6vawfswpboedhbisju
-  ==> Installing matio
-  ==> Searching for binary cache of matio
-  ==> Installing matio from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/matio-1.5.9/linux-ubuntu16.04-x86_64-gcc-5.4.0-matio-1.5.9-lmzdgssvobdljw52mtahelu2ju7osh6h.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:05:13 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed matio from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/matio-1.5.9-lmzdgssvobdljw52mtahelu2ju7osh6h
-  ==> Installing metis
-  ==> Searching for binary cache of metis
-  ==> Installing metis from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/metis-5.1.0/linux-ubuntu16.04-x86_64-gcc-5.4.0-metis-5.1.0-3wnvp4ji3wwu4v4vymszrhx6naehs6jc.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:31:42 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed metis from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/metis-5.1.0-3wnvp4ji3wwu4v4vymszrhx6naehs6jc
-  ==> Installing netlib-scalapack
-  ==> Searching for binary cache of netlib-scalapack
-  ==> Installing netlib-scalapack from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/netlib-scalapack-2.0.2/linux-ubuntu16.04-x86_64-gcc-5.4.0-netlib-scalapack-2.0.2-wotpfwfctgfkzzn2uescucxvvbg3tm6b.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:07:22 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed netlib-scalapack from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/netlib-scalapack-2.0.2-wotpfwfctgfkzzn2uescucxvvbg3tm6b
-  ==> Installing mumps
-  ==> Searching for binary cache of mumps
-  ==> Installing mumps from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/mumps-5.1.1/linux-ubuntu16.04-x86_64-gcc-5.4.0-mumps-5.1.1-acsg2dzroox2swssgc5cwgkvdy6jcm5q.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:18:32 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed mumps from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/mumps-5.1.1-acsg2dzroox2swssgc5cwgkvdy6jcm5q
-  ==> Installing netcdf
-  ==> Searching for binary cache of netcdf
-  ==> Installing netcdf from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/netcdf-4.6.1/linux-ubuntu16.04-x86_64-gcc-5.4.0-netcdf-4.6.1-mhm4izpogf4mrjidyskb6ewtzxdi7t6g.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:11:57 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed netcdf from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/netcdf-4.6.1-mhm4izpogf4mrjidyskb6ewtzxdi7t6g
-  ==> Installing parmetis
-  ==> Searching for binary cache of parmetis
-  ==> Installing parmetis from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/parmetis-4.0.3/linux-ubuntu16.04-x86_64-gcc-5.4.0-parmetis-4.0.3-uv6h3sqx6quqg22hxesi2mw2un3kw6b7.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:12:04 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed parmetis from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/parmetis-4.0.3-uv6h3sqx6quqg22hxesi2mw2un3kw6b7
-  ==> Installing suite-sparse
-  ==> Searching for binary cache of suite-sparse
-  ==> Installing suite-sparse from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/suite-sparse-5.3.0/linux-ubuntu16.04-x86_64-gcc-5.4.0-suite-sparse-5.3.0-zaau4kifha2enpdcn3mjlrqym7hm7yon.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:22:54 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed suite-sparse from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/suite-sparse-5.3.0-zaau4kifha2enpdcn3mjlrqym7hm7yon
-  ==> Installing trilinos
-  ==> Searching for binary cache of trilinos
-  ==> Installing trilinos from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/trilinos-12.12.1/linux-ubuntu16.04-x86_64-gcc-5.4.0-trilinos-12.12.1-rlsruavxqvwk2tgxzxboclbo6ykjf54r.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:18:10 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed trilinos from binary cache
-
-Now we're starting to see the power of Spack. Trilinos in its default
-configuration has 23 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
-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 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 trilinos +hdf5 ^hdf5+hl+mpi ^mpich
-  ==> diffutils is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/diffutils-3.6-2rhuivgjrna2nrxhntyde6md2khcvs34
-  ==> bzip2 is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/bzip2-1.0.6-ufczdvsqt6edesm36xiucyry7myhj7e7
-  ==> zlib is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb
-  ==> boost is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/boost-1.68.0-zbgfxapchxa4awxdwpleubfuznblxzvt
-  ==> pkgconf is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/pkgconf-1.4.2-fovrh7alpft646n6mhis5mml6k6e5f4v
-  ==> ncurses is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/ncurses-6.1-3o765ourmesfrji6yeclb4wb5w54aqbh
-  ==> readline is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/readline-7.0-nxhwrg7xwc6nbsm2v4ezwe63l6nfidbi
-  ==> gdbm is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gdbm-1.14.1-q4fpyuo7ouhkeq6d3oabtrppctpvxmes
-  ==> perl is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/perl-5.26.2-ic2kyoadgp3dxfejcbllyplj2wf524fo
-  ==> openssl is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/openssl-1.0.2o-b4y3w3bsyvjla6eesv4vt6aplpfrpsha
-  ==> cmake is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/cmake-3.12.3-otafqzhh4xnlq2mpakch7dr3tjfsrjnx
-  ==> glm is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/glm-0.9.7.1-jnw622jwcbsymzj2fsx22omjl7tmvaws
-  ==> libsigsegv is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/libsigsegv-2.11-fypapcprssrj3nstp6njprskeyynsgaz
-  ==> m4 is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/m4-1.4.18-suf5jtcfehivwfesrc5hjy72r4nukyel
-  ==> autoconf is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/autoconf-2.69-3sx2gxeibc4oasqd4o5h6lnwpcpsgd2q
-  ==> automake is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/automake-1.16.1-rymw7imfehycqxzj4nuy2oiw3abegooy
-  ==> libtool is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/libtool-2.4.6-o2pfwjf44353ajgr42xqtvzyvqsazkgu
-  ==> texinfo is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/texinfo-6.5-zs7a2pcwhq6ho2cj2x26uxfktwkpyucn
-  ==> findutils is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/findutils-4.6.0-d4iajxsopzrlcjtasahxqeyjkjv5jx4v
-  ==> mpich is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/mpich-3.2.1-p3f7p2r5ntrynqibosglxvhwyztiwqs5
-  ==> hdf5 is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/hdf5-1.10.4-xxd7syhgej6onpyfyewxqcqe7ltkt7ob
-  ==> openblas is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/openblas-0.3.3-cyeg2yiitpuqglhvbox5gtbgsim2v5vn
-  ==> Installing hypre
-  ==> Searching for binary cache of hypre
-  ==> Finding buildcaches in /mirror/build_cache
-  ==> Installing hypre from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/hypre-2.15.1/linux-ubuntu16.04-x86_64-gcc-5.4.0-hypre-2.15.1-obewuozolon7tkdg4cfxc6ae2tzkronb.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:34:36 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed hypre from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/hypre-2.15.1-obewuozolon7tkdg4cfxc6ae2tzkronb
-  ==> Installing matio
-  ==> Searching for binary cache of matio
-  ==> Installing matio from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/matio-1.5.9/linux-ubuntu16.04-x86_64-gcc-5.4.0-matio-1.5.9-gvyqldhifflmvcrtui3b6s64jcczsxxh.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:25:11 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed matio from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/matio-1.5.9-gvyqldhifflmvcrtui3b6s64jcczsxxh
-  ==> metis is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/metis-5.1.0-3wnvp4ji3wwu4v4vymszrhx6naehs6jc
-  ==> Installing netlib-scalapack
-  ==> Searching for binary cache of netlib-scalapack
-  ==> Installing netlib-scalapack from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/netlib-scalapack-2.0.2/linux-ubuntu16.04-x86_64-gcc-5.4.0-netlib-scalapack-2.0.2-p7iln2pcosw2ipyqoyr7ie6lpva2oj7r.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:32:20 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed netlib-scalapack from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/netlib-scalapack-2.0.2-p7iln2pcosw2ipyqoyr7ie6lpva2oj7r
-  ==> Installing mumps
-  ==> Searching for binary cache of mumps
-  ==> Installing mumps from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/mumps-5.1.1/linux-ubuntu16.04-x86_64-gcc-5.4.0-mumps-5.1.1-cumcj5a75cagsznpjrgretxdg6okxaur.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:33:18 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed mumps from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/mumps-5.1.1-cumcj5a75cagsznpjrgretxdg6okxaur
-  ==> Installing netcdf
-  ==> Searching for binary cache of netcdf
-  ==> Installing netcdf from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/netcdf-4.6.1/linux-ubuntu16.04-x86_64-gcc-5.4.0-netcdf-4.6.1-wmmx5sgwfds34v7bkkhiduar5yecrnnd.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:24:01 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed netcdf from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/netcdf-4.6.1-wmmx5sgwfds34v7bkkhiduar5yecrnnd
-  ==> Installing parmetis
-  ==> Searching for binary cache of parmetis
-  ==> Installing parmetis from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/parmetis-4.0.3/linux-ubuntu16.04-x86_64-gcc-5.4.0-parmetis-4.0.3-jehtatan4y2lcobj6waoqv66jj4libtz.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:07:41 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed parmetis from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/parmetis-4.0.3-jehtatan4y2lcobj6waoqv66jj4libtz
-  ==> suite-sparse is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/suite-sparse-5.3.0-zaau4kifha2enpdcn3mjlrqym7hm7yon
-  ==> Installing trilinos
-  ==> Searching for binary cache of trilinos
-  ==> Installing trilinos from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/trilinos-12.12.1/linux-ubuntu16.04-x86_64-gcc-5.4.0-trilinos-12.12.1-kqc52moweigxqxzwzfqajc6ocxwdwn4w.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:30:15 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed trilinos from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/trilinos-12.12.1-kqc52moweigxqxzwzfqajc6ocxwdwn4w
-
-
-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-ubuntu16.04-x86_64 / gcc@5.4.0 -------------------------
-      trilinos@12.12.1
-          ^boost@1.68.0
-              ^bzip2@1.0.6
-              ^zlib@1.2.11
-          ^glm@0.9.7.1
-          ^hdf5@1.10.4
-              ^openmpi@3.1.3
-                  ^hwloc@1.11.9
-                      ^libpciaccess@0.13.5
-                      ^libxml2@2.9.8
-                          ^xz@5.2.4
-                      ^numactl@2.0.11
-          ^hypre@2.15.1
-              ^openblas@0.3.3
-          ^matio@1.5.9
-          ^metis@5.1.0
-          ^mumps@5.1.1
-              ^netlib-scalapack@2.0.2
-          ^netcdf@4.6.1
-          ^parmetis@4.0.3
-          ^suite-sparse@5.3.0
-
-      trilinos@12.12.1
-          ^boost@1.68.0
-              ^bzip2@1.0.6
-              ^zlib@1.2.11
-          ^glm@0.9.7.1
-          ^hdf5@1.10.4
-              ^mpich@3.2.1
-          ^hypre@2.15.1
-              ^openblas@0.3.3
-          ^matio@1.5.9
-          ^metis@5.1.0
-          ^mumps@5.1.1
-              ^netlib-scalapack@2.0.2
-          ^netcdf@4.6.1
-          ^parmetis@4.0.3
-          ^suite-sparse@5.3.0
-
-
-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.
-
-.. code-block:: console
-
-  $ spack graph trilinos
-  o  trilinos
-  |\
-  | |\
-  | | |\
-  | | | |\
-  | | | | |\
-  | | | | | |\
-  | | | | | | |\
-  | | | | | | | |\
-  | | | | | | | | |\
-  | | | | | | | | | |\
-  | | | | | | | | | | |\
-  | | | | | | | | | | | |\
-  | | | | | | | | | | | | |\
-  o | | | | | | | | | | | | |  suite-sparse
-  |\ \ \ \ \ \ \ \ \ \ \ \ \ \
-  | |_|_|/ / / / / / / / / / /
-  |/| | | | | | | | | | | | |
-  | |\ \ \ \ \ \ \ \ \ \ \ \ \
-  | | |_|_|_|_|_|/ / / / / / /
-  | |/| | | | | | | | | | | |
-  | | | |_|_|_|_|_|_|_|/ / /
-  | | |/| | | | | | | | | |
-  | | | o | | | | | | | | |  parmetis
-  | | |/| | | | | | | | | |
-  | |/|/| | | | | | | | | |
-  | | | |/ / / / / / / / /
-  | | | | | | o | | | | |  mumps
-  | |_|_|_|_|/| | | | | |
-  |/| | | |_|/| | | | | |
-  | | | |/| |/ / / / / /
-  | | | | |/| | | | | |
-  | | | | o | | | | | |  netlib-scalapack
-  | |_|_|/| | | | | | |
-  |/| | |/| | | | | | |
-  | | |/|/ / / / / / /
-  | o | | | | | | | |  metis
-  | |/ / / / / / / /
-  | | | | | | | o |  glm
-  | | |_|_|_|_|/ /
-  | |/| | | | | |
-  | o | | | | | |  cmake
-  | |\ \ \ \ \ \ \
-  | o | | | | | | |  openssl
-  | |\ \ \ \ \ \ \ \
-  | | | | | o | | | |  netcdf
-  | | |_|_|/| | | | |
-  | |/| | |/| | | | |
-  | | | | | |\ \ \ \ \
-  | | | | | | | |_|/ /
-  | | | | | | |/| | |
-  | | | | | | | o | |  matio
-  | | |_|_|_|_|/| | |
-  | |/| | | | |/ / /
-  | | | | | | | o |  hypre
-  | |_|_|_|_|_|/| |
-  |/| | | | |_|/ /
-  | | | | |/| | |
-  | | | | | | o |  hdf5
-  | | |_|_|_|/| |
-  | |/| | | |/ /
-  | | | | |/| |
-  | | | | o | |  openmpi
-  | | |_|/| | |
-  | |/| | | | |
-  | | | | |\ \ \
-  | | | | | o | |  hwloc
-  | | | | |/| | |
-  | | | | | |\ \ \
-  | | | | | | |\ \ \
-  | | | | | | o | | |  libxml2
-  | | |_|_|_|/| | | |
-  | |/| | | |/| | | |
-  | | | | | | | | | o  boost
-  | | |_|_|_|_|_|_|/|
-  | |/| | | | | | | |
-  | o | | | | | | | |  zlib
-  |  / / / / / / / /
-  | | | | | o | | |  xz
-  | | | | |  / / /
-  | | | | | o | |  libpciaccess
-  | | | | |/| | |
-  | | | | | |\ \ \
-  | | | | | o | | |  util-macros
-  | | | | |  / / /
-  | | | o | | | |  numactl
-  | | | |\ \ \ \ \
-  | | | | |_|_|/ /
-  | | | |/| | | |
-  | | | | |\ \ \ \
-  | | | | | |_|/ /
-  | | | | |/| | |
-  | | | | | |\ \ \
-  | | | | | o | | |  automake
-  | | |_|_|/| | | |
-  | |/| | | | | | |
-  | | | | | |/ / /
-  | | | | | o | |  autoconf
-  | | |_|_|/| | |
-  | |/| | |/ / /
-  | | | |/| | |
-  | o | | | | |  perl
-  | o | | | | |  gdbm
-  | o | | | | |  readline
-  | |/ / / / /
-  | o | | | |  ncurses
-  | | |_|/ /
-  | |/| | |
-  | o | | |  pkgconf
-  |  / / /
-  o | | |  openblas
-   / / /
-   | o |  libtool
-   |/ /
-   o |  m4
-   o |  libsigsegv
-    /
-    o  bzip2
-    o  diffutils
-
-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 zlib and tcl. Now we
-will go through and uninstall some of those packages that we didn't
-really need.
-
-.. code-block:: console
-
-  $ spack find -d tcl
-  ==> 3 installed packages
-  -- linux-ubuntu16.04-x86_64 / clang@3.8.0-2ubuntu4 --------------
-      tcl@8.6.8
-          ^zlib@1.2.8
-
-
-  -- linux-ubuntu16.04-x86_64 / gcc@5.4.0 -------------------------
-      tcl@8.6.8
-          ^zlib@1.2.8
-
-      tcl@8.6.8
-          ^zlib@1.2.11
-
-
-  $ spack find zlib
-  ==> 6 installed packages.
-  -- linux-ubuntu16.04-x86_64 / clang@3.8.0-2ubuntu4 --------------
-  zlib@1.2.8  zlib@1.2.11
-
-  -- linux-ubuntu16.04-x86_64 / gcc@4.7 ---------------------------
-  zlib@1.2.11
-
-  -- linux-ubuntu16.04-x86_64 / gcc@5.4.0 -------------------------
-  zlib@1.2.8  zlib@1.2.8  zlib@1.2.11
-
-We can uninstall packages by spec using the same syntax as install.
-
-.. code-block:: console
-
-  $ spack uninstall zlib %gcc@4.7
-  ==> The following packages will be uninstalled:
-
-  -- linux-ubuntu16.04-x86_64 / gcc@4.7 ---------------------------
-  bq2wtdx zlib@1.2.11%gcc+optimize+pic+shared
-
-  ==> Do you want to proceed? [y/N] y
-  ==> Successfully uninstalled zlib@1.2.11%gcc@4.7+optimize+pic+shared arch=linux-ubuntu16.04-x86_64 /bq2wtdx
-
-  $ spack find -lf zlib
-  ==> 5 installed packages.
-  -- linux-ubuntu16.04-x86_64 / clang@3.8.0-2ubuntu4 --------------
-  i426yu3 zlib@1.2.8%clang
-  4pt75q7 zlib@1.2.11%clang
-
-
-  -- linux-ubuntu16.04-x86_64 / gcc@5.4.0 -------------------------
-  bkyl5bh zlib@1.2.8%gcc
-  64mns5m zlib@1.2.8%gcc cppflags="-O3"
-  5nus6kn zlib@1.2.11%gcc
-
-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.
-
-.. code-block:: console
-
-  $ spack uninstall zlib/i426
-  ==> Error: Will not uninstall zlib@1.2.8%clang@3.8.0-2ubuntu4/i426yu3
-
-  The following packages depend on it:
-      -- linux-ubuntu16.04-x86_64 / clang@3.8.0-2ubuntu4 --------------
-      6wc66et tcl@8.6.8%clang
-
-  ==> Error: Use \`spack uninstall --dependents\` to uninstall these dependencies as well.
-
-  $ spack uninstall -R zlib/i426
-  ==> The following packages will be uninstalled:
-
-      -- linux-ubuntu16.04-x86_64 / clang@3.8.0-2ubuntu4 --------------
-      6wc66et tcl@8.6.8%clang
-      i426yu3 zlib@1.2.8%clang+optimize+pic+shared
-  ==> Do you want to proceed? [y/N] y
-  ==> Successfully uninstalled tcl@8.6.8%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64 /6wc66et
-  ==> Successfully uninstalled zlib@1.2.8%clang@3.8.0-2ubuntu4+optimize+pic+shared arch=linux-ubuntu16.04-x86_64 /i426yu3
-
-Spack will not uninstall packages that are not sufficiently
-specified. The ``-a`` (all) flag can be used to uninstall multiple
-packages at once.
-
-.. code-block:: console
-
-  $ spack uninstall trilinos
-  ==> Error: trilinos matches multiple packages:
-
-      -- linux-ubuntu16.04-x86_64 / gcc@5.4.0 -------------------------
-      rlsruav trilinos@12.12.1%gcc~alloptpkgs+amesos+amesos2+anasazi+aztec+belos+boost build_type=RelWithDebInfo ~cgns~complex~dtk+epetra+epetraext+exodus+explicit_template_instantiation~float+fortran~fortrilinos+gtest+hdf5+hypre+ifpack+ifpack2~intrepid~intrepid2~isorropia+kokkos+metis~minitensor+ml+muelu+mumps~nox~openmp~phalanx~piro~pnetcdf~python~rol~rythmos+sacado~shards+shared~stk+suite-sparse~superlu~superlu-dist~teko~tempus+teuchos+tpetra~x11~xsdkflags~zlib+zoltan+zoltan2
-      kqc52mo trilinos@12.12.1%gcc~alloptpkgs+amesos+amesos2+anasazi+aztec+belos+boost build_type=RelWithDebInfo ~cgns~complex~dtk+epetra+epetraext+exodus+explicit_template_instantiation~float+fortran~fortrilinos+gtest+hdf5+hypre+ifpack+ifpack2~intrepid~intrepid2~isorropia+kokkos+metis~minitensor+ml+muelu+mumps~nox~openmp~phalanx~piro~pnetcdf~python~rol~rythmos+sacado~shards+shared~stk+suite-sparse~superlu~superlu-dist~teko~tempus+teuchos+tpetra~x11~xsdkflags~zlib+zoltan+zoltan2
-
-  ==> Error: You can either:
-      a) use a more specific spec, or
-      b) use `spack uninstall --all` to uninstall ALL matching specs.
-
-
-  $ spack uninstall /rlsr
-  ==> The following packages will be uninstalled:
-
-      -- linux-ubuntu16.04-x86_64 / gcc@5.4.0 -------------------------
-      rlsruav trilinos@12.12.1%gcc~alloptpkgs+amesos+amesos2+anasazi+aztec+belos+boost build_type=RelWithDebInfo ~cgns~complex~dtk+epetra+epetraext+exodus+explicit_template_instantiation~float+fortran~fortrilinos+gtest+hdf5+hypre+ifpack+ifpack2~intrepid~intrepid2~isorropia+kokkos+metis~minitensor+ml+muelu+mumps~nox~openmp~phalanx~piro~pnetcdf~python~rol~rythmos+sacado~shards+shared~stk+suite-sparse~superlu~superlu-dist~teko~tempus+teuchos+tpetra~x11~xsdkflags~zlib+zoltan+zoltan2
-  ==> Do you want to proceed? [y/N] y
-  ==> Successfully uninstalled trilinos@12.12.1%gcc@5.4.0~alloptpkgs+amesos+amesos2+anasazi+aztec+belos+boost build_type=RelWithDebInfo ~cgns~complex~dtk+epetra+epetraext+exodus+explicit_template_instantiation~float+fortran~fortrilinos+gtest+hdf5+hypre+ifpack+ifpack2~intrepid~intrepid2~isorropia+kokkos+metis~minitensor+ml+muelu+mumps~nox~openmp~phalanx~piro~pnetcdf~python~rol~rythmos+sacado~shards+shared~stk+suite-sparse~superlu~superlu-dist~teko~tempus+teuchos+tpetra~x11~xsdkflags~zlib+zoltan+zoltan2 arch=linux-ubuntu16.04-x86_64 /rlsruav
-
------------------------------
-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.
-
-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"``.
-
-.. code-block:: console
-
-  $ spack find ^mpich
-  ==> 8 installed packages
-  -- linux-ubuntu16.04-x86_64 / gcc@5.4.0 -------------------------
-  hdf5@1.10.4   matio@1.5.9  netcdf@4.6.1            parmetis@4.0.3
-  hypre@2.15.1  mumps@5.1.1  netlib-scalapack@2.0.2  trilinos@12.12.1
-
-  $ spack find cppflags=-O3
-  ==> 1 installed packages.
-  -- linux-ubuntu16.04-x86_64 / gcc@5.4.0 -------------------------
-  zlib@1.2.8
-
-The ``find`` command can also show which packages were installed
-explicitly (rather than pulled in as a dependency) using the ``-x``
-flag. The ``-X`` 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 -px
-  ==> 10 installed packages
-  -- linux-ubuntu16.04-x86_64 / clang@3.8.0-2ubuntu4 --------------
-      zlib@1.2.11  /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/clang-3.8.0-2ubuntu4/zlib-1.2.11-4pt75q7qq6lygf3hgnona4lyc2uwedul
-
-  -- linux-ubuntu16.04-x86_64 / gcc@5.4.0 -------------------------
-      hdf5@1.10.4       /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/hdf5-1.10.4-5vcv5r67vpjzenq4apyebshclelnzuja
-      hdf5@1.10.4       /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/hdf5-1.10.4-ozyvmhzdew66byarohm4p36ep7wtcuiw
-      hdf5@1.10.4       /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/hdf5-1.10.4-xxd7syhgej6onpyfyewxqcqe7ltkt7ob
-      tcl@8.6.8         /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/tcl-8.6.8-am4pbatrtga3etyusg2akmsvrswwxno2
-      tcl@8.6.8         /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/tcl-8.6.8-qhwyccywhx2i6s7ob2gvjrjtj3rnfuqt
-      trilinos@12.12.1  /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/trilinos-12.12.1-kqc52moweigxqxzwzfqajc6ocxwdwn4w
-      zlib@1.2.8        /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/zlib-1.2.8-bkyl5bhuep6fmhuxzkmhqy25qefjcvzc
-      zlib@1.2.8        /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/zlib-1.2.8-64mns5mvdacqvlashkf7v6lqrxixhmxu
-      zlib@1.2.11       /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb
-
----------------------
-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
-  -- clang ubuntu16.04-x86_64 -------------------------------------
-  clang@3.8.0-2ubuntu4  clang@3.7.1-2ubuntu2
-
-  -- gcc ubuntu16.04-x86_64 ---------------------------------------
-  gcc@5.4.0  gcc@4.7
-
-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.
-
-.. code-block:: console
-
-  $ spack install gcc @7.2.0
-  ==> libsigsegv is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/libsigsegv-2.11-fypapcprssrj3nstp6njprskeyynsgaz
-  ==> m4 is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/m4-1.4.18-suf5jtcfehivwfesrc5hjy72r4nukyel
-  ==> pkgconf is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/pkgconf-1.4.2-fovrh7alpft646n6mhis5mml6k6e5f4v
-  ==> ncurses is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/ncurses-6.1-3o765ourmesfrji6yeclb4wb5w54aqbh
-  ==> readline is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/readline-7.0-nxhwrg7xwc6nbsm2v4ezwe63l6nfidbi
-  ==> gdbm is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gdbm-1.14.1-q4fpyuo7ouhkeq6d3oabtrppctpvxmes
-  ==> perl is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/perl-5.26.2-ic2kyoadgp3dxfejcbllyplj2wf524fo
-  ==> autoconf is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/autoconf-2.69-3sx2gxeibc4oasqd4o5h6lnwpcpsgd2q
-  ==> automake is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/automake-1.16.1-rymw7imfehycqxzj4nuy2oiw3abegooy
-  ==> libtool is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/libtool-2.4.6-o2pfwjf44353ajgr42xqtvzyvqsazkgu
-  ==> Installing gmp
-  ==> Searching for binary cache of gmp
-  ==> Finding buildcaches in /mirror/build_cache
-  ==> Installing gmp from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/gmp-6.1.2/linux-ubuntu16.04-x86_64-gcc-5.4.0-gmp-6.1.2-qc4qcfz4monpllc3nqupdo7vwinf73sw.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:18:16 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed gmp from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gmp-6.1.2-qc4qcfz4monpllc3nqupdo7vwinf73sw
-  ==> Installing isl
-  ==> Searching for binary cache of isl
-  ==> Installing isl from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/isl-0.18/linux-ubuntu16.04-x86_64-gcc-5.4.0-isl-0.18-vttqoutnsmjpm3ogb52rninksc7hq5ax.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:05:19 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed isl from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/isl-0.18-vttqoutnsmjpm3ogb52rninksc7hq5ax
-  ==> Installing mpfr
-  ==> Searching for binary cache of mpfr
-  ==> Installing mpfr from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/mpfr-3.1.6/linux-ubuntu16.04-x86_64-gcc-5.4.0-mpfr-3.1.6-jnt2nnp5pmvikbw7opueajlbwbhmjxyv.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:32:07 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed mpfr from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/mpfr-3.1.6-jnt2nnp5pmvikbw7opueajlbwbhmjxyv
-  ==> Installing mpc
-  ==> Searching for binary cache of mpc
-  ==> Installing mpc from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/mpc-1.1.0/linux-ubuntu16.04-x86_64-gcc-5.4.0-mpc-1.1.0-iuf3gc3zpgr4n4mditnxhff6x3joxi27.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:30:35 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed mpc from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/mpc-1.1.0-iuf3gc3zpgr4n4mditnxhff6x3joxi27
-  ==> zlib is already installed in /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb
-  Installing gcc
-  ==> Searching for binary cache of gcc
-  ==> Finding buildcaches in /mirror/build_cache
-  ==> Installing gcc from binary cache
-  ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0/linux-ubuntu16.04-x86_64-gcc-5.4.0-gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs.spack
-  ######################################################################## 100.0%
-  gpg: Signature made Sat Nov 10 05:22:47 2018 UTC using RSA key ID 3B7C69B2
-  gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
-  gpg: WARNING: This key is not certified with a trusted signature!
-  gpg:          There is no indication that the signature belongs to the owner.
-  Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F  D6E9 9CFA 4A45 3B7C 69B2
-  ==> Successfully installed gcc from binary cache
-  [+] /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs
-
-  $ spack find -p gcc
-  spack find -p gcc
-  ==> 1 installed package
-  -- linux-ubuntu16.04-x86_64 / gcc@5.4.0 -------------------------
-      gcc@7.2.0  /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs
-
-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@7.2.0.
-
-.. code-block:: console
-
-  $ spack compiler add `spack location -i gcc@7.2.0`
-  ==> Added 1 new compiler to /home/ubuntu/.spack/linux/compilers.yaml
-      gcc@7.2.0
-  ==> Compilers are defined in the following files:
-      /home/ubuntu/.spack/linux/compilers.yaml
-
-We can also remove compilers from our configuration using ``spack compiler remove <compiler_spec>``
-
-.. code-block:: console
-
-  $ spack compiler remove gcc@7.2.0
-  ==> Removed compiler gcc@7.2.0
diff --git a/lib/spack/docs/tutorial_buildsystems.rst b/lib/spack/docs/tutorial_buildsystems.rst
deleted file mode 100644
index 9f3785e7ee..0000000000
--- a/lib/spack/docs/tutorial_buildsystems.rst
+++ /dev/null
@@ -1,807 +0,0 @@
-.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
-   Spack Project Developers. See the top-level COPYRIGHT file for details.
-
-   SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
-.. _build-systems-tutorial:
-
-==============================
-Spack Package Build Systems
-==============================
-
-You may begin to notice after writing a couple of package template files a
-pattern emerge for some packages. For example, you may find yourself writing
-an :code:`install()` method that invokes: :code:`configure`, :code:`cmake`,
-:code:`make`, :code:`make install`. You may also find yourself writing
-:code:`"prefix=" + prefix` as an argument to :code:`configure` or :code:`cmake`.
-Rather than having you repeat these lines for all packages, Spack has
-classes that can take care of these patterns. In addition,
-these package files allow for finer grained control of these build systems.
-In this section, we will describe each build system and give examples on
-how these can be manipulated to install a package.
-
------------------------
-Package Class Hierarchy
------------------------
-
-.. graphviz::
-
-    digraph G {
-
-        node [
-            shape = "record"
-        ]
-        edge [
-            arrowhead = "empty"
-        ]
-
-        PackageBase -> Package [dir=back]
-        PackageBase -> MakefilePackage [dir=back]
-        PackageBase -> AutotoolsPackage [dir=back]
-        PackageBase -> CMakePackage [dir=back]
-        PackageBase -> PythonPackage [dir=back]
-    }
-
-The above diagram gives a high level view of the class hierarchy and how each
-package relates. Each subclass inherits from the :code:`PackageBaseClass`
-super class. The bulk of the work is done in this super class which includes
-fetching, extracting to a staging directory and installing. Each subclass
-then adds additional build-system-specific functionality. In the following
-sections, we will go over examples of how to utilize each subclass and to see
-how powerful these abstractions are when packaging.
-
------------------
-Package
------------------
-
-We've already seen examples of a :code:`Package` class in our walkthrough for writing
-package files, so we won't be spending much time with them here. Briefly,
-the Package class allows for abitrary control over the build process, whereas
-subclasses rely on certain patterns (e.g. :code:`configure` :code:`make`
-:code:`make install`) to be useful. :code:`Package` classes are particularly useful
-for packages that have a non-conventional way of being built since the packager
-can utilize some of Spack's helper functions to customize the building and
-installing of a package.
-
--------------------
-Autotools
--------------------
-
-As we have seen earlier, packages using :code:`Autotools` use :code:`configure`,
-:code:`make` and :code:`make install` commands to execute the build and
-install process. In our :code:`Package` class, your typical build incantation will
-consist of the following:
-
-.. code-block:: python
-
-    def install(self, spec, prefix):
-        configure("--prefix=" + prefix)
-        make()
-        make("install")
-
-You'll see that this looks similar to what we wrote in our packaging tutorial.
-
-The :code:`Autotools` subclass aims to simplify writing package files and provides
-convenience methods to manipulate each of the different phases for a :code:`Autotools`
-build system.
-
-:code:`Autotools` packages consist of four phases:
-
-1. :code:`autoreconf()`
-2. :code:`configure()`
-3. :code:`build()`
-4. :code:`install()`
-
-
-Each of these phases have sensible defaults. Let's take a quick look at some
-the internals of the :code:`Autotools` class:
-
-.. code-block:: console
-
-    $ spack edit --build-system autotools
-
-
-This will open the :code:`AutotoolsPackage` file in your text editor.
-
-.. note::
-    The examples showing code for these classes is abridged to avoid having
-    long examples. We only show what is relevant to the packager.
-
-
-.. literalinclude:: _spack_root/lib/spack/spack/build_systems/autotools.py
-    :language: python
-    :emphasize-lines: 33,36,54
-    :lines: 30-76,240-248
-    :linenos:
-
-
-Important to note are the highlighted lines. These properties allow the
-packager to set what build targets and install targets they want for their
-package. If, for example, we wanted to add as our build target :code:`foo`
-then we can append to our :code:`build_targets` property:
-
-.. code-block:: python
-
-    build_targets = ["foo"]
-
-Which is similiar to invoking make in our Package
-
-.. code-block:: python
-
-     make("foo")
-
-This is useful if we have packages that ignore environment variables and need
-a command-line argument.
-
-Another thing to take note of is in the :code:`configure()` method.
-Here we see that the :code:`prefix` argument is already included since it is a
-common pattern amongst packages using :code:`Autotools`. We then only have to
-override :code:`configure_args()`, which will then return it's output to
-to :code:`configure()`. Then, :code:`configure()` will append the common
-arguments
-
-Packagers also have the option to run :code:`autoreconf` in case a package
-needs to update the build system and generate a new :code:`configure`. Though,
-for the most part this will be unnecessary.
-
-Let's look at the :code:`mpileaks` package.py file that we worked on earlier:
-
-.. code-block:: console
-
-    $ spack edit mpileaks
-
-Notice that mpileaks is a :code:`Package` class but uses the :code:`Autotools`
-build system. Although this package is acceptable let's make this into an
-:code:`AutotoolsPackage` class and simplify it further.
-
-.. literalinclude:: tutorial/examples/Autotools/0.package.py
-   :language: python
-   :emphasize-lines: 9
-   :linenos:
-
-We first inherit from the :code:`AutotoolsPackage` class.
-
-
-Although we could keep the :code:`install()` method, most of it can be handled
-by the :code:`AutotoolsPackage` base class. In fact, the only thing that needs
-to be overridden is :code:`configure_args()`.
-
-.. literalinclude:: tutorial/examples/Autotools/1.package.py
-   :language: python
-   :emphasize-lines: 25,26,27,28,29,30,31,32
-   :linenos:
-
-Since Spack takes care of setting the prefix for us we can exclude that as
-an argument to :code:`configure`. Our packages look simpler, and the packager
-does not need to worry about whether they have properly included :code:`configure`
-and :code:`make`.
-
-This version of the :code:`mpileaks` package installs the same as the previous,
-but the :code:`AutotoolsPackage` class lets us do it with a cleaner looking
-package file.
-
------------------
-Makefile
------------------
-
-Packages that utilize :code:`Make` or a :code:`Makefile` usually require you
-to edit a :code:`Makefile` to set up platform and compiler specific variables.
-These packages are handled by the :code:`Makefile` subclass which provides
-convenience methods to help write these types of packages.
-
-A :code:`MakefilePackage` class has three phases that can be overridden. These include:
-
-    1. :code:`edit()`
-    2. :code:`build()`
-    3. :code:`install()`
-
-Packagers then have the ability to control how a :code:`Makefile` is edited, and
-what targets to include for the build phase or install phase.
-
-Let's also take a look inside the :code:`MakefilePackage` class:
-
-.. code-block:: console
-
-    $ spack edit --build-system makefile
-
-Take note of the following:
-
-
-.. literalinclude:: _spack_root/lib/spack/spack/build_systems/makefile.py
-   :language: python
-   :lines: 14,43-61,70-88
-   :emphasize-lines: 21,27,34
-   :linenos:
-
-Similar to :code:`Autotools`, :code:`MakefilePackage` class has properties
-that can be set by the packager. We can also override the different
-methods highlighted.
-
-
-Let's try to recreate the Bowtie_ package:
-
-.. _Bowtie: http://bowtie-bio.sourceforge.net/index.shtml
-
-
-.. code-block:: console
-
-    $ spack create -f https://downloads.sourceforge.net/project/bowtie-bio/bowtie/1.2.1.1/bowtie-1.2.1.1-src.zip
-    ==> This looks like a URL for bowtie
-    ==> Found 1 version of bowtie:
-
-    1.2.1.1  https://downloads.sourceforge.net/project/bowtie-bio/bowtie/1.2.1.1/bowtie-1.2.1.1-src.zip
-
-    ==> How many would you like to checksum? (default is 1, q to abort) 1
-    ==> Downloading...
-    ==> Fetching https://downloads.sourceforge.net/project/bowtie-bio/bowtie/1.2.1.1/bowtie-1.2.1.1-src.zip
-    ######################################################################## 100.0%
-    ==> Checksummed 1 version of bowtie
-    ==> This package looks like it uses the makefile build system
-    ==> Created template for bowtie package
-    ==> Created package file: /Users/mamelara/spack/var/spack/repos/builtin/packages/bowtie/package.py
-
-Once the fetching is completed, Spack will open up your text editor in the
-usual fashion and create a template of a :code:`MakefilePackage` package.py.
-
-.. literalinclude:: tutorial/examples/Makefile/0.package.py
-   :language: python
-   :linenos:
-
-Spack was successfully able to detect that :code:`Bowtie` uses :code:`Make`.
-Let's add in the rest of our details for our package:
-
-.. literalinclude:: tutorial/examples/Makefile/1.package.py
-   :language: python
-   :emphasize-lines: 10,11,13,14,18,20
-   :linenos:
-
-As we mentioned earlier, most packages using a :code:`Makefile` have hard-coded
-variables that must be edited. These variables are fine if you happen to not
-care about setup or types of compilers used but Spack is designed to work with
-any compiler. The :code:`MakefilePackage` subclass makes it easy to edit
-these :code:`Makefiles` by having an :code:`edit()` method that
-can be overridden.
-
-Let's take a look at the default :code:`Makefile` that :code:`Bowtie` provides.
-If we look inside, we see that :code:`CC` and :code:`CXX` point to our GNU
-compiler:
-
-.. code-block:: console
-
-    $ spack stage bowtie
-
-.. note::
-    As usual make sure you have shell support activated with spack:
-        :code:`source /path/to/spack_root/spack/share/spack/setup-env.sh`
-
-.. code-block:: console
-
-    $ spack cd -s bowtie
-    $ cd bowtie-1.2
-    $ vim Makefile
-
-
-.. code-block:: make
-
-    CPP = g++ -w
-    CXX = $(CPP)
-    CC = gcc
-    LIBS = $(LDFLAGS) -lz
-    HEADERS = $(wildcard *.h)
-
-To fix this, we need to use the :code:`edit()` method to write our custom
-:code:`Makefile`.
-
-.. literalinclude:: tutorial/examples/Makefile/2.package.py
-   :language: python
-   :emphasize-lines: 23,24,25
-   :linenos:
-
-Here we use a :code:`FileFilter` object to edit our :code:`Makefile`. It takes
-in a regular expression and then replaces :code:`CC` and :code:`CXX` to whatever
-Spack sets :code:`CC` and :code:`CXX` environment variables to. This allows us to
-build :code:`Bowtie` with whatever compiler we specify through Spack's
-:code:`spec` syntax.
-
-Let's change the build and install phases of our package:
-
-.. literalinclude:: tutorial/examples/Makefile/3.package.py
-   :language: python
-   :emphasize-lines: 28,29,30,31,32,35,36
-   :linenos:
-
-Here demonstrate another strategy that we can use to manipulate our package
-We can provide command-line arguments to :code:`make()`. Since :code:`Bowtie`
-can use :code:`tbb` we can either add :code:`NO_TBB=1` as a argument to prevent
-:code:`tbb` support or we can just invoke :code:`make` with no arguments.
-
-:code:`Bowtie` requires our :code:`install_target` to provide a path to
-the install directory. We can do this by providing :code:`prefix=` as a command
-line argument to :code:`make()`.
-
-Let's look at a couple of other examples and go through them:
-
-.. code-block:: console
-
-    $ spack edit esmf
-
-Some packages allow environment variables to be set and will honor them.
-Packages that use :code:`?=` for assignment in their :code:`Makefile`
-can be set using environment variables. In our :code:`esmf` example we
-set two environment variables in our :code:`edit()` method:
-
-.. code-block:: python
-
-    def edit(self, spec, prefix):
-        for var in os.environ:
-            if var.startswith('ESMF_'):
-                os.environ.pop(var)
-
-        # More code ...
-
-        if self.compiler.name == 'gcc':
-            os.environ['ESMF_COMPILER'] = 'gfortran'
-        elif self.compiler.name == 'intel':
-            os.environ['ESMF_COMPILER'] = 'intel'
-        elif self.compiler.name == 'clang':
-            os.environ['ESMF_COMPILER'] = 'gfortranclang'
-        elif self.compiler.name == 'nag':
-            os.environ['ESMF_COMPILER'] = 'nag'
-        elif self.compiler.name == 'pgi':
-            os.environ['ESMF_COMPILER'] = 'pgi'
-        else:
-            msg  = "The compiler you are building with, "
-            msg += "'{0}', is not supported by ESMF."
-            raise InstallError(msg.format(self.compiler.name))
-
-As you may have noticed, we didn't really write anything to the :code:`Makefile`
-but rather we set environment variables that will override variables set in
-the :code:`Makefile`.
-
-Some packages include a configuration file that sets certain compiler variables,
-platform specific variables, and the location of dependencies or libraries.
-If the file is simple and only requires a couple of changes, we can overwrite
-those entries with our :code:`FileFilter` object. If the configuration involves
-complex changes, we can write a new configuration file from scratch.
-
-Let's look at an example of this in the :code:`elk` package:
-
-.. code-block:: console
-
-    $ spack edit elk
-
-.. code-block:: python
-
-        def edit(self, spec, prefix):
-            # Dictionary of configuration options
-            config = {
-                'MAKE': 'make',
-                'AR':   'ar'
-            }
-
-            # Compiler-specific flags
-            flags = ''
-            if self.compiler.name == 'intel':
-                flags = '-O3 -ip -unroll -no-prec-div'
-            elif self.compiler.name == 'gcc':
-                flags = '-O3 -ffast-math -funroll-loops'
-            elif self.compiler.name == 'pgi':
-                flags = '-O3 -lpthread'
-            elif self.compiler.name == 'g95':
-                flags = '-O3 -fno-second-underscore'
-            elif self.compiler.name == 'nag':
-                flags = '-O4 -kind=byte -dusty -dcfuns'
-            elif self.compiler.name == 'xl':
-                flags = '-O3'
-            config['F90_OPTS'] = flags
-            config['F77_OPTS'] = flags
-
-            # BLAS/LAPACK support
-            # Note: BLAS/LAPACK must be compiled with OpenMP support
-            # if the +openmp variant is chosen
-            blas = 'blas.a'
-            lapack = 'lapack.a'
-            if '+blas' in spec:
-                blas = spec['blas'].libs.joined()
-            if '+lapack' in spec:
-                lapack = spec['lapack'].libs.joined()
-            # lapack must come before blas
-            config['LIB_LPK'] = ' '.join([lapack, blas])
-
-            # FFT support
-            if '+fft' in spec:
-                config['LIB_FFT'] = join_path(spec['fftw'].prefix.lib,
-                                            'libfftw3.so')
-                config['SRC_FFT'] = 'zfftifc_fftw.f90'
-            else:
-                config['LIB_FFT'] = 'fftlib.a'
-                config['SRC_FFT'] = 'zfftifc.f90'
-
-            # MPI support
-            if '+mpi' in spec:
-                config['F90'] = spec['mpi'].mpifc
-                config['F77'] = spec['mpi'].mpif77
-            else:
-                config['F90'] = spack_fc
-                config['F77'] = spack_f77
-                config['SRC_MPI'] = 'mpi_stub.f90'
-
-            # OpenMP support
-            if '+openmp' in spec:
-                config['F90_OPTS'] += ' ' + self.compiler.openmp_flag
-                config['F77_OPTS'] += ' ' + self.compiler.openmp_flag
-            else:
-                config['SRC_OMP'] = 'omp_stub.f90'
-
-            # Libxc support
-            if '+libxc' in spec:
-                config['LIB_libxc'] = ' '.join([
-                    join_path(spec['libxc'].prefix.lib, 'libxcf90.so'),
-                    join_path(spec['libxc'].prefix.lib, 'libxc.so')
-                ])
-                config['SRC_libxc'] = ' '.join([
-                    'libxc_funcs.f90',
-                    'libxc.f90',
-                    'libxcifc.f90'
-                ])
-            else:
-                config['SRC_libxc'] = 'libxcifc_stub.f90'
-
-            # Write configuration options to include file
-            with open('make.inc', 'w') as inc:
-                for key in config:
-                    inc.write('{0} = {1}\n'.format(key, config[key]))
-
-:code:`config` is just a dictionary that we can add key-value pairs to. By the
-end of the :code:`edit()` method we write the contents of our dictionary to
-:code:`make.inc`.
-
----------------
-CMake
----------------
-
-CMake_ is another common build system that has been gaining popularity. It works
-in a similar manner to :code:`Autotools` but with differences in variable names,
-the number of configuration options available, and the handling of shared libraries.
-Typical build incantations look like this:
-
-.. _CMake: https://cmake.org
-
-.. code-block:: python
-
-    def install(self, spec, prefix):
-        cmake("-DCMAKE_INSTALL_PREFIX:PATH=/path/to/install_dir ..")
-        make()
-        make("install")
-
-As you can see from the example above, it's very similar to invoking
-:code:`configure` and :code:`make` in an :code:`Autotools` build system. However,
-the variable names and options differ. Most options in CMake are prefixed
-with a :code:`'-D'` flag to indicate a configuration setting.
-
-In the :code:`CMakePackage` class we can override the following phases:
-
-1. :code:`cmake()`
-2. :code:`build()`
-3. :code:`install()`
-
-The :code:`CMakePackage` class also provides sensible defaults so we only need to
-override :code:`cmake_args()`.
-
-Let's look at these defaults in the :code:`CMakePackage` class in the :code:`_std_args()` method:
-
-.. code-block:: console
-
-    $ spack edit --build-system cmake
-
-.. literalinclude:: _spack_root/lib/spack/spack/build_systems/cmake.py
-   :language: python
-   :lines: 102-147
-   :emphasize-lines: 10,18,24,36,37,38,44
-   :linenos:
-
-Some :code:`CMake` packages use different generators. Spack is able to support
-Unix-Makefile_ generators as well as Ninja_ generators.
-
-.. _Unix-Makefile: https://cmake.org/cmake/help/v3.4/generator/Unix%20Makefiles.html
-.. _Ninja: https://cmake.org/cmake/help/v3.4/generator/Ninja.html
-
-If no generator is specified Spack will default to :code:`Unix Makefiles`.
-
-Next we setup the build type. In :code:`CMake` you can specify the build type
-that you want. Options include:
-
-1. :code:`empty`
-2. :code:`Debug`
-3. :code:`Release`
-4. :code:`RelWithDebInfo`
-5. :code:`MinSizeRel`
-
-With these options you can specify whether you want your executable to have
-the debug version only, release version or the release with debug information.
-Release executables tend to be more optimized than Debug. In Spack, we set
-the default as RelWithDebInfo unless otherwise specified through a variant.
-
-Spack then automatically sets up the :code:`-DCMAKE_INSTALL_PREFIX` path,
-appends the build type (:code:`RelWithDebInfo` default), and then specifies a verbose
-:code:`Makefile`.
-
-Next we add the :code:`rpaths` to :code:`-DCMAKE_INSTALL_RPATH:STRING`.
-
-
-Finally we add to :code:`-DCMAKE_PREFIX_PATH:STRING` the locations of all our
-dependencies so that :code:`CMake` can find them.
-
-In the end our :code:`cmake` line will look like this (example is :code:`xrootd`):
-
-.. code-block:: console
-
-    $ cmake $HOME/spack/var/spack/stage/xrootd-4.6.0-4ydm74kbrp4xmcgda5upn33co5pwddyk/xrootd-4.6.0 -G Unix Makefiles -DCMAKE_INSTALL_PREFIX:PATH=$HOME/spack/opt/spack/darwin-sierra-x86_64/clang-9.0.0-apple/xrootd-4.6.0-4ydm74kbrp4xmcgda5upn33co5pwddyk -DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DCMAKE_FIND_FRAMEWORK:STRING=LAST -DCMAKE_INSTALL_RPATH_USE_LINK_PATH:BOOL=FALSE -DCMAKE_INSTALL_RPATH:STRING=$HOME/spack/opt/spack/darwin-sierra-x86_64/clang-9.0.0-apple/xrootd-4.6.0-4ydm74kbrp4xmcgda5upn33co5pwddyk/lib:$HOME/spack/opt/spack/darwin-sierra-x86_64/clang-9.0.0-apple/xrootd-4.6.0-4ydm74kbrp4xmcgda5upn33co5pwddyk/lib64 -DCMAKE_PREFIX_PATH:STRING=$HOME/spack/opt/spack/darwin-sierra-x86_64/clang-9.0.0-apple/cmake-3.9.4-hally3vnbzydiwl3skxcxcbzsscaasx5
-
-We can see now how :code:`CMake` takes care of a lot of the boilerplate code
-that would have to be otherwise typed in.
-
-Let's try to recreate callpath_:
-
-.. _callpath: https://github.com/LLNL/callpath.git
-
-.. code-block:: console
-
-    $ spack create -f https://github.com/llnl/callpath/archive/v1.0.3.tar.gz
-    ==> This looks like a URL for callpath
-    ==> Found 4 versions of callpath:
-
-    1.0.3  https://github.com/LLNL/callpath/archive/v1.0.3.tar.gz
-    1.0.2  https://github.com/LLNL/callpath/archive/v1.0.2.tar.gz
-    1.0.1  https://github.com/LLNL/callpath/archive/v1.0.1.tar.gz
-    1.0    https://github.com/LLNL/callpath/archive/v1.0.tar.gz
-
-    ==> How many would you like to checksum? (default is 1, q to abort) 1
-    ==> Downloading...
-    ==> Fetching https://github.com/LLNL/callpath/archive/v1.0.3.tar.gz
-    ######################################################################## 100.0%
-    ==> Checksummed 1 version of callpath
-    ==> This package looks like it uses the cmake build system
-    ==> Created template for callpath package
-    ==> Created package file: /Users/mamelara/spack/var/spack/repos/builtin/packages/callpath/package.py
-
-
-which then produces the following template:
-
-.. literalinclude:: tutorial/examples/Cmake/0.package.py
-   :language: python
-   :linenos:
-
-Again we fill in the details:
-
-.. literalinclude:: tutorial/examples/Cmake/1.package.py
-   :language: python
-   :linenos:
-   :emphasize-lines: 9,13,14,18,19,20,21,22,23
-
-As mentioned earlier, Spack will use sensible defaults to prevent repeated code
-and to make writing :code:`CMake` package files simpler.
-
-In callpath, we want to add options to :code:`CALLPATH_WALKER` as well as add
-compiler flags. We add the following options like so:
-
-.. literalinclude:: tutorial/examples/Cmake/2.package.py
-   :language: python
-   :linenos:
-   :emphasize-lines: 26,30,31
-
-Now we can control our build options using :code:`cmake_args()`. If defaults are
-sufficient enough for the package, we can leave this method out.
-
-:code:`CMakePackage` classes allow for control of other features in the
-build system. For example, you can specify the path to the "out of source"
-build directory and also point to the root of the :code:`CMakeLists.txt` file if it
-is placed in a non-standard location.
-
-A good example of a package that has its :code:`CMakeLists.txt` file located at a
-different location is found in :code:`spades`.
-
-.. code-block:: console
-
-    $ spack edit spades
-
-.. code-block:: python
-
-    root_cmakelists_dir = "src"
-
-Here :code:`root_cmakelists_dir` will tell Spack where to find the location
-of :code:`CMakeLists.txt`. In this example, it is located a directory level below in
-the :code:`src` directory.
-
-Some :code:`CMake` packages also require the :code:`install` phase to be
-overridden. For example, let's take a look at :code:`sniffles`.
-
-.. code-block:: console
-
-    $ spack edit sniffles
-
-In the :code:`install()` method, we have to manually install our targets
-so we override the :code:`install()` method to do it for us:
-
-.. code-block:: python
-
-    # the build process doesn't actually install anything, do it by hand
-    def install(self, spec, prefix):
-        mkdir(prefix.bin)
-        src = "bin/sniffles-core-{0}".format(spec.version.dotted)
-        binaries = ['sniffles', 'sniffles-debug']
-        for b in binaries:
-            install(join_path(src, b), join_path(prefix.bin, b))
-
-
---------------
-PythonPackage
---------------
-
-Python extensions and modules are built differently from source than most
-applications. Python uses a :code:`setup.py` script to install Python modules.
-The script consists of a call to :code:`setup()` which provides the information
-required to build a module to Distutils. If you're familiar with pip or
-easy_install, setup.py does the same thing.
-
-These modules are usually installed using the following line:
-
-.. code-block:: console
-
-    $ python setup.py install
-
-There are also a list of commands and phases that you can call. To see the full
-list you can run:
-
-.. code-block:: console
-
-    $ python setup.py --help-commands
-    Standard commands:
-        build             build everything needed to install
-        build_py          "build" pure Python modules (copy to build directory)
-        build_ext         build C/C++ extensions (compile/link to build directory)
-        build_clib        build C/C++ libraries used by Python extensions
-        build_scripts     "build" scripts (copy and fixup #! line)
-        clean             (no description available)
-        install           install everything from build directory
-        install_lib       install all Python modules (extensions and pure Python)
-        install_headers   install C/C++ header files
-        install_scripts   install scripts (Python or otherwise)
-        install_data      install data files
-        sdist             create a source distribution (tarball, zip file, etc.)
-        register          register the distribution with the Python package index
-        bdist             create a built (binary) distribution
-        bdist_dumb        create a "dumb" built distribution
-        bdist_rpm         create an RPM distribution
-        bdist_wininst     create an executable installer for MS Windows
-        upload            upload binary package to PyPI
-        check             perform some checks on the package
-
-
-We can write package files for Python packages using the :code:`Package` class,
-but the class brings with it a lot of methods that are useless for Python packages.
-Instead, Spack has a :code:`PythonPackage` subclass that allows packagers
-of Python modules to be able to invoke :code:`setup.py` and use :code:`Distutils`,
-which is much more familiar to a typical python user.
-
-To see the defaults that Spack has for each a methods, we will take a look
-at the :code:`PythonPackage` class:
-
-.. code-block:: console
-
-    $ spack edit --build-system python
-
-We see the following:
-
-
-.. literalinclude:: _spack_root/lib/spack/spack/build_systems/python.py
-   :language: python
-   :lines: 19,146-357
-   :linenos:
-
-Each of these methods have sensible defaults or they can be overridden.
-
-We will write a package file for Pandas_:
-
-.. _pandas: https://pandas.pydata.org
-
-.. code-block:: console
-
-    $ spack create -f https://pypi.io/packages/source/p/pandas/pandas-0.19.0.tar.gz
-    ==> This looks like a URL for pandas
-    ==> Warning: Spack was unable to fetch url list due to a certificate verification problem. You can try running spack -k, which will not check SSL certificates. Use this at your own risk.
-    ==> Found 1 version of pandas:
-
-    0.19.0  https://pypi.io/packages/source/p/pandas/pandas-0.19.0.tar.gz
-
-    ==> How many would you like to checksum? (default is 1, q to abort) 1
-    ==> Downloading...
-    ==> Fetching https://pypi.io/packages/source/p/pandas/pandas-0.19.0.tar.gz
-    ######################################################################## 100.0%
-    ==> Checksummed 1 version of pandas
-    ==> This package looks like it uses the python build system
-    ==> Changing package name from pandas to py-pandas
-    ==> Created template for py-pandas package
-    ==> Created package file: /Users/mamelara/spack/var/spack/repos/builtin/packages/py-pandas/package.py
-
-And we are left with the following template:
-
-.. literalinclude:: tutorial/examples/PyPackage/0.package.py
-   :language: python
-   :linenos:
-
-As you can see this is not any different than any package template that we have
-written. We have the choice of providing build options or using the sensible
-defaults
-
-Luckily for us, there is no need to provide build args.
-
-Next we need to find the dependencies of a package. Dependencies are usually
-listed in :code:`setup.py`. You can find the dependencies by searching for
-:code:`install_requires` keyword in that file. Here it is for :code:`Pandas`:
-
-.. code-block:: python
-
-    # ... code
-    if sys.version_info[0] >= 3:
-
-    setuptools_kwargs = {
-                         'zip_safe': False,
-                         'install_requires': ['python-dateutil >= 2',
-                                              'pytz >= 2011k',
-                                              'numpy >= %s' % min_numpy_ver],
-                         'setup_requires': ['numpy >= %s' % min_numpy_ver],
-                         }
-    if not _have_setuptools:
-        sys.exit("need setuptools/distribute for Py3k"
-                 "\n$ pip install distribute")
-
-    # ... more code
-
-You can find a more comprehensive list at the Pandas documentation_.
-
-.. _documentation: https://pandas.pydata.org/pandas-docs/stable/install.html
-
-
-By reading the documentation and :code:`setup.py` we found that :code:`Pandas`
-depends on :code:`python-dateutil`, :code:`pytz`, and :code:`numpy`, :code:`numexpr`,
-and finally :code:`bottleneck`.
-
-Here is the completed :code:`Pandas` script:
-
-.. literalinclude:: tutorial/examples/PyPackage/1.package.py
-   :language: python
-   :linenos:
-
-It is quite important to declare all the dependencies of a Python package.
-Spack can "activate" Python packages to prevent the user from having to
-load each dependency module explictly. If a dependency is missed, Spack will
-be unable to properly activate the package and it will cause an issue. To
-learn more about extensions go to :ref:`cmd-spack-extensions`.
-
-From this example, you can see that building Python modules is made easy
-through the :code:`PythonPackage` class.
-
--------------------
-Other Build Systems
--------------------
-
-Although we won't get in depth with any of the other build systems that Spack
-supports, it is worth mentioning that Spack does provide subclasses
-for the following build systems:
-
-1. :code:`IntelPackage`
-2. :code:`SconsPackage`
-3. :code:`WafPackage`
-4. :code:`RPackage`
-5. :code:`PerlPackage`
-6. :code:`QMakePackage`
-
-
-Each of these classes have their own abstractions to help assist in writing
-package files. For whatever doesn't fit nicely into the other build-systems,
-you can use the :code:`Package` class.
-
-Hopefully by now you can see how we aim to make packaging simple and
-robust through these classes. If you want to learn more about these build
-systems, check out :ref:`installation_procedure` in the Packaging Guide.
diff --git a/lib/spack/docs/tutorial_configuration.rst b/lib/spack/docs/tutorial_configuration.rst
deleted file mode 100644
index 879bb94967..0000000000
--- a/lib/spack/docs/tutorial_configuration.rst
+++ /dev/null
@@ -1,951 +0,0 @@
-.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
-   Spack Project Developers. See the top-level COPYRIGHT file for details.
-
-   SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
-.. _configs-tutorial:
-
-======================
-Configuration Tutorial
-======================
-
-This tutorial will guide you through various configuration options
-that allow you to customize Spack's behavior with respect to
-software installation. We will first cover the configuration file
-hierarchy. Then, we will cover configuration options for compilers,
-focusing on how they can be used to extend Spack's compiler auto-detection.
-Next, we will cover the packages configuration file, focusing on
-how it can be used to override default build options as well as
-specify external package installations to use. Finally, we will
-briefly touch on the config configuration file, which manages more
-high-level Spack configuration options.
-
-For all of these features, we will demonstrate how we build up a full
-configuration file. For some, we will then demonstrate how the
-configuration affects the install command, and for others we will use
-the ``spack spec`` command to demonstrate how the configuration
-changes have affected Spack's concretization algorithm. The provided
-output is all from a server running Ubuntu version 16.04.
-
-.. _configs-tutorial-scopes:
-
---------------------
-Configuration Scopes
---------------------
-
-Depending on your use case, you may want to provide configuration
-settings common to everyone on your team, or you may want to set
-default behaviors specific to a single user account. Spack provides
-six configuration *scopes* to handle this customization. These scopes,
-in order of decreasing priority, are:
-
-============   ===================================================
-Scope          Directory
-============   ===================================================
-Command-line   N/A
-Custom         Custom directory, specified with ``--config-scope``
-User           ``~/.spack/``
-Site           ``$SPACK_ROOT/etc/spack/``
-System         ``/etc/spack/``
-Defaults       ``$SPACK_ROOT/etc/spack/defaults/``
-============   ===================================================
-
-Spack's default configuration settings reside in
-``$SPACK_ROOT/etc/spack/defaults``. These are useful for reference,
-but should never be directly edited. To override these settings,
-create new configuration files in any of the higher-priority
-configuration scopes.
-
-A particular cluster may have multiple Spack installations associated
-with different projects. To provide settings common to all Spack
-installations, put your configuration files in ``/etc/spack``.
-To provide settings specific to a particular Spack installation,
-you can use the ``$SPACK_ROOT/etc/spack`` directory.
-
-For settings specific to a particular user, you will want to add
-configuration files to the ``~/.spack`` directory. When Spack first
-checked for compilers on your system, you may have noticed that it
-placed your compiler configuration in this directory.
-
-Configuration settings can also be placed in a custom location,
-which is then specified on the command line via ``--config-scope``.
-An example use case is managing two sets of configurations, one for
-development and another for production preferences.
-
-Settings specified on the command line have precedence over all
-other configuration scopes.
-
-You can also use ``spack config blame <config>`` for displaying
-the effective configuration. Spack will show from which scopes
-the configuration has been assembled.
-
-^^^^^^^^^^^^^^^^^^^^^^^^
-Platform-specific Scopes
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-Some facilities manage multiple platforms from a single shared
-file system. In order to handle this, each of the configuration
-scopes listed above has two *sub-scopes*: platform-specific and
-platform-independent. For example, compiler settings can be stored
-in ``compilers.yaml`` configuration files in the following locations:
-
-#. ``~/.spack/<platform>/compilers.yaml``
-#. ``~/.spack/compilers.yaml``
-#. ``$SPACK_ROOT/etc/spack/<platform>/compilers.yaml``
-#. ``$SPACK_ROOT/etc/spack/compilers.yaml``
-#. ``/etc/spack/<platform>/compilers.yaml``
-#. ``/etc/spack/compilers.yaml``
-#. ``$SPACK_ROOT/etc/defaults/<platform>/compilers.yaml``
-#. ``$SPACK_ROOT/etc/defaults/compilers.yaml``
-
-These files are listed in decreasing order of precedence, so files in
-``~/.spack/<platform>`` will override settings in ``~/.spack``.
-
------------
-YAML Format
------------
-
-Spack configurations are YAML dictionaries. Every configuration file
-begins with a top-level dictionary that tells Spack which
-configuration set it modifies. When Spack checks its configuration,
-the configuration scopes are updated as dictionaries in increasing
-order of precedence, allowing higher precedence files to override
-lower. YAML dictionaries use a colon ":" to specify key-value
-pairs. Spack extends YAML syntax slightly to allow a double-colon
-"::" to specify a key-value pair. When a double-colon is used to
-specify a key-value pair, instead of adding that section, Spack
-replaces what was in that section with the new value. For example,
-consider a user's compilers configuration file as follows:
-
-.. code-block:: yaml
-
-   compilers::
-   - compiler:
-       environment: {}
-       extra_rpaths: []
-       flags: {}
-       modules: []
-       operating_system: ubuntu16.04
-       paths:
-         cc: /usr/bin/gcc
-         cxx: /usr/bin/g++
-         f77: /usr/bin/gfortran
-         fc: /usr/bin/gfortran
-       spec: gcc@5.4.0
-       target: x86_64
-
-
-This ensures that no other compilers are used, as the user configuration
-scope is the last scope searched and the ``compilers::`` line replaces
-all previous configuration files information. If the same
-configuration file had a single colon instead of the double colon, it
-would add the GCC version 5.4.0 compiler to whatever other compilers
-were listed in other configuration files.
-
-.. _configs-tutorial-compilers:
-
-----------------------
-Compiler Configuration
-----------------------
-
-For most tasks, we can use Spack with the compilers auto-detected the
-first time Spack runs on a system. As discussed in the basic
-installation tutorial, we can also tell Spack where compilers are
-located using the ``spack compiler add`` command. However, in some
-circumstances we want even more fine-grained control over the
-compilers available. This section will teach you how to exercise that
-control using the compilers configuration file.
-
-We will start by opening the compilers configuration file:
-
-.. code-block:: console
-
-   $ spack config edit compilers
-
-
-.. code-block:: yaml
-
-   compilers:
-   - compiler:
-       environment: {}
-       extra_rpaths: []
-       flags: {}
-       modules: []
-       operating_system: ubuntu16.04
-       paths:
-         cc: /usr/bin/clang-3.7
-         cxx: /usr/bin/clang++-3.7
-         f77: null
-         fc: null
-       spec: clang@3.7.1-2ubuntu2
-       target: x86_64
-   - compiler:
-       environment: {}
-       extra_rpaths: []
-       flags: {}
-       modules: []
-       operating_system: ubuntu16.04
-       paths:
-         cc: /usr/bin/clang
-         cxx: /usr/bin/clang++
-         f77: null
-         fc: null
-       spec: clang@3.8.0-2ubuntu4
-       target: x86_64
-   - compiler:
-       environment: {}
-       extra_rpaths: []
-       flags: {}
-       modules: []
-       operating_system: ubuntu16.04
-       paths:
-         cc: /usr/bin/gcc-4.7
-         cxx: /usr/bin/g++-4.7
-         f77: /usr/bin/gfortran-4.7
-         fc: /usr/bin/gfortran-4.7
-       spec: gcc@4.7
-       target: x86_64
-   - compiler:
-       environment: {}
-       extra_rpaths: []
-       flags: {}
-       modules: []
-       operating_system: ubuntu16.04
-       paths:
-         cc: /usr/bin/gcc
-         cxx: /usr/bin/g++
-         f77: /usr/bin/gfortran
-         fc: /usr/bin/gfortran
-       spec: gcc@5.4.0
-       target: x86_64
-
-
-This specifies two versions of the GCC compiler and two versions of the
-Clang compiler with no Flang compiler. Now suppose we have a code that
-we want to compile with the Clang compiler for C/C++ code, but with
-gfortran for Fortran components. We can do this by adding another entry
-to the ``compilers.yaml`` file.
-
-.. code-block:: yaml
-
-   - compiler:
-       environment: {}
-       extra_rpaths: []
-       flags: {}
-       modules: []
-       operating_system: ubuntu16.04
-       paths:
-         cc: /usr/bin/clang
-         cxx: /usr/bin/clang++
-         f77: /usr/bin/gfortran
-         fc: /usr/bin/gfortran
-       spec: clang@3.8.0-gfortran
-       target: x86_64
-
-
-Let's talk about the sections of this compiler entry that we've changed.
-The biggest change we've made is to the ``paths`` section. This lists
-the paths to the compilers to use for each language/specification.
-In this case, we point to the Clang compiler for C/C++ and the gfortran
-compiler for both specifications of Fortran. We've also changed the
-``spec`` entry for this compiler. The ``spec`` entry is effectively the
-name of the compiler for Spack. It consists of a name and a version
-number, separated by the ``@`` sigil. The name must be one of the supported
-compiler names in Spack (gcc, intel, pgi, xl, xl_r, clang, nag, cce, arm).
-The version number can be an arbitrary string of alphanumeric characters,
-as well as ``-``, ``.``, and ``_``. The ``target`` and ``operating_system``
-sections we leave unchanged. These sections specify when Spack can use
-different compilers, and are primarily useful for configuration files that
-will be used across multiple systems.
-
-We can verify that our new compiler works by invoking it now:
-
-.. code-block:: console
-
-   $ spack install --no-cache zlib %clang@3.8.0-gfortran
-   ...
-
-
-This new compiler also works on Fortran codes:
-
-.. code-block:: console
-
-   $ spack install --no-cache cfitsio~bzip2 %clang@3.8.0-gfortran
-   ...
-
-
-^^^^^^^^^^^^^^
-Compiler Flags
-^^^^^^^^^^^^^^
-
-Some compilers may require specific compiler flags to work properly in
-a particular computing environment. Spack provides configuration
-options for setting compiler flags every time a specific compiler is
-invoked. These flags become part of the package spec and therefore of
-the build provenance. As on the command line, the flags are set
-through the implicit build variables ``cflags``, ``cxxflags``, ``cppflags``,
-``fflags``, ``ldflags``, and ``ldlibs``.
-
-Let's open our compilers configuration file again and add a compiler flag:
-
-.. code-block:: yaml
-
-   - compiler:
-       environment: {}
-       extra_rpaths: []
-       flags:
-         cppflags: -g
-       modules: []
-       operating_system: ubuntu16.04
-       paths:
-         cc: /usr/bin/clang
-         cxx: /usr/bin/clang++
-         f77: /usr/bin/gfortran
-         fc: /usr/bin/gfortran
-       spec: clang@3.8.0-gfortran
-       target: x86_64
-
-
-We can test this out using the ``spack spec`` command to show how the
-spec is concretized:
-
-.. code-block:: console
-
-   $ spack spec cfitsio %clang@3.8.0-gfortran
-   Input spec
-   --------------------------------
-   cfitsio%clang@3.8.0-gfortran
-
-   Normalized
-   --------------------------------
-   cfitsio%clang@3.8.0-gfortran
-
-   Concretized
-   --------------------------------
-   cfitsio@3.410%clang@3.8.0-gfortran cppflags="-g" +bzip2+shared arch=linux-ubuntu16.04-x86_64
-       ^bzip2@1.0.6%clang@3.8.0-gfortran cppflags="-g" +shared arch=linux-ubuntu16.04-x86_64
-
-
-We can see that ``cppflags="-g"`` has been added to every node in the DAG.
-
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Advanced Compiler Configuration
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-There are three fields of the compiler configuration entry that we
-have not yet talked about.
-
-The ``modules`` field of the compiler is used primarily on Cray systems,
-but can be useful on any system that has compilers that are only
-useful when a particular module is loaded. Any modules in the
-``modules`` field of the compiler configuration will be loaded as part
-of the build environment for packages using that compiler.
-
-The ``extra_rpaths`` field of the compiler configuration is used for
-compilers that do not rpath all of their dependencies by
-default. Since compilers are often installed externally to Spack,
-Spack is unable to manage compiler dependencies and enforce
-rpath usage. This can lead to packages not finding link dependencies
-imposed by the compiler properly. For compilers that impose link
-dependencies on the resulting executables that are not rpath'ed into
-the executable automatically, the ``extra_rpaths`` field of the compiler
-configuration tells Spack which dependencies to rpath into every
-executable created by that compiler. The executables will then be able
-to find the link dependencies imposed by the compiler. As an example,
-this field can be set by:
-
-.. code-block:: yaml
-
-   - compiler:
-     ...
-     extra_rpaths:
-      - /apps/intel/ComposerXE2017/compilers_and_libraries_2017.5.239/linux/compiler/lib/intel64_lin
-     ...
-
-
-The ``environment`` field of the compiler configuration is used for
-compilers that require environment variables to be set during build
-time. For example, if your Intel compiler suite requires the
-``INTEL_LICENSE_FILE`` environment variable to point to the proper
-license server, you can set this in ``compilers.yaml`` as follows:
-
-.. code-block:: yaml
-
-  - compiler:
-      environment:
-        set:
-          INTEL_LICENSE_FILE: 1713@license4
-      ...
-
-
-In addition to ``set``, ``environment`` also supports ``unset``,
-``prepend-path``, and ``append-path``.
-
-.. _configs-tutorial-package-prefs:
-
--------------------------------
-Configuring Package Preferences
--------------------------------
-
-Package preferences in Spack are managed through the ``packages.yaml``
-configuration file. First, we will look at the default
-``packages.yaml`` file.
-
-.. code-block:: console
-
-   $ spack config --scope defaults edit packages
-
-
-.. literalinclude:: _spack_root/etc/spack/defaults/packages.yaml
-   :language: yaml
-
-
-This sets the default preferences for compilers and for providers of
-virtual packages. To illustrate how this works, suppose we want to
-change the preferences to prefer the Clang compiler and to prefer
-MPICH over OpenMPI. Currently, we prefer GCC and OpenMPI.
-
-.. code-block:: console
-
-   $ spack spec hdf5
-   Input spec
-   --------------------------------
-   hdf5
-
-   Concretized
-   --------------------------------
-   hdf5@1.10.4%gcc@5.4.0~cxx~debug~fortran~hl+mpi+pic+shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
-       ^openmpi@3.1.3%gcc@5.4.0~cuda+cxx_exceptions fabrics= ~java~legacylaunchers~memchecker~pmi schedulers= ~sqlite3~thread_multiple+vt arch=linux-ubuntu16.04-x86_64
-           ^hwloc@1.11.9%gcc@5.4.0~cairo~cuda+libxml2+pci+shared arch=linux-ubuntu16.04-x86_64
-               ^libpciaccess@0.13.5%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-                   ^libtool@2.4.6%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-                       ^m4@1.4.18%gcc@5.4.0 patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=linux-ubuntu16.04-x86_64
-                           ^libsigsegv@2.11%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-                   ^pkgconf@1.4.2%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-                   ^util-macros@1.19.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-               ^libxml2@2.9.8%gcc@5.4.0~python arch=linux-ubuntu16.04-x86_64
-                   ^xz@5.2.4%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-                   ^zlib@1.2.11%gcc@5.4.0+optimize+pic+shared arch=linux-ubuntu16.04-x86_64
-               ^numactl@2.0.11%gcc@5.4.0 patches=592f30f7f5f757dfc239ad0ffd39a9a048487ad803c26b419e0f96b8cda08c1a arch=linux-ubuntu16.04-x86_64
-                   ^autoconf@2.69%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-                       ^perl@5.26.2%gcc@5.4.0+cpanm patches=0eac10ed90aeb0459ad8851f88081d439a4e41978e586ec743069e8b059370ac +shared+threads arch=linux-ubuntu16.04-x86_64
-                           ^gdbm@1.14.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-                               ^readline@7.0%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-                                   ^ncurses@6.1%gcc@5.4.0~symlinks~termlib arch=linux-ubuntu16.04-x86_64
-                   ^automake@1.16.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-
-
-Now we will open the packages configuration file and update our
-preferences.
-
-.. code-block:: console
-
-  $ spack config edit packages
-
-
-.. code-block:: yaml
-
-   packages:
-     all:
-       compiler: [clang, gcc, intel, pgi, xl, nag]
-       providers:
-         mpi: [mpich, openmpi]
-
-
-Because of the configuration scoping we discussed earlier, this
-overrides the default settings just for these two items.
-
-.. code-block:: console
-
-   $ spack spec hdf5
-   Input spec
-   --------------------------------
-   hdf5
-
-   Concretized
-   --------------------------------
-   hdf5@1.10.4%clang@3.8.0-2ubuntu4~cxx~debug~fortran~hl+mpi+pic+shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
-       ^mpich@3.2.1%clang@3.8.0-2ubuntu4 device=ch3 +hydra netmod=tcp +pmi+romio~verbs arch=linux-ubuntu16.04-x86_64
-           ^findutils@4.6.0%clang@3.8.0-2ubuntu4 patches=84b916c0bf8c51b7e7b28417692f0ad3e7030d1f3c248ba77c42ede5c1c5d11e,bd9e4e5cc280f9753ae14956c4e4aa17fe7a210f55dd6c84aa60b12d106d47a2 arch=linux-ubuntu16.04-x86_64
-               ^autoconf@2.69%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
-                   ^m4@1.4.18%clang@3.8.0-2ubuntu4 patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=linux-ubuntu16.04-x86_64
-                       ^libsigsegv@2.11%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
-                   ^perl@5.26.2%clang@3.8.0-2ubuntu4+cpanm patches=0eac10ed90aeb0459ad8851f88081d439a4e41978e586ec743069e8b059370ac +shared+threads arch=linux-ubuntu16.04-x86_64
-                       ^gdbm@1.14.1%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
-                           ^readline@7.0%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
-                               ^ncurses@6.1%clang@3.8.0-2ubuntu4~symlinks~termlib arch=linux-ubuntu16.04-x86_64
-                                   ^pkgconf@1.4.2%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
-               ^automake@1.16.1%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
-               ^libtool@2.4.6%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
-               ^texinfo@6.5%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
-       ^zlib@1.2.11%clang@3.8.0-2ubuntu4+optimize+pic+shared arch=linux-ubuntu16.04-x86_64
-
-
-^^^^^^^^^^^^^^^^^^^
-Variant Preferences
-^^^^^^^^^^^^^^^^^^^
-
-The packages configuration file can also set variant preferences for
-package variants. For example, let's change our preferences to build all
-packages without shared libraries. We will accomplish this by turning
-off the ``shared`` variant on all packages that have one.
-
-.. code-block:: yaml
-
-   packages:
-     all:
-       compiler: [clang, gcc, intel, pgi, xl, nag]
-       providers:
-         mpi: [mpich, openmpi]
-       variants: ~shared
-
-
-We can check the effect of this command with ``spack spec hdf5`` again.
-
-.. code-block:: console
-
-   $ spack spec hdf5
-   Input spec
-   --------------------------------
-   hdf5
-
-   Concretized
-   --------------------------------
-   hdf5@1.10.4%clang@3.8.0-2ubuntu4~cxx~debug~fortran~hl+mpi+pic~shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
-       ^mpich@3.2.1%clang@3.8.0-2ubuntu4 device=ch3 +hydra netmod=tcp +pmi+romio~verbs arch=linux-ubuntu16.04-x86_64
-           ^findutils@4.6.0%clang@3.8.0-2ubuntu4 patches=84b916c0bf8c51b7e7b28417692f0ad3e7030d1f3c248ba77c42ede5c1c5d11e,bd9e4e5cc280f9753ae14956c4e4aa17fe7a210f55dd6c84aa60b12d106d47a2 arch=linux-ubuntu16.04-x86_64
-               ^autoconf@2.69%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
-                   ^m4@1.4.18%clang@3.8.0-2ubuntu4 patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=linux-ubuntu16.04-x86_64
-                       ^libsigsegv@2.11%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
-                   ^perl@5.26.2%clang@3.8.0-2ubuntu4+cpanm patches=0eac10ed90aeb0459ad8851f88081d439a4e41978e586ec743069e8b059370ac ~shared+threads arch=linux-ubuntu16.04-x86_64
-                       ^gdbm@1.14.1%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
-                           ^readline@7.0%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
-                               ^ncurses@6.1%clang@3.8.0-2ubuntu4~symlinks~termlib arch=linux-ubuntu16.04-x86_64
-                                   ^pkgconf@1.4.2%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
-               ^automake@1.16.1%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
-               ^libtool@2.4.6%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
-               ^texinfo@6.5%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
-       ^zlib@1.2.11%clang@3.8.0-2ubuntu4+optimize+pic~shared arch=linux-ubuntu16.04-x86_64
-
-
-So far we have only made global changes to the package preferences. As
-we've seen throughout this tutorial, HDF5 builds with MPI enabled by
-default in Spack. If we were working on a project that would routinely
-need serial HDF5, that might get annoying quickly, having to type
-``hdf5~mpi`` all the time. Instead, we'll update our preferences for
-HDF5.
-
-.. code-block:: yaml
-
-   packages:
-     all:
-       compiler: [clang, gcc, intel, pgi, xl, nag]
-       providers:
-         mpi: [mpich, openmpi]
-       variants: ~shared
-     hdf5:
-       variants: ~mpi
-
-
-Now hdf5 will concretize without an MPI dependency by default.
-
-.. code-block:: console
-
-   $ spack spec hdf5
-   Input spec
-   --------------------------------
-   hdf5
-
-   Concretized
-   --------------------------------
-   hdf5@1.10.4%clang@3.8.0-2ubuntu4~cxx~debug~fortran~hl~mpi+pic+shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
-       ^zlib@1.2.11%clang@3.8.0-2ubuntu4+optimize+pic~shared arch=linux-ubuntu16.04-x86_64
-
-
-In general, every attribute that we can set for all packages we can
-set separately for an individual package.
-
-^^^^^^^^^^^^^^^^^
-External Packages
-^^^^^^^^^^^^^^^^^
-
-The packages configuration file also controls when Spack will build
-against an externally installed package. On these systems we have a
-pre-installed zlib.
-
-.. code-block:: yaml
-
-   packages:
-     all:
-       compiler: [clang, gcc, intel, pgi, xl, nag]
-       providers:
-         mpi: [mpich, openmpi]
-       variants: ~shared
-     hdf5:
-       variants: ~mpi
-     zlib:
-       paths:
-         zlib@1.2.8%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64: /usr
-
-
-Here, we've told Spack that zlib 1.2.8 is installed on our system.
-We've also told it the installation prefix where zlib can be found.
-We don't know exactly which variants it was built with, but that's
-okay.
-
-.. code-block:: console
-
-   $ spack spec hdf5
-   Input spec
-   --------------------------------
-   hdf5
-
-   Concretized
-   --------------------------------
-   hdf5@1.10.4%gcc@5.4.0~cxx~debug~fortran~hl~mpi+pic+shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
-       ^zlib@1.2.8%gcc@5.4.0+optimize+pic~shared arch=linux-ubuntu16.04-x86_64
-
-
-You'll notice that Spack is now using the external zlib installation,
-but the compiler used to build zlib is now overriding our compiler
-preference of clang. If we explicitly specify Clang:
-
-.. code-block:: console
-
-   $ spack spec hdf5 %clang
-   Input spec
-   --------------------------------
-   hdf5%clang
-
-   Concretized
-   --------------------------------
-   hdf5@1.10.4%clang@3.8.0-2ubuntu4~cxx~debug~fortran~hl~mpi+pic+shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
-       ^zlib@1.2.11%clang@3.8.0-2ubuntu4+optimize+pic~shared arch=linux-ubuntu16.04-x86_64
-
-
-Spack concretizes to both HDF5 and zlib being built with Clang.
-This has a side-effect of rebuilding zlib. If we want to force
-Spack to use the system zlib, we have two choices. We can either
-specify it on the command line, or we can tell Spack that it's
-not allowed to build its own zlib. We'll go with the latter.
-
-.. code-block:: yaml
-
-   packages:
-     all:
-       compiler: [clang, gcc, intel, pgi, xl, nag]
-       providers:
-         mpi: [mpich, openmpi]
-       variants: ~shared
-     hdf5:
-       variants: ~mpi
-     zlib:
-       paths:
-         zlib@1.2.8%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64: /usr
-       buildable: False
-
-
-Now Spack will be forced to choose the external zlib.
-
-.. code-block:: console
-
-   $ spack spec hdf5 %clang
-   Input spec
-   --------------------------------
-   hdf5%clang
-
-   Concretized
-   --------------------------------
-   hdf5@1.10.4%clang@3.8.0-2ubuntu4~cxx~debug~fortran~hl~mpi+pic+shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
-       ^zlib@1.2.8%gcc@5.4.0+optimize+pic~shared arch=linux-ubuntu16.04-x86_64
-
-
-This gets slightly more complicated with virtual dependencies. Suppose
-we don't want to build our own MPI, but we now want a parallel version
-of HDF5? Well, fortunately we have MPICH installed on these systems.
-
-.. code-block:: yaml
-
-   packages:
-     all:
-       compiler: [clang, gcc, intel, pgi, xl, nag]
-       providers:
-         mpi: [mpich, openmpi]
-       variants: ~shared
-     hdf5:
-       variants: ~mpi
-     zlib:
-       paths:
-         zlib@1.2.8%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64: /usr
-       buildable: False
-     mpich:
-       paths:
-         mpich@3.2%gcc@5.4.0 device=ch3 +hydra netmod=tcp +pmi+romio~verbs arch=linux-ubuntu16.04-x86_64: /usr
-       buildable: False
-
-
-If we concretize ``hdf5+mpi`` with this configuration file, we will just
-build with an alternate MPI implementation.
-
-.. code-block:: console
-
-   $ spack spec hdf5+mpi %clang
-   Input spec
-   --------------------------------
-   hdf5%clang+mpi
-
-   Concretized
-   --------------------------------
-   hdf5@1.10.4%clang@3.8.0-2ubuntu4~cxx~debug~fortran~hl+mpi+pic+shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
-       ^openmpi@3.1.3%clang@3.8.0-2ubuntu4~cuda+cxx_exceptions fabrics= ~java~legacylaunchers~memchecker~pmi schedulers= ~sqlite3~thread_multiple+vt arch=linux-ubuntu16.04-x86_64
-           ^hwloc@1.11.9%clang@3.8.0-2ubuntu4~cairo~cuda+libxml2+pci~shared arch=linux-ubuntu16.04-x86_64
-               ^libpciaccess@0.13.5%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
-                   ^libtool@2.4.6%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
-                       ^m4@1.4.18%clang@3.8.0-2ubuntu4 patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=linux-ubuntu16.04-x86_64
-                           ^libsigsegv@2.11%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
-                   ^pkgconf@1.4.2%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
-                   ^util-macros@1.19.1%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
-               ^libxml2@2.9.8%clang@3.8.0-2ubuntu4~python arch=linux-ubuntu16.04-x86_64
-                   ^xz@5.2.4%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
-                   ^zlib@1.2.8%gcc@5.4.0+optimize+pic~shared arch=linux-ubuntu16.04-x86_64
-               ^numactl@2.0.11%clang@3.8.0-2ubuntu4 patches=592f30f7f5f757dfc239ad0ffd39a9a048487ad803c26b419e0f96b8cda08c1a arch=linux-ubuntu16.04-x86_64
-                   ^autoconf@2.69%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
-                       ^perl@5.26.2%clang@3.8.0-2ubuntu4+cpanm patches=0eac10ed90aeb0459ad8851f88081d439a4e41978e586ec743069e8b059370ac ~shared+threads arch=linux-ubuntu16.04-x86_64
-                           ^gdbm@1.14.1%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
-                               ^readline@7.0%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
-                                   ^ncurses@6.1%clang@3.8.0-2ubuntu4~symlinks~termlib arch=linux-ubuntu16.04-x86_64
-                   ^automake@1.16.1%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
-
-
-We have only expressed a preference for MPICH over other MPI
-implementations, and Spack will happily build with one we haven't
-forbid it from building. We could resolve this by requesting
-``hdf5+mpi%clang^mpich`` explicitly, or we can configure Spack not to
-use any other MPI implementation. Since we're focused on
-configurations here and the former can get tedious, we'll need to
-modify our ``packages.yaml`` file again.
-
-While we're at it, we can configure HDF5 to build with MPI by default
-again.
-
-.. code-block:: yaml
-
-   packages:
-     all:
-       compiler: [clang, gcc, intel, pgi, xl, nag]
-       providers:
-         mpi: [mpich, openmpi]
-       variants: ~shared
-     zlib:
-       paths:
-         zlib@1.2.8%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64: /usr
-       buildable: False
-     mpich:
-       paths:
-         mpich@3.2%gcc@5.4.0 device=ch3 +hydra netmod=tcp +pmi+romio~verbs arch=linux-ubuntu16.04-x86_64: /usr
-       buildable: False
-     openmpi:
-       buildable: False
-     mvapich2:
-       buildable: False
-     intel-mpi:
-       buildable: False
-     intel-parallel-studio:
-       buildable: False
-     spectrum-mpi:
-       buildable: False
-     mpilander:
-       buildable: False
-     charm:
-       buildable: False
-     charmpp:
-       buildable: False
-
-
-Now that we have configured Spack not to build any of the possible
-providers for MPI, we can try again.
-
-.. code-block:: console
-
-   $ spack spec hdf5 %clang
-   Input spec
-   --------------------------------
-   hdf5%clang
-
-   Concretized
-   --------------------------------
-   hdf5@1.10.4%clang@3.8.0-2ubuntu4~cxx~debug~fortran~hl+mpi+pic~shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
-       ^mpich@3.2%gcc@5.4.0 device=ch3 +hydra netmod=tcp +pmi+romio~verbs arch=linux-ubuntu16.04-x86_64
-       ^zlib@1.2.8%gcc@5.4.0+optimize+pic~shared arch=linux-ubuntu16.04-x86_64
-
-
-By configuring most of our package preferences in ``packages.yaml``,
-we can cut down on the amount of work we need to do when specifying
-a spec on the command line. In addition to compiler and variant
-preferences, we can specify version preferences as well. Except for
-selecting providers via `^`, anything that you can specify on the
-command line can be specified in ``packages.yaml`` with the exact
-same spec syntax.
-
-^^^^^^^^^^^^^^^^^^^^^^^^
-Installation Permissions
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-The ``packages.yaml`` file also controls the default permissions
-to use when installing a package. You'll notice that by default,
-the installation prefix will be world readable but only user writable.
-
-Let's say we need to install ``converge``, a licensed software package.
-Since a specific research group, ``fluid_dynamics``, pays for this
-license, we want to ensure that only members of this group can access
-the software. We can do this like so:
-
-.. code-block:: yaml
-
-   packages:
-     converge:
-       permissions:
-         read: group
-         group: fluid_dynamics
-
-
-Now, only members of the ``fluid_dynamics`` group can use any
-``converge`` installations.
-
-.. warning::
-
-   Make sure to delete or move the ``packages.yaml`` you have been
-   editing up to this point. Otherwise, it will change the hashes
-   of your packages, leading to differences in the output of later
-   tutorial sections.
-
-
------------------
-High-level Config
------------------
-
-In addition to compiler and package settings, Spack allows customization
-of several high-level settings. These settings are stored in the generic
-``config.yaml`` configuration file. You can see the default settings by
-running:
-
-.. code-block:: console
-
-   $ spack config --scope defaults edit config
-
-
-.. literalinclude:: _spack_root/etc/spack/defaults/config.yaml
-   :language: yaml
-
-
-As you can see, many of the directories Spack uses can be customized.
-For example, you can tell Spack to install packages to a prefix
-outside of the ``$SPACK_ROOT`` hierarchy. Module files can be
-written to a central location if you are using multiple Spack
-instances. If you have a fast scratch file system, you can run builds
-from this file system with the following ``config.yaml``:
-
-.. code-block:: yaml
-
-   config:
-     build_stage:
-       - /scratch/$user/spack-stage
-
-
-.. note::
-
-   It is important to distinguish the build stage directory from other
-   directories in your scratch space to ensure ``spack clean`` does not
-   inadvertently remove unrelated files.  Spack prepends ``spack-stage-``
-   to temporary staging directory names to reduce this risk.  Using a
-   combination of ``spack`` and or ``stage`` in each specified path, as
-   shown in the default settings and documented examples, will add
-   another layer of protection.  See :ref:`config-yaml` for details.
-
-
-On systems with compilers that absolutely *require* environment variables
-like ``LD_LIBRARY_PATH``, it is possible to prevent Spack from cleaning
-the build environment with the ``dirty`` setting:
-
-.. code-block:: yaml
-
-   config:
-     dirty: true
-
-
-However, this is strongly discouraged, as it can pull unwanted libraries
-into the build.
-
-One last setting that may be of interest to many users is the ability
-to customize the parallelism of Spack builds. By default, Spack
-installs all packages in parallel with the number of jobs equal to the
-number of cores on the node (up to a maximum of 16). For example, on a
-node with 16 cores, this will look like:
-
-.. code-block:: console
-
-   $ spack install --no-cache --verbose --overwrite zlib
-   ==> Installing zlib
-   ==> Using cached archive: /home/user/spack/var/spack/cache/zlib/zlib-1.2.11.tar.gz
-   ==> Staging archive: /home/user/spack/var/spack/stage/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb/zlib-1.2.11.tar.gz
-   ==> Created stage in /home/user/spack/var/spack/stage/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb
-   ==> No patches needed for zlib
-   ==> Building zlib [Package]
-   ==> Executing phase: 'install'
-   ==> './configure' '--prefix=/home/user/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb'
-   ...
-   ==> 'make' '-j16'
-   ...
-   ==> 'make' '-j16' 'install'
-   ...
-   ==> Successfully installed zlib
-     Fetch: 0.00s.  Build: 1.03s.  Total: 1.03s.
-   [+] /home/user/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb
-
-
-As you can see, we are building with all 16 cores on the node. If you are
-on a shared login node, this can slow down the system for other users. If
-you have a strict ulimit or restriction on the number of available licenses,
-you may not be able to build at all with this many cores. On nodes with 64+
-cores, you may not see a significant speedup of the build anyway. To limit
-the number of cores our build uses, set ``build_jobs`` like so:
-
-.. code-block:: yaml
-
-   config:
-     build_jobs: 2
-
-
-If we uninstall and reinstall zlib, we see that it now uses only 2 cores:
-
-.. code-block:: console
-
-   $ spack install --no-cache --verbose --overwrite zlib
-   ==> Installing zlib
-   ==> Using cached archive: /home/user/spack/var/spack/cache/zlib/zlib-1.2.11.tar.gz
-   ==> Staging archive: /home/user/spack/var/spack/stage/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb/zlib-1.2.11.tar.gz
-   ==> Created stage in /home/user/spack/var/spack/stage/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb
-   ==> No patches needed for zlib
-   ==> Building zlib [Package]
-   ==> Executing phase: 'install'
-   ==> './configure' '--prefix=/home/user/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb'
-   ...
-   ==> 'make' '-j2'
-   ...
-   ==> 'make' '-j2' 'install'
-   ...
-   ==> Successfully installed zlib
-     Fetch: 0.00s.  Build: 1.03s.  Total: 1.03s.
-   [+] /home/user/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb
-
-
-Obviously, if you want to build everything in serial for whatever reason,
-you would set ``build_jobs`` to 1.
-
---------
-Examples
---------
-
-For examples of how other sites configure Spack, see
-https://github.com/spack/spack-configs. If you use Spack at your site
-and want to share your config files, feel free to submit a pull request!
diff --git a/lib/spack/docs/tutorial_environments.rst b/lib/spack/docs/tutorial_environments.rst
deleted file mode 100644
index 4b86dbd5ac..0000000000
--- a/lib/spack/docs/tutorial_environments.rst
+++ /dev/null
@@ -1,815 +0,0 @@
-.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
-   Spack Project Developers. See the top-level COPYRIGHT file for details.
-
-   SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
-.. _environments-tutorial:
-
-=====================
-Environments Tutorial
-=====================
-
-We've shown you how to install and remove packages with Spack.  You can
-use :ref:`cmd-spack-install` to install packages,
-:ref:`cmd-spack-uninstall` to remove them, and :ref:`cmd-spack-find` to
-look at and query what is installed.  We've also shown you how to
-customize Spack's installation with configuration files like
-:ref:`packages.yaml <build-settings>`.
-
-If you build a lot of software, or if you work on multiple projects,
-managing everything in one place can be overwhelming. The default ``spack
-find`` output may contain many packages, but you may want to *just* focus
-on packages for a particular project.  Moreover, you may want to include
-special configuration with your package groups, e.g., to build all the
-packages in the same group the same way.
-
-Spack **environments** provide a way to handle these problems.
-
--------------------
-Environment basics
--------------------
-
-Let's look at the output of ``spack find`` at this point in the tutorial.
-
-.. code-block:: console
-
-   $ spack find
-   ==> 70 installed packages
-   -- linux-ubuntu16.04-x86_64 / clang@3.8.0-2ubuntu4 --------------
-   tcl@8.6.8  zlib@1.2.8  zlib@1.2.11
-
-   -- linux-ubuntu16.04-x86_64 / gcc@4.7 ---------------------------
-   zlib@1.2.11
-
-   -- linux-ubuntu16.04-x86_64 / gcc@5.4.0 -------------------------
-   adept-utils@1.0.1  hdf5@1.10.4          mpc@1.1.0               perl@5.26.2
-   autoconf@2.69      hdf5@1.10.4          mpfr@3.1.6              pkgconf@1.4.2
-   automake@1.16.1    hdf5@1.10.4          mpich@3.2.1             readline@7.0
-   boost@1.68.0       hwloc@1.11.9         mpileaks@1.0            suite-sparse@5.3.0
-   bzip2@1.0.6        hypre@2.15.1         mumps@5.1.1             tar@1.30
-   callpath@1.0.4     hypre@2.15.1         mumps@5.1.1             tcl@8.6.8
-   cmake@3.12.3       isl@0.18             ncurses@6.1             tcl@8.6.8
-   diffutils@3.6      libdwarf@20180129    netcdf@4.6.1            texinfo@6.5
-   dyninst@9.3.2      libiberty@2.31.1     netcdf@4.6.1            trilinos@12.12.1
-   elfutils@0.173     libpciaccess@0.13.5  netlib-scalapack@2.0.2  trilinos@12.12.1
-   findutils@4.6.0    libsigsegv@2.11      netlib-scalapack@2.0.2  util-macros@1.19.1
-   gcc@7.2.0          libtool@2.4.6        numactl@2.0.11          xz@5.2.4
-   gdbm@1.14.1        libxml2@2.9.8        openblas@0.3.3          zlib@1.2.8
-   gettext@0.19.8.1   m4@1.4.18            openmpi@3.1.3           zlib@1.2.8
-   glm@0.9.7.1        matio@1.5.9          openssl@1.0.2o          zlib@1.2.11
-   gmp@6.1.2          matio@1.5.9          parmetis@4.0.3
-   hdf5@1.10.4        metis@5.1.0          parmetis@4.0.3
-
-
-This is a complete, but cluttered view.  There are packages built with
-both ``openmpi`` and ``mpich``, as well as multiple variants of other
-packages, like ``zlib``.  The query mechanism we learned about in ``spack
-find`` can help, but it would be nice if we could start from a clean
-slate without losing what we've already done.
-
-
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Creating and activating environments
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The ``spack env`` command can help.  Let's create a new environment:
-
-.. code-block:: console
-
-   $ spack env create myproject
-   ==> Created environment 'myproject' in ~/spack/var/spack/environments/myproject
-
-An environment is a virtualized ``spack`` instance that you can use for a
-specific purpose.  You can see the environments we've created so far like this:
-
-.. code-block:: console
-
-   $ spack env list
-   ==> 1 environments
-       myproject
-
-And you can **activate** an environment with ``spack env activate``:
-
-.. code-block:: console
-
-   $ spack env activate myproject
-
-Once you enter an environment, ``spack find`` shows only what is in the
-current environment.  That's nothing, so far:
-
-.. code-block:: console
-
-   $ spack find
-   ==> In environment myproject
-   ==> No root specs
-
-   ==> 0 installed packages
-
-The ``spack find`` output is still *slightly* different.  It tells you
-that you're in the ``myproject`` environment, so that you don't panic
-when you see that there is nothing installed.  It also says that there
-are *no root specs*.  We'll get back to what that means later.
-
-If you *only* want to check what environment you are in, you can use
-``spack env status``:
-
-.. code-block:: console
-
-   $ spack env status
-   ==> In environment myproject
-
-And, if you want to leave this environment and go back to normal Spack,
-you can use ``spack env deactivate``.  We like to use the
-``despacktivate`` alias (which Spack sets up automatically) for short:
-
-.. code-block:: console
-
-   $ despacktivate     # short alias for `spack env deactivate`
-   $ spack env status
-   ==> No active environment
-   $ spack find
-   netcdf@4.6.1            readline@7.0        zlib@1.2.11
-   diffutils@3.6      hdf5@1.10.4       m4@1.4.18            netcdf@4.6.1            suite-sparse@5.3.0
-   dyninst@10.0.0     hwloc@1.11.9      matio@1.5.9          netlib-scalapack@2.0.2  tar@1.30
-   elfutils@0.173     hypre@2.15.1      matio@1.5.9          netlib-scalapack@2.0.2  tcl@8.6.8
-   findutils@4.6.0    hypre@2.15.1      metis@5.1.0          numactl@2.0.11          tcl@8.6.8
-   gcc@7.2.0          intel-tbb@2019    mpc@1.1.0            openblas@0.3.3          texinfo@6.5~
-
-
-^^^^^^^^^^^^^^^^^^^
-Installing packages
-^^^^^^^^^^^^^^^^^^^
-
-Ok, now that we understand how creation and activation work, let's go
-back to ``myproject`` and *install* a few packages:
-
-.. code-block:: console
-
-   $ spack env activate myproject
-   $ spack install tcl
-   ==> tcl is already installed in ~/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/tcl-8.6.8-qhwyccywhx2i6s7ob2gvjrjtj3rnfuqt
-   $ spack install trilinos
-   ==> trilinos is already installed in ~/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/trilinos-12.12.1-rlsruavxqvwk2tgxzxboclbo6ykjf54r
-   $ spack find
-   ==> In environment myproject
-   ==> Root specs
-   tcl  trilinos
-
-   ==> 22 installed packages
-   -- linux-ubuntu16.04-x86_64 / gcc@5.4.0 -------------------------
-   boost@1.68.0  hwloc@1.11.9         matio@1.5.9   netlib-scalapack@2.0.2  parmetis@4.0.3      xz@5.2.4
-   bzip2@1.0.6   hypre@2.15.1         metis@5.1.0   numactl@2.0.11          suite-sparse@5.3.0  zlib@1.2.11
-   glm@0.9.7.1   libpciaccess@0.13.5  mumps@5.1.1   openblas@0.3.3          tcl@8.6.8
-   hdf5@1.10.4   libxml2@2.9.8        netcdf@4.6.1  openmpi@3.1.3           trilinos@12.12.1
-
-We've installed ``tcl`` and ``trilinos`` in our environment, along with
-all of their dependencies.  We call ``tcl`` and ``trilinos`` the
-**roots** because we asked for them explicitly.  The other 20 packages
-listed under "installed packages" are present because they were needed as
-dependencies.  So, these are the roots of the packages' dependency graph.
-
-The "<package> is already installed" messages above are generated because
-we already installed these packages in previous steps of the tutorial,
-and we don't have to rebuild them to put them in an environment.
-
-Now let's create *another* project.  We'll call this one ``myproject2``:
-
-.. code-block:: console
-
-   $ spack env create myproject2
-   ==> Created environment 'myproject2' in ~/spack/var/spack/environments/myproject2
-   $ spack env activate myproject2
-   $ spack install hdf5
-   ==> hdf5 is already installed in ~/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/hdf5-1.10.4-ozyvmhzdew66byarohm4p36ep7wtcuiw
-   $ spack install trilinos
-   ==> trilinos is already installed in ~/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/trilinos-12.12.1-rlsruavxqvwk2tgxzxboclbo6ykjf54r
-   $ spack find
-   ==> In environment myproject2
-   ==> Root specs
-   hdf5  trilinos
-
-   ==> 22 installed packages
-   -- linux-ubuntu16.04-x86_64 / gcc@5.4.0 -------------------------
-   boost@1.68.0  hdf5@1.10.4          libxml2@2.9.8  netcdf@4.6.1            openmpi@3.1.3       xz@5.2.4
-   bzip2@1.0.6   hwloc@1.11.9         matio@1.5.9    netlib-scalapack@2.0.2  parmetis@4.0.3      zlib@1.2.11
-   glm@0.9.7.1   hypre@2.15.1         metis@5.1.0    numactl@2.0.11          suite-sparse@5.3.0
-   hdf5@1.10.4   libpciaccess@0.13.5  mumps@5.1.1    openblas@0.3.3          trilinos@12.12.1
-
-Now we have two environments: one with ``tcl`` and ``trilinos``, and
-another with ``hdf5`` and ``trilinos``.
-
-We can uninstall trilinos from ``myproject2`` as you would expect:
-
-.. code-block:: console
-
-   $ spack uninstall trilinos
-   ==> The following packages will be uninstalled:
-
-       -- linux-ubuntu16.04-x86_64 / gcc@5.4.0 -------------------------
-       rlsruav trilinos@12.12.1%gcc~alloptpkgs+amesos+amesos2+anasazi+aztec+belos+boost build_type=RelWithDebInfo ~cgns~complex~dtk+epetra+epetraext+exodus+explicit_template_instantiation~float+fortran~fortrilinos+gtest+hdf5+hypre+ifpack+ifpack2~intrepid~intrepid2~isorropia+kokkos+metis~minitensor+ml+muelu+mumps~nox~openmp~phalanx~piro~pnetcdf~python~rol~rythmos+sacado~shards+shared~stk+suite-sparse~superlu~superlu-dist~teko~tempus+teuchos+tpetra~x11~xsdkflags~zlib+zoltan+zoltan2
-   ==> Do you want to proceed? [y/N] y
-   $ spack find
-   ==> In environment myproject2
-   ==> Root specs
-   hdf5
-
-   ==> 8 installed packages
-   -- linux-ubuntu16.04-x86_64 / gcc@5.4.0 -------------------------
-   hdf5@1.10.4   libpciaccess@0.13.5  numactl@2.0.11  xz@5.2.4
-   hwloc@1.11.9  libxml2@2.9.8        openmpi@3.1.3   zlib@1.2.11
-
-Now there is only one root spec, ``hdf5``, which requires fewer
-additional dependencies.
-
-However, we still needed ``trilinos`` for the ``myproject`` environment!
-What happened to it?  Let's switch back and see.
-
-.. code-block:: console
-
-   $ despacktivate
-   $ spack env activate myproject
-   $ spack find
-   ==> In environment myproject
-   ==> Root specs
-   tcl  trilinos
-
-   ==> 22 installed packages
-   -- linux-ubuntu16.04-x86_64 / gcc@5.4.0 -------------------------
-   boost@1.68.0  hwloc@1.11.9         matio@1.5.9   netlib-scalapack@2.0.2  parmetis@4.0.3      xz@5.2.4
-   bzip2@1.0.6   hypre@2.15.1         metis@5.1.0   numactl@2.0.11          suite-sparse@5.3.0  zlib@1.2.11
-   glm@0.9.7.1   libpciaccess@0.13.5  mumps@5.1.1   openblas@0.3.3          tcl@8.6.8
-   hdf5@1.10.4   libxml2@2.9.8        netcdf@4.6.1  openmpi@3.1.3           trilinos@12.12.1
-
-
-Spack is smart enough to realize that ``trilinos`` is still present in
-the other environment.  Trilinos won't *actually* be uninstalled unless
-it is no longer needed by any environments or packages.  If it is still
-needed, it is only removed from the environment.
-
--------------------------------
-Dealing with many specs at once
--------------------------------
-
-In the above examples, we just used ``install`` and ``uninstall``.  There
-are other ways to deal with groups of packages, as well.
-
-^^^^^^^^^^^^^
-Adding specs
-^^^^^^^^^^^^^
-
-Let's go back to our first ``myproject`` environment and *add* a few specs instead of installing them:
-
-.. code-block:: console
-
-   $ spack add hdf5
-   ==> Adding hdf5 to environment myproject
-   $ spack add gmp
-   ==> Adding mumps to environment myproject
-   $ spack find
-   ==> In environment myproject
-   ==> Root specs
-   gmp  hdf5  tcl  trilinos
-
-   ==> 22 installed packages
-   -- linux-ubuntu16.04-x86_64 / gcc@5.4.0 -------------------------
-   boost@1.68.0  hwloc@1.11.9         matio@1.5.9   netlib-scalapack@2.0.2  parmetis@4.0.3      xz@5.2.4
-   bzip2@1.0.6   hypre@2.15.1         metis@5.1.0   numactl@2.0.11          suite-sparse@5.3.0  zlib@1.2.11
-   glm@0.9.7.1   libpciaccess@0.13.5  mumps@5.1.1   openblas@0.3.3          tcl@8.6.8
-   hdf5@1.10.4   libxml2@2.9.8        netcdf@4.6.1  openmpi@3.1.3           trilinos@12.12.1
-
-Let's take a close look at what happened.  The two packages we added,
-``hdf5`` and ``gmp``, are present, but they're not installed in the
-environment yet.  ``spack add`` just adds *roots* to the environment, but
-it does not automatically install them.
-
-We can install *all* the as-yet uninstalled packages in an environment by
-simply running ``spack install`` with no arguments:
-
-.. code-block:: console
-
-   $ spack install
-   ==> Concretizing hdf5
-   [+]  ozyvmhz  hdf5@1.10.4%gcc@5.4.0~cxx~debug~fortran~hl+mpi+pic+shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
-   [+]  3njc4q5      ^openmpi@3.1.3%gcc@5.4.0~cuda+cxx_exceptions fabrics= ~java~legacylaunchers~memchecker~pmi schedulers= ~sqlite3~thread_multiple+vt arch=linux-ubuntu16.04-x86_64
-   [+]  43tkw5m          ^hwloc@1.11.9%gcc@5.4.0~cairo~cuda+libxml2+pci+shared arch=linux-ubuntu16.04-x86_64
-   [+]  5urc6tc              ^libpciaccess@0.13.5%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  o2pfwjf                  ^libtool@2.4.6%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  suf5jtc                      ^m4@1.4.18%gcc@5.4.0 patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=linux-ubuntu16.04-x86_64
-   [+]  fypapcp                          ^libsigsegv@2.11%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  fovrh7a                  ^pkgconf@1.4.2%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  milz7fm                  ^util-macros@1.19.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  wpexsph              ^libxml2@2.9.8%gcc@5.4.0~python arch=linux-ubuntu16.04-x86_64
-   [+]  teneqii                  ^xz@5.2.4%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  5nus6kn                  ^zlib@1.2.11%gcc@5.4.0+optimize+pic+shared arch=linux-ubuntu16.04-x86_64
-   [+]  ft463od              ^numactl@2.0.11%gcc@5.4.0 patches=592f30f7f5f757dfc239ad0ffd39a9a048487ad803c26b419e0f96b8cda08c1a arch=linux-ubuntu16.04-x86_64
-   [+]  3sx2gxe                  ^autoconf@2.69%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  ic2kyoa                      ^perl@5.26.2%gcc@5.4.0+cpanm patches=0eac10ed90aeb0459ad8851f88081d439a4e41978e586ec743069e8b059370ac +shared+threads arch=linux-ubuntu16.04-x86_64
-   [+]  q4fpyuo                          ^gdbm@1.14.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  nxhwrg7                              ^readline@7.0%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  3o765ou                                  ^ncurses@6.1%gcc@5.4.0~symlinks~termlib arch=linux-ubuntu16.04-x86_64
-   [+]  rymw7im                  ^automake@1.16.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   ==> Concretizing gmp
-   [+]  qc4qcfz  gmp@6.1.2%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  3sx2gxe      ^autoconf@2.69%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  suf5jtc          ^m4@1.4.18%gcc@5.4.0 patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=linux-ubuntu16.04-x86_64
-   [+]  fypapcp              ^libsigsegv@2.11%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  ic2kyoa          ^perl@5.26.2%gcc@5.4.0+cpanm patches=0eac10ed90aeb0459ad8851f88081d439a4e41978e586ec743069e8b059370ac +shared+threads arch=linux-ubuntu16.04-x86_64
-   [+]  q4fpyuo              ^gdbm@1.14.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  nxhwrg7                  ^readline@7.0%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  3o765ou                      ^ncurses@6.1%gcc@5.4.0~symlinks~termlib arch=linux-ubuntu16.04-x86_64
-   [+]  fovrh7a                          ^pkgconf@1.4.2%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  rymw7im      ^automake@1.16.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  o2pfwjf      ^libtool@2.4.6%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   ==> Installing environment myproject
-   ==> tcl is already installed in ~/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/tcl-8.6.8-qhwyccywhx2i6s7ob2gvjrjtj3rnfuqt
-   ==> trilinos is already installed in ~/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/trilinos-12.12.1-rlsruavxqvwk2tgxzxboclbo6ykjf54r
-   ==> hdf5 is already installed in ~/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/hdf5-1.10.4-ozyvmhzdew66byarohm4p36ep7wtcuiw
-   ==> gmp is already installed in ~/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gmp-6.1.2-qc4qcfz4monpllc3nqupdo7vwinf73sw
-
-Spack will concretize the new roots, and install everything you added to
-the environment.  Now we can see the installed roots in the output of
-``spack find``:
-
-.. code-block:: console
-
-   $ spack find
-   ==> In environment myproject
-   ==> Root specs
-   gmp  hdf5  tcl  trilinos
-
-   ==> 24 installed packages
-   -- linux-ubuntu16.04-x86_64 / gcc@5.4.0 -------------------------
-   boost@1.68.0  hdf5@1.10.4   libpciaccess@0.13.5  mumps@5.1.1             openblas@0.3.3      tcl@8.6.8
-   bzip2@1.0.6   hdf5@1.10.4   libxml2@2.9.8        netcdf@4.6.1            openmpi@3.1.3       trilinos@12.12.1
-   glm@0.9.7.1   hwloc@1.11.9  matio@1.5.9          netlib-scalapack@2.0.2  parmetis@4.0.3      xz@5.2.4
-   gmp@6.1.2     hypre@2.15.1  metis@5.1.0          numactl@2.0.11          suite-sparse@5.3.0  zlib@1.2.11
-
-We can build whole environments this way, by adding specs and installing
-all at once, or we can install them with the usual ``install`` and
-``uninstall`` portions.  The advantage to doing them all at once is that
-we don't have to write a script outside of Spack to automate this, and we
-can kick off a large build of many packages easily.
-
-^^^^^^^^^^^^^^^^^^^^^
-Configuration
-^^^^^^^^^^^^^^^^^^^^^
-
-So far, ``myproject`` does not have any special configuration associated
-with it.  The specs concretize using Spack's defaults:
-
-.. code-block:: console
-
-   $ spack spec hypre
-   Input spec
-   --------------------------------
-   hypre
-
-   Concretized
-   --------------------------------
-   hypre@2.15.1%gcc@5.4.0~debug~int64+internal-superlu+mpi+shared arch=linux-ubuntu16.04-x86_64
-       ^openblas@0.3.3%gcc@5.4.0 cpu_target= ~ilp64 patches=47cfa7a952ac7b2e4632c73ae199d69fb54490627b66a62c681e21019c4ddc9d,714aea33692304a50bd0ccde42590c176c82ded4a8ac7f06e573dc8071929c33 +pic+shared threads=none ~virtual_machine arch=linux-ubuntu16.04-x86_64
-       ^openmpi@3.1.3%gcc@5.4.0~cuda+cxx_exceptions fabrics= ~java~legacylaunchers~memchecker~pmi schedulers= ~sqlite3~thread_multiple+vt arch=linux-ubuntu16.04-x86_64
-           ^hwloc@1.11.9%gcc@5.4.0~cairo~cuda+libxml2+pci+shared arch=linux-ubuntu16.04-x86_64
-               ^libpciaccess@0.13.5%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-                   ^libtool@2.4.6%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-                       ^m4@1.4.18%gcc@5.4.0 patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=linux-ubuntu16.04-x86_64
-                           ^libsigsegv@2.11%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-                   ^pkgconf@1.4.2%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-                   ^util-macros@1.19.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-               ^libxml2@2.9.8%gcc@5.4.0~python arch=linux-ubuntu16.04-x86_64
-                   ^xz@5.2.4%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-                   ^zlib@1.2.11%gcc@5.4.0+optimize+pic+shared arch=linux-ubuntu16.04-x86_64
-               ^numactl@2.0.11%gcc@5.4.0 patches=592f30f7f5f757dfc239ad0ffd39a9a048487ad803c26b419e0f96b8cda08c1a arch=linux-ubuntu16.04-x86_64
-                   ^autoconf@2.69%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-                       ^perl@5.26.2%gcc@5.4.0+cpanm patches=0eac10ed90aeb0459ad8851f88081d439a4e41978e586ec743069e8b059370ac +shared+threads arch=linux-ubuntu16.04-x86_64
-                           ^gdbm@1.14.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-                               ^readline@7.0%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-                                   ^ncurses@6.1%gcc@5.4.0~symlinks~termlib arch=linux-ubuntu16.04-x86_64
-                   ^automake@1.16.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-
-You may want to add extra configuration to your environment.  You can see
-how your environment is configured using ``spack config get``:
-
-.. code-block:: console
-
-   $ spack config get
-   # This is a Spack Environment file.
-   #
-   # It describes a set of packages to be installed, along with
-   # configuration settings.
-   spack:
-     # add package specs to the `specs` list
-     specs: [tcl, trilinos, hdf5, gmp]
-
-It turns out that this is a special configuration format where Spack
-stores the state for the environment. Currently, the file is just a
-``spack:`` header and a list of ``specs``.  These are the roots.
-
-You can edit this file to add your own custom configuration.  Spack
-provides a shortcut to do that:
-
-.. code-block:: console
-
-   spack config edit
-
-You should now see the same file, and edit it to look like this:
-
-.. code-block:: yaml
-
-   # This is a Spack Environment file.
-   #
-   # It describes a set of packages to be installed, along with
-   # configuration settings.
-   spack:
-     packages:
-       all:
-         providers:
-           mpi: [mpich]
-
-     # add package specs to the `specs` list
-     specs: [tcl, trilinos, hdf5, gmp]
-
-Now if we run ``spack spec`` again in the environment, specs will concretize with ``mpich`` as the MPI implementation:
-
-.. code-block:: console
-
-   $ spack spec hypre
-   Input spec
-   --------------------------------
-   hypre
-
-   Concretized
-   --------------------------------
-   hypre@2.15.1%gcc@5.4.0~debug~int64+internal-superlu+mpi+shared arch=linux-ubuntu16.04-x86_64
-       ^mpich@3.2.1%gcc@5.4.0 device=ch3 +hydra netmod=tcp +pmi+romio~verbs arch=linux-ubuntu16.04-x86_64
-           ^findutils@4.6.0%gcc@5.4.0 patches=84b916c0bf8c51b7e7b28417692f0ad3e7030d1f3c248ba77c42ede5c1c5d11e,bd9e4e5cc280f9753ae14956c4e4aa17fe7a210f55dd6c84aa60b12d106d47a2 arch=linux-ubuntu16.04-x86_64
-               ^autoconf@2.69%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-                   ^m4@1.4.18%gcc@5.4.0 patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=linux-ubuntu16.04-x86_64
-                       ^libsigsegv@2.11%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-                   ^perl@5.26.2%gcc@5.4.0+cpanm patches=0eac10ed90aeb0459ad8851f88081d439a4e41978e586ec743069e8b059370ac +shared+threads arch=linux-ubuntu16.04-x86_64
-                       ^gdbm@1.14.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-                           ^readline@7.0%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-                               ^ncurses@6.1%gcc@5.4.0~symlinks~termlib arch=linux-ubuntu16.04-x86_64
-                                   ^pkgconf@1.4.2%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-               ^automake@1.16.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-               ^libtool@2.4.6%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-               ^texinfo@6.5%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-       ^openblas@0.3.3%gcc@5.4.0 cpu_target= ~ilp64 patches=47cfa7a952ac7b2e4632c73ae199d69fb54490627b66a62c681e21019c4ddc9d,714aea33692304a50bd0ccde42590c176c82ded4a8ac7f06e573dc8071929c33 +pic+shared threads=none ~virtual_machine arch=linux-ubuntu16.04-x86_64
-
-In addition to the ``specs`` section, an environment's configuration can
-contain any of the configuration options from Spack's various config
-sections. You can add custom repositories, a custom install location,
-custom compilers, or custom external packages, in addition to the ``package``
-preferences we show here.
-
-But now we have a problem.  We already installed part of this environment
-with openmpi, but now we want to install it with ``mpich``.
-
-You can run ``spack concretize`` inside of an environment to concretize
-all of its specs.  We can run it here:
-
-.. code-block:: console
-
-   $ spack concretize -f
-   ==> Concretizing tcl
-   [+]  qhwyccy  tcl@8.6.8%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  5nus6kn      ^zlib@1.2.11%gcc@5.4.0+optimize+pic+shared arch=linux-ubuntu16.04-x86_64
-   ==> Concretizing trilinos
-   [+]  kqc52mo  trilinos@12.12.1%gcc@5.4.0~alloptpkgs+amesos+amesos2+anasazi+aztec+belos+boost build_type=RelWithDebInfo ~cgns~complex~dtk+epetra+epetraext+exodus+explicit_template_instantiation~float+fortran~fortrilinos+gtest+hdf5+hypre+ifpack+ifpack2~intrepid~intrepid2~isorropia+kokkos+metis~minitensor+ml+muelu+mumps~nox~openmp~phalanx~piro~pnetcdf~python~rol~rythmos+sacado~shards+shared~stk+suite-sparse~superlu~superlu-dist~teko~tempus+teuchos+tpetra~x11~xsdkflags~zlib+zoltan+zoltan2 arch=linux-ubuntu16.04-x86_64
-   [+]  zbgfxap      ^boost@1.68.0%gcc@5.4.0+atomic+chrono~clanglibcpp cxxstd=default +date_time~debug+exception+filesystem+graph~icu+iostreams+locale+log+math~mpi+multithreaded~numpy patches=2ab6c72d03dec6a4ae20220a9dfd5c8c572c5294252155b85c6874d97c323199 +program_options~python+random+regex+serialization+shared+signals~singlethreaded+system~taggedlayout+test+thread+timer~versionedlayout+wave arch=linux-ubuntu16.04-x86_64
-   [+]  ufczdvs          ^bzip2@1.0.6%gcc@5.4.0+shared arch=linux-ubuntu16.04-x86_64
-   [+]  2rhuivg              ^diffutils@3.6%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  5nus6kn          ^zlib@1.2.11%gcc@5.4.0+optimize+pic+shared arch=linux-ubuntu16.04-x86_64
-   [+]  otafqzh      ^cmake@3.12.3%gcc@5.4.0~doc+ncurses+openssl+ownlibs patches=dd3a40d4d92f6b2158b87d6fb354c277947c776424aa03f6dc8096cf3135f5d0 ~qt arch=linux-ubuntu16.04-x86_64
-   [+]  3o765ou          ^ncurses@6.1%gcc@5.4.0~symlinks~termlib arch=linux-ubuntu16.04-x86_64
-   [+]  fovrh7a              ^pkgconf@1.4.2%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  b4y3w3b          ^openssl@1.0.2o%gcc@5.4.0+systemcerts arch=linux-ubuntu16.04-x86_64
-   [+]  ic2kyoa              ^perl@5.26.2%gcc@5.4.0+cpanm patches=0eac10ed90aeb0459ad8851f88081d439a4e41978e586ec743069e8b059370ac +shared+threads arch=linux-ubuntu16.04-x86_64
-   [+]  q4fpyuo                  ^gdbm@1.14.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  nxhwrg7                      ^readline@7.0%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  jnw622j      ^glm@0.9.7.1%gcc@5.4.0 build_type=RelWithDebInfo arch=linux-ubuntu16.04-x86_64
-   [+]  xxd7syh      ^hdf5@1.10.4%gcc@5.4.0~cxx~debug~fortran+hl+mpi+pic+shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
-   [+]  p3f7p2r          ^mpich@3.2.1%gcc@5.4.0 device=ch3 +hydra netmod=tcp +pmi+romio~verbs arch=linux-ubuntu16.04-x86_64
-   [+]  d4iajxs              ^findutils@4.6.0%gcc@5.4.0 patches=84b916c0bf8c51b7e7b28417692f0ad3e7030d1f3c248ba77c42ede5c1c5d11e,bd9e4e5cc280f9753ae14956c4e4aa17fe7a210f55dd6c84aa60b12d106d47a2 arch=linux-ubuntu16.04-x86_64
-   [+]  3sx2gxe                  ^autoconf@2.69%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  suf5jtc                      ^m4@1.4.18%gcc@5.4.0 patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=linux-ubuntu16.04-x86_64
-   [+]  fypapcp                          ^libsigsegv@2.11%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  rymw7im                  ^automake@1.16.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  o2pfwjf                  ^libtool@2.4.6%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  zs7a2pc                  ^texinfo@6.5%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  obewuoz      ^hypre@2.15.1%gcc@5.4.0~debug~int64~internal-superlu+mpi+shared arch=linux-ubuntu16.04-x86_64
-   [+]  cyeg2yi          ^openblas@0.3.3%gcc@5.4.0 cpu_target= ~ilp64 patches=47cfa7a952ac7b2e4632c73ae199d69fb54490627b66a62c681e21019c4ddc9d,714aea33692304a50bd0ccde42590c176c82ded4a8ac7f06e573dc8071929c33 +pic+shared threads=none ~virtual_machine arch=linux-ubuntu16.04-x86_64
-   [+]  gvyqldh      ^matio@1.5.9%gcc@5.4.0+hdf5+shared+zlib arch=linux-ubuntu16.04-x86_64
-   [+]  3wnvp4j      ^metis@5.1.0%gcc@5.4.0 build_type=Release ~gdb~int64 patches=4991da938c1d3a1d3dea78e49bbebecba00273f98df2a656e38b83d55b281da1 ~real64+shared arch=linux-ubuntu16.04-x86_64
-   [+]  cumcj5a      ^mumps@5.1.1%gcc@5.4.0+complex+double+float~int64~metis+mpi~parmetis~ptscotch~scotch+shared arch=linux-ubuntu16.04-x86_64
-   [+]  p7iln2p          ^netlib-scalapack@2.0.2%gcc@5.4.0 build_type=RelWithDebInfo ~pic+shared arch=linux-ubuntu16.04-x86_64
-   [+]  wmmx5sg      ^netcdf@4.6.1%gcc@5.4.0~dap~hdf4 maxdims=1024 maxvars=8192 +mpi~parallel-netcdf+shared arch=linux-ubuntu16.04-x86_64
-   [+]  jehtata      ^parmetis@4.0.3%gcc@5.4.0 build_type=RelWithDebInfo ~gdb patches=4f892531eb0a807eb1b82e683a416d3e35154a455274cf9b162fb02054d11a5b,50ed2081bc939269689789942067c58b3e522c269269a430d5d34c00edbc5870,704b84f7c7444d4372cb59cca6e1209df4ef3b033bc4ee3cf50f369bce972a9d +shared arch=linux-ubuntu16.04-x86_64
-   [+]  zaau4ki      ^suite-sparse@5.3.0%gcc@5.4.0~cuda~openmp+pic~tbb arch=linux-ubuntu16.04-x86_64
-   ==> Concretizing hdf5
-    -   zjgyn3w  hdf5@1.10.4%gcc@5.4.0~cxx~debug~fortran~hl+mpi+pic+shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
-   [+]  p3f7p2r      ^mpich@3.2.1%gcc@5.4.0 device=ch3 +hydra netmod=tcp +pmi+romio~verbs arch=linux-ubuntu16.04-x86_64
-   [+]  d4iajxs          ^findutils@4.6.0%gcc@5.4.0 patches=84b916c0bf8c51b7e7b28417692f0ad3e7030d1f3c248ba77c42ede5c1c5d11e,bd9e4e5cc280f9753ae14956c4e4aa17fe7a210f55dd6c84aa60b12d106d47a2 arch=linux-ubuntu16.04-x86_64
-   [+]  3sx2gxe              ^autoconf@2.69%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  suf5jtc                  ^m4@1.4.18%gcc@5.4.0 patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=linux-ubuntu16.04-x86_64
-   [+]  fypapcp                      ^libsigsegv@2.11%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  ic2kyoa                  ^perl@5.26.2%gcc@5.4.0+cpanm patches=0eac10ed90aeb0459ad8851f88081d439a4e41978e586ec743069e8b059370ac +shared+threads arch=linux-ubuntu16.04-x86_64
-   [+]  q4fpyuo                      ^gdbm@1.14.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  nxhwrg7                          ^readline@7.0%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  3o765ou                              ^ncurses@6.1%gcc@5.4.0~symlinks~termlib arch=linux-ubuntu16.04-x86_64
-   [+]  fovrh7a                                  ^pkgconf@1.4.2%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  rymw7im              ^automake@1.16.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  o2pfwjf              ^libtool@2.4.6%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  zs7a2pc              ^texinfo@6.5%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  5nus6kn      ^zlib@1.2.11%gcc@5.4.0+optimize+pic+shared arch=linux-ubuntu16.04-x86_64
-   ==> Concretizing gmp
-   [+]  qc4qcfz  gmp@6.1.2%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  3sx2gxe      ^autoconf@2.69%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  suf5jtc          ^m4@1.4.18%gcc@5.4.0 patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=linux-ubuntu16.04-x86_64
-   [+]  fypapcp              ^libsigsegv@2.11%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  ic2kyoa          ^perl@5.26.2%gcc@5.4.0+cpanm patches=0eac10ed90aeb0459ad8851f88081d439a4e41978e586ec743069e8b059370ac +shared+threads arch=linux-ubuntu16.04-x86_64
-   [+]  q4fpyuo              ^gdbm@1.14.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  nxhwrg7                  ^readline@7.0%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  3o765ou                      ^ncurses@6.1%gcc@5.4.0~symlinks~termlib arch=linux-ubuntu16.04-x86_64
-   [+]  fovrh7a                          ^pkgconf@1.4.2%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  rymw7im      ^automake@1.16.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  o2pfwjf      ^libtool@2.4.6%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-
-Now, all the specs in the environment are concrete and ready to be
-installed with ``mpich`` as the MPI implementation.
-
-Normally, we could just run ``spack config edit``, edit the environment
-configuration, ``spack add`` some specs, and ``spack install``.
-
-But, when we already have installed packages in the environment, we have
-to force everything in the environment to be re-concretized using ``spack
-concretize -f``.  *Then* we can re-run ``spack install``.
-
-
------------------------------------
-``spack.yaml`` and ``spack.lock``
------------------------------------
-
-So far we've shown you how to interact with environments from the command
-line, but they also have a file-based interface that can be used by
-developers and admins to manage workflows for projects.
-
-In this section we'll dive a little deeper to see how environments are
-implemented, and how you could use this in your day-to-day development.
-
-^^^^^^^^^^^^^^
-``spack.yaml``
-^^^^^^^^^^^^^^
-
-Earlier, we changed an environment's configuration using ``spack config
-edit``.  We were actually editing a special file called ``spack.yaml``.
-Let's take a look.
-
-We can get directly to the current environment's location using ``spack cd``:
-
-.. code-block:: console
-
-   $ spack cd -e myproject
-   $ pwd
-   ~/spack/var/spack/environments/myproject
-   $ ls
-   spack.lock  spack.yaml
-
-We notice two things here.  First, the environment is just a directory
-inside of ``var/spack/environments`` within the Spack installation.
-Second, it contains two important files: ``spack.yaml`` and
-``spack.lock``.
-
-``spack.yaml`` is the configuration file for environments that we've
-already seen, but it does not *have* to live inside Spack.  If you create
-an environment using ``spack env create``, it is *managed* by
-Spack in the ``var/spack/environments`` directory, and you can refer to
-it by name.
-
-You can actually put a ``spack.yaml`` file *anywhere*, and you can use it
-to bundle an environment, or a list of dependencies to install, with your
-project.  Let's make a simple project:
-
-.. code-block:: console
-
-   $ cd
-   $ mkdir code
-   $ cd code
-   $ spack env create -d .
-   ==> Created environment in ~/code
-
-Here, we made a new directory called *code*, and we used the ``-d``
-option to create an environment in it.
-
-What really happened?
-
-.. code-block:: console
-
-   $ ls
-   spack.yaml
-   $ cat spack.yaml
-   # This is a Spack Environment file.
-   #
-   # It describes a set of packages to be installed, along with
-   # configuration settings.
-   spack:
-     # add package specs to the `specs` list
-     specs: []
-
-Spack just created a ``spack.yaml`` file in the code directory, with an
-empty list of root specs.  Now we have a Spack environment, *in a
-directory*, that we can use to manage dependencies.  Suppose your project
-depends on ``boost``, ``trilinos``, and ``openmpi``.  You can add these
-to your spec list:
-
-.. code-block:: yaml
-
-   # This is a Spack Environment file.
-   #
-   # It describes a set of packages to be installed, along with
-   # configuration settings.
-   spack:
-     # add package specs to the `specs` list
-     specs:
-     - boost
-     - trilinos
-     - openmpi
-
-And now *anyone* who uses the *code* repository can use this format to
-install the project's dependencies.  They need only clone the repository,
-``cd`` into it, and type ``spack install``:
-
-.. code-block:: console
-
-   $ spack install
-   ==> Concretizing boost
-   [+]  zbgfxap  boost@1.68.0%gcc@5.4.0+atomic+chrono~clanglibcpp cxxstd=default +date_time~debug+exception+filesystem+graph~icu+iostreams+locale+log+math~mpi+multithreaded~numpy patches=2ab6c72d03dec6a4ae20220a9dfd5c8c572c5294252155b85c6874d97c323199 +program_options~python+random+regex+serialization+shared+signals~singlethreaded+system~taggedlayout+test+thread+timer~versionedlayout+wave arch=linux-ubuntu16.04-x86_64
-   [+]  ufczdvs      ^bzip2@1.0.6%gcc@5.4.0+shared arch=linux-ubuntu16.04-x86_64
-   [+]  2rhuivg          ^diffutils@3.6%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  5nus6kn      ^zlib@1.2.11%gcc@5.4.0+optimize+pic+shared arch=linux-ubuntu16.04-x86_64
-   ==> Concretizing trilinos
-   [+]  rlsruav  trilinos@12.12.1%gcc@5.4.0~alloptpkgs+amesos+amesos2+anasazi+aztec+belos+boost build_type=RelWithDebInfo ~cgns~complex~dtk+epetra+epetraext+exodus+explicit_template_instantiation~float+fortran~fortrilinos+gtest+hdf5+hypre+ifpack+ifpack2~intrepid~intrepid2~isorropia+kokkos+metis~minitensor+ml+muelu+mumps~nox~openmp~phalanx~piro~pnetcdf~python~rol~rythmos+sacado~shards+shared~stk+suite-sparse~superlu~superlu-dist~teko~tempus+teuchos+tpetra~x11~xsdkflags~zlib+zoltan+zoltan2 arch=linux-ubuntu16.04-x86_64
-   [+]  zbgfxap      ^boost@1.68.0%gcc@5.4.0+atomic+chrono~clanglibcpp cxxstd=default +date_time~debug+exception+filesystem+graph~icu+iostreams+locale+log+math~mpi+multithreaded~numpy patches=2ab6c72d03dec6a4ae20220a9dfd5c8c572c5294252155b85c6874d97c323199 +program_options~python+random+regex+serialization+shared+signals~singlethreaded+system~taggedlayout+test+thread+timer~versionedlayout+wave arch=linux-ubuntu16.04-x86_64
-   [+]  ufczdvs          ^bzip2@1.0.6%gcc@5.4.0+shared arch=linux-ubuntu16.04-x86_64
-   [+]  2rhuivg              ^diffutils@3.6%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  5nus6kn          ^zlib@1.2.11%gcc@5.4.0+optimize+pic+shared arch=linux-ubuntu16.04-x86_64
-   [+]  otafqzh      ^cmake@3.12.3%gcc@5.4.0~doc+ncurses+openssl+ownlibs patches=dd3a40d4d92f6b2158b87d6fb354c277947c776424aa03f6dc8096cf3135f5d0 ~qt arch=linux-ubuntu16.04-x86_64
-   [+]  3o765ou          ^ncurses@6.1%gcc@5.4.0~symlinks~termlib arch=linux-ubuntu16.04-x86_64
-   [+]  fovrh7a              ^pkgconf@1.4.2%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  b4y3w3b          ^openssl@1.0.2o%gcc@5.4.0+systemcerts arch=linux-ubuntu16.04-x86_64
-   [+]  ic2kyoa              ^perl@5.26.2%gcc@5.4.0+cpanm patches=0eac10ed90aeb0459ad8851f88081d439a4e41978e586ec743069e8b059370ac +shared+threads arch=linux-ubuntu16.04-x86_64
-   [+]  q4fpyuo                  ^gdbm@1.14.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  nxhwrg7                      ^readline@7.0%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  jnw622j      ^glm@0.9.7.1%gcc@5.4.0 build_type=RelWithDebInfo arch=linux-ubuntu16.04-x86_64
-   [+]  oqwnui7      ^hdf5@1.10.4%gcc@5.4.0~cxx~debug~fortran+hl+mpi+pic+shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
-   [+]  3njc4q5          ^openmpi@3.1.3%gcc@5.4.0~cuda+cxx_exceptions fabrics= ~java~legacylaunchers~memchecker~pmi schedulers= ~sqlite3~thread_multiple+vt arch=linux-ubuntu16.04-x86_64
-   [+]  43tkw5m              ^hwloc@1.11.9%gcc@5.4.0~cairo~cuda+libxml2+pci+shared arch=linux-ubuntu16.04-x86_64
-   [+]  5urc6tc                  ^libpciaccess@0.13.5%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  o2pfwjf                      ^libtool@2.4.6%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  suf5jtc                          ^m4@1.4.18%gcc@5.4.0 patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=linux-ubuntu16.04-x86_64
-   [+]  fypapcp                              ^libsigsegv@2.11%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  milz7fm                      ^util-macros@1.19.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  wpexsph                  ^libxml2@2.9.8%gcc@5.4.0~python arch=linux-ubuntu16.04-x86_64
-   [+]  teneqii                      ^xz@5.2.4%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  ft463od                  ^numactl@2.0.11%gcc@5.4.0 patches=592f30f7f5f757dfc239ad0ffd39a9a048487ad803c26b419e0f96b8cda08c1a arch=linux-ubuntu16.04-x86_64
-   [+]  3sx2gxe                      ^autoconf@2.69%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  rymw7im                      ^automake@1.16.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  fshksdp      ^hypre@2.15.1%gcc@5.4.0~debug~int64~internal-superlu+mpi+shared arch=linux-ubuntu16.04-x86_64
-   [+]  cyeg2yi          ^openblas@0.3.3%gcc@5.4.0 cpu_target= ~ilp64 patches=47cfa7a952ac7b2e4632c73ae199d69fb54490627b66a62c681e21019c4ddc9d,714aea33692304a50bd0ccde42590c176c82ded4a8ac7f06e573dc8071929c33 +pic+shared threads=none ~virtual_machine arch=linux-ubuntu16.04-x86_64
-   [+]  lmzdgss      ^matio@1.5.9%gcc@5.4.0+hdf5+shared+zlib arch=linux-ubuntu16.04-x86_64
-   [+]  3wnvp4j      ^metis@5.1.0%gcc@5.4.0 build_type=Release ~gdb~int64 patches=4991da938c1d3a1d3dea78e49bbebecba00273f98df2a656e38b83d55b281da1 ~real64+shared arch=linux-ubuntu16.04-x86_64
-   [+]  acsg2dz      ^mumps@5.1.1%gcc@5.4.0+complex+double+float~int64~metis+mpi~parmetis~ptscotch~scotch+shared arch=linux-ubuntu16.04-x86_64
-   [+]  wotpfwf          ^netlib-scalapack@2.0.2%gcc@5.4.0 build_type=RelWithDebInfo ~pic+shared arch=linux-ubuntu16.04-x86_64
-   [+]  mhm4izp      ^netcdf@4.6.1%gcc@5.4.0~dap~hdf4 maxdims=1024 maxvars=8192 +mpi~parallel-netcdf+shared arch=linux-ubuntu16.04-x86_64
-   [+]  uv6h3sq      ^parmetis@4.0.3%gcc@5.4.0 build_type=RelWithDebInfo ~gdb patches=4f892531eb0a807eb1b82e683a416d3e35154a455274cf9b162fb02054d11a5b,50ed2081bc939269689789942067c58b3e522c269269a430d5d34c00edbc5870,704b84f7c7444d4372cb59cca6e1209df4ef3b033bc4ee3cf50f369bce972a9d +shared arch=linux-ubuntu16.04-x86_64
-   [+]  zaau4ki      ^suite-sparse@5.3.0%gcc@5.4.0~cuda~openmp+pic~tbb arch=linux-ubuntu16.04-x86_64
-   ==> Concretizing openmpi
-   [+]  3njc4q5  openmpi@3.1.3%gcc@5.4.0~cuda+cxx_exceptions fabrics= ~java~legacylaunchers~memchecker~pmi schedulers= ~sqlite3~thread_multiple+vt arch=linux-ubuntu16.04-x86_64
-   [+]  43tkw5m      ^hwloc@1.11.9%gcc@5.4.0~cairo~cuda+libxml2+pci+shared arch=linux-ubuntu16.04-x86_64
-   [+]  5urc6tc          ^libpciaccess@0.13.5%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  o2pfwjf              ^libtool@2.4.6%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  suf5jtc                  ^m4@1.4.18%gcc@5.4.0 patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=linux-ubuntu16.04-x86_64
-   [+]  fypapcp                      ^libsigsegv@2.11%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  fovrh7a              ^pkgconf@1.4.2%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  milz7fm              ^util-macros@1.19.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  wpexsph          ^libxml2@2.9.8%gcc@5.4.0~python arch=linux-ubuntu16.04-x86_64
-   [+]  teneqii              ^xz@5.2.4%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  5nus6kn              ^zlib@1.2.11%gcc@5.4.0+optimize+pic+shared arch=linux-ubuntu16.04-x86_64
-   [+]  ft463od          ^numactl@2.0.11%gcc@5.4.0 patches=592f30f7f5f757dfc239ad0ffd39a9a048487ad803c26b419e0f96b8cda08c1a arch=linux-ubuntu16.04-x86_64
-   [+]  3sx2gxe              ^autoconf@2.69%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  ic2kyoa                  ^perl@5.26.2%gcc@5.4.0+cpanm patches=0eac10ed90aeb0459ad8851f88081d439a4e41978e586ec743069e8b059370ac +shared+threads arch=linux-ubuntu16.04-x86_64
-   [+]  q4fpyuo                      ^gdbm@1.14.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  nxhwrg7                          ^readline@7.0%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   [+]  3o765ou                              ^ncurses@6.1%gcc@5.4.0~symlinks~termlib arch=linux-ubuntu16.04-x86_64
-   [+]  rymw7im              ^automake@1.16.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
-   ==> Installing environment ~/code
-   ==> boost is already installed in ~/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/boost-1.68.0-zbgfxapchxa4awxdwpleubfuznblxzvt
-   ==> trilinos is already installed in ~/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/trilinos-12.12.1-rlsruavxqvwk2tgxzxboclbo6ykjf54r
-   ==> openmpi is already installed in ~/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/openmpi-3.1.3-3njc4q5pqdpptq6jvqjrezkffwokv2sx
-
-
-Spack concretizes the specs in the ``spack.yaml`` file and installs them.
-
-What happened here?  If you ``cd`` into a directory that has a
-``spack.yaml`` file in it, Spack considers this directory's environment
-to be activated.  The directory does not have to live within Spack; it
-can be anywhere.
-
-So, from ``~/code``, we can actually manipulate ``spack.yaml`` using
-``spack add`` and ``spack remove`` (just like managed environments):
-
-.. code-block:: console
-
-   $ spack add hdf5@5.5.1
-   ==> Adding hdf5 to environment ~/code
-   $ cat spack.yaml
-   # This is a Spack Environment file.
-   #
-   # It describes a set of packages to be installed, along with
-   # configuration settings.
-   spack:
-     # add package specs to the `specs` list
-     specs:
-     - boost
-     - trilinos
-     - openmpi
-     - hdf5@5.5.1
-
-   $ spack remove hdf5
-   ==> Removing hdf5 from environment ~/code
-   $ cat spack.yaml
-   # This is a Spack Environment file.
-   #
-   # It describes a set of packages to be installed, along with
-   # configuration settings.
-   spack:
-     # add package specs to the `specs` list
-     specs:
-     - boost
-     - trilinos
-     - openmpi
-
-
-^^^^^^^^^^^^^^
-``spack.lock``
-^^^^^^^^^^^^^^
-
-Okay, we've covered managed environments, environments in directories, and
-the last thing we'll cover is ``spack.lock``. You may remember that when
-we ran ``spack install``, Spack concretized all the specs in the
-``spack.yaml`` file and installed them.
-
-Whenever we concretize Specs in an environment, all concrete specs in the
-environment are written out to a ``spack.lock`` file *alongside*
-``spack.yaml``.  The ``spack.lock`` file is not really human-readable
-like the ``spack.yaml`` file.  It is a ``json`` format that contains all
-the information that we need to *reproduce* the build of an
-environment:
-
-.. code-block:: console
-
-   $ head spack.lock
-   {
-     "concrete_specs": {
-      "teneqii2xv5u6zl5r6qi3pwurc6pmypz": {
-       "xz": {
-         "version": "5.2.4",
-         "arch": {
-           "platform": "linux",
-           "platform_os": "ubuntu16.04",
-         "target": "x86_64"
-    },
-    ...
-
-``spack.yaml`` and ``spack.lock`` correspond to two fundamental concepts
-in Spack, but for environments:
-
-  * ``spack.yaml`` is the set of *abstract* specs and configuration that
-    you want to install.
-  * ``spack.lock`` is the set of all fully *concretized* specs generated
-    from concretizing ``spack.yaml``
-
-Using either of these, you can recreate an environment that someone else
-built.  ``spack env create`` takes an extra optional argument, which can
-be either a ``spack.yaml`` or a ``spack.lock`` file:
-
-.. code-block:: console
-
-   $ spack env create my-project spack.yaml
-
-   $ spack env create my-project spack.lock
-
-Both of these create a new environment called ``my-project``, but which
-one you choose to use depends on your needs:
-
-#. copying the yaml file allows someone else to build your *requirements*,
-   potentially a different way.
-
-#. copying the lock file allows someone else to rebuild your
-   *installation* exactly as you built it.
-
-The first use case can *re-concretize* the same specs on new platforms in
-order to build, but it will preserve the abstract requirements.  The
-second use case (currently) requires you to be on the same machine, but
-it retains all decisions made during concretization and is faithful to a
-prior install.
diff --git a/lib/spack/docs/tutorial_modules.rst b/lib/spack/docs/tutorial_modules.rst
deleted file mode 100644
index 686da9f26e..0000000000
--- a/lib/spack/docs/tutorial_modules.rst
+++ /dev/null
@@ -1,1575 +0,0 @@
-.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
-   Spack Project Developers. See the top-level COPYRIGHT file for details.
-
-   SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
-.. _modules-tutorial:
-
-============
-Module Files
-============
-
-In this tutorial, we'll introduce a few concepts that are fundamental
-to the generation of module files with Spack, and we'll guide you through
-the customization of both module files content and their layout on disk. In the end you
-should have a clear understanding of:
-
-  * What are module files and how they work
-  * How Spack generates them
-  * Which commands are available to ease their maintenance
-  * How it is possible to customize them in all aspects
-
-.. _module_file_tutorial_overview:
-
--------------------
-Modules at a glance
--------------------
-
-Let's start by summarizing what module files are and how you can use
-them to modify your environment. The idea is to give enough information so that
-people without any previous exposure to them will be able to follow the tutorial
-later on. We'll also give a high-level view of how module files are generated
-in Spack. If you are already familiar with these topics you can quickly skim
-through this section or move directly to :ref:`module_file_tutorial_prerequisites`.
-
-.. _module_file_tutorial_what_are_modules:
-
-^^^^^^^^^^^^^^^^^^^^^^
-What are module files?
-^^^^^^^^^^^^^^^^^^^^^^
-
-Module files are an easy way to modify your environment in a controlled manner
-during a shell session. In general, they contain the information needed to run an
-application or use a library, and they work in conjunction with a tool that
-interprets them.
-Typical module files instruct this tool to modify the environment variables when a
-module file is loaded:
-
-  .. code-block:: console
-
-     $ module show zlib
-     -------------------------------------------------------------------
-     /home/mculpo/PycharmProjects/spack/share/spack/modules/linux-ubuntu14.04-x86_64/zlib/1.2.11-gcc-7.2.0-linux-ubuntu14.04-x86_64-co2px3k:
-
-     module-whatis	 A free, general-purpose, legally unencumbered lossless data-compression library.
-     prepend-path	 MANPATH /home/mculpo/PycharmProjects/spack/opt/spack/linux-ubuntu14.04-x86_64/gcc-7.2.0/zlib-1.2.11-co2px3k53m76lm6tofylh2mur2hnicux/share/man
-     prepend-path	 LIBRARY_PATH /home/mculpo/PycharmProjects/spack/opt/spack/linux-ubuntu14.04-x86_64/gcc-7.2.0/zlib-1.2.11-co2px3k53m76lm6tofylh2mur2hnicux/lib
-     prepend-path	 LD_LIBRARY_PATH /home/mculpo/PycharmProjects/spack/opt/spack/linux-ubuntu14.04-x86_64/gcc-7.2.0/zlib-1.2.11-co2px3k53m76lm6tofylh2mur2hnicux/lib
-     prepend-path	 CPATH /home/mculpo/PycharmProjects/spack/opt/spack/linux-ubuntu14.04-x86_64/gcc-7.2.0/zlib-1.2.11-co2px3k53m76lm6tofylh2mur2hnicux/include
-     prepend-path	 PKG_CONFIG_PATH /home/mculpo/PycharmProjects/spack/opt/spack/linux-ubuntu14.04-x86_64/gcc-7.2.0/zlib-1.2.11-co2px3k53m76lm6tofylh2mur2hnicux/lib/pkgconfig
-     prepend-path	 CMAKE_PREFIX_PATH /home/mculpo/PycharmProjects/spack/opt/spack/linux-ubuntu14.04-x86_64/gcc-7.2.0/zlib-1.2.11-co2px3k53m76lm6tofylh2mur2hnicux/
-     -------------------------------------------------------------------
-
-     $ echo $LD_LIBRARY_PATH
-
-     $ module load zlib
-     $ echo $LD_LIBRARY_PATH
-     /home/mculpo/PycharmProjects/spack/opt/spack/linux-ubuntu14.04-x86_64/gcc-7.2.0/zlib-1.2.11-co2px3k53m76lm6tofylh2mur2hnicux/lib
-
-and to undo the modifications when the same module file is unloaded:
-
-  .. code-block:: console
-
-     $ module unload zlib
-     $ echo $LD_LIBRARY_PATH
-
-     $
-
-Different formats exist for module files, and different tools
-provide various levels of support for them. Spack can natively generate:
-
-1. Non-hierarchical module files written in TCL
-2. Hierarchical module files written in Lua
-
-and can build `environment-modules <http://modules.sourceforge.net/>`_
-and `lmod <http://lmod.readthedocs.io/en/latest>`_ as support tools.
-Which of the formats or tools best suits one's needs depends on each particular
-use-case. For the sake of illustration, we'll be working on
-both formats using ``lmod``.
-
-.. seealso::
-  Environment modules
-    This is the original tool that provided modules support. Its first
-    version was coded in C in the early '90s and was later substituted by a version
-    completely coded in TCL - the one Spack is distributing. More details on
-    its features are given in the `homepage of the project <http://modules.sourceforge.net/>`_
-    or in its `github page <https://github.com/cea-hpc/modules>`_. The tool is able to
-    interpret the non-hierarchical TCL modulefiles written by Spack.
-
-  Lmod
-    Lmod is a module system written in Lua, designed to easily handle hierarchies of
-    module files. It's a drop-in replacement of Environment Modules and works with
-    both of the module file formats generated by Spack.
-    Despite being fully compatible with Environment Modules there are many features that
-    are unique to Lmod. These features are either
-    `targeted towards safety <http://lmod.readthedocs.io/en/latest/010_user.html#safety-features>`_
-    or meant to
-    `extend the module system functionality <http://lmod.readthedocs.io/en/latest/010_user.html#module-hierarchy>`_.
-
-
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-How do we generate module files?
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Before  we dive into the hands-on sections it's worth spending a couple of words to explain how
-module files are generated by Spack. The following diagram provides a high-level view
-of the process:
-
-
-.. image:: module_file_generation.*
-
-The red dashed line above represents Spack's boundaries, the blue one Spack's dependencies [#f1]_.
-Module files are generated by combining:
-
-  * the configuration details in ``config.yaml`` and ``modules.yaml``
-  * the information contained in Spack packages (and processed by the module subpackage)
-  * a set of template files
-
-with `Jinja2 <http://jinja.pocoo.org/docs/2.9/>`_, an external template engine
-that stamps out each particular module file. As Spack serves very diverse needs
-this process has many points of customization, and we'll explore most of
-them in the next sections.
-
-.. [#f1] Spack vendors its dependencies! This means that Spack comes with a copy of
-         each one of its dependencies, including ``Jinja2``, and is already configured to use them.
-
-.. _module_file_tutorial_prerequisites:
-
-----------------------
-Setup for the tutorial
-----------------------
-
-In order to showcase the capabilities of Spack's module file generation, we need
-a representative set of software to work with. This set must include different
-flavors of the same packages installed alongside each other and some
-:ref:`external packages <sec-external-packages>`.
-
-The purpose of this setup is not to make our life harder but to demonstrate
-how Spack can help with similar situations, as they will happen on real HPC clusters.
-For instance, it's often preferable for Spack to use vendor-provided MPI
-implementations than to build one itself.
-
-To keep the set of software we're dealing with manageable, we're going
-to uninstall everything from earlier in the tutorial.
-
-.. code-block: console
-
-  $ spack uninstall -ay
-
-^^^^^^^^^^^^^^^^^^^
-Build a module tool
-^^^^^^^^^^^^^^^^^^^
-
-The first thing that we need is the module tool. In this case we
-choose ``lmod`` as it can work with both hierarchical and non-hierarchical
-module file layouts.
-
-.. code-block:: console
-
-  $ bin/spack install lmod
-
-Once the module tool is installed we need to have it available in the
-current shell. As the installation directories are definitely not easy
-to remember, we'll employ the command ``spack location`` to retrieve the
-``lmod`` prefix directly from Spack:
-
-.. code-block:: console
-
-  $ . $(spack location -i lmod)/lmod/lmod/init/bash
-
-Now we can re-source the setup file and Spack modules will be put in
-our module path.
-
-.. code-block:: console
-
-  $ . share/spack/setup-env.sh
-
-.. FIXME: this needs bootstrap support for ``lmod``
-
-.. FIXME: check the docs here, update them if necessary
-  If you need to install Lmod or Environment module you can refer
-  to the documentation :ref:`here <InstallEnvironmentModules>`.
-
-
-^^^^^^^^^^^^^^^^^^
-Add a new compiler
-^^^^^^^^^^^^^^^^^^
-
-The second step is to build a recent compiler. On first use, Spack
-scans the environment and automatically locates the compiler(s)
-already available on the system. For this tutorial, however, we want
-to use ``gcc@7.2.0``.
-
-
-.. code-block:: console
-
-  $ spack install gcc@7.2.0
-  ...
-  Wait a long time
-  ...
-
-Once ``gcc`` is installed we can use shell support to load it and make
-it readily available:
-
-.. code-block:: console
-
-  $ spack load gcc@7.2.0
-
-It may not be apparent, but the last command employed the module files
-generated automatically by Spack. What happens under the hood when you use
-the ``spack load`` command is:
-
-1. the spec passed as argument is translated into a module file name
-2. the current module tool is used to load that module file
-
-You can use this command to double check:
-
-.. code-block:: console
-
-  $ module list
-  Currently Loaded Modules:
-  1) gcc-7.2.0-gcc-5.4.0-b7smjjc
-
-Note that the 7-digit hash at the end of the generated module may vary depending
-on architecture or package version. Now that we have ``gcc@7.2.0`` in ``PATH`` we
-can finally add it to the list of compilers known to Spack:
-
-.. code-block:: console
-
-  $ spack compiler add
-  ==> Added 1 new compiler to /home/spack1/.spack/linux/compilers.yaml
-      gcc@7.2.0
-  ==> Compilers are defined in the following files:
-      /home/spack1/.spack/linux/compilers.yaml
-
-  $ spack compiler list
-  ==> Available compilers
-  -- clang ubuntu16.04-x86_64 -------------------------------------
-  clang@3.8.0-2ubuntu4  clang@3.7.1-2ubuntu2
-
-  -- gcc ubuntu16.04-x86_64 ---------------------------------------
-  gcc@7.2.0  gcc@5.4.0  gcc@4.7
-
-
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Build the software that will be used in the tutorial
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Finally, we should use Spack to install the packages used in the examples:
-
-.. code-block:: console
-
-   $ spack install netlib-scalapack ^openmpi ^openblas
-   $ spack install netlib-scalapack ^mpich ^openblas
-   $ spack install netlib-scalapack ^openmpi ^netlib-lapack
-   $ spack install netlib-scalapack ^mpich ^netlib-lapack
-   $ spack install py-scipy ^openblas
-
-
-.. _module_file_tutorial_non_hierarchical:
-
------------------------------
-Non-hierarchical module files
------------------------------
-
-If you arrived to this point you should have an environment that looks similar to:
-
-.. code-block:: console
-
-  $ module avail
-
-  ----------------------------------------------- /home/spack1/spack/share/spack/modules/linux-ubuntu16.04-x86_64 -----------------------------------------------
-     autoconf-2.69-gcc-5.4.0-3sx2gxe              libsigsegv-2.11-gcc-7.2.0-g67xpfd            openssl-1.0.2o-gcc-5.4.0-b4y3w3b
-     autoconf-2.69-gcc-7.2.0-yb2makb              libtool-2.4.6-gcc-5.4.0-o2pfwjf              openssl-1.0.2o-gcc-7.2.0-cvldq3v
-     automake-1.16.1-gcc-5.4.0-rymw7im            libtool-2.4.6-gcc-7.2.0-kt2udm6              pcre-8.42-gcc-5.4.0-gt5lgzi
-     automake-1.16.1-gcc-7.2.0-qoowd5q            libxml2-2.9.8-gcc-5.4.0-wpexsph              perl-5.26.2-gcc-5.4.0-ic2kyoa
-     bzip2-1.0.6-gcc-5.4.0-ufczdvs                libxml2-2.9.8-gcc-7.2.0-47gf5kk              perl-5.26.2-gcc-7.2.0-fdwz5yu
-     bzip2-1.0.6-gcc-7.2.0-mwamumj                lmod-7.8-gcc-5.4.0-kmhks3p                   pkgconf-1.4.2-gcc-5.4.0-fovrh7a
-     cmake-3.12.3-gcc-7.2.0-obqgn2v               lua-5.3.4-gcc-5.4.0-cpfeo2w                  pkgconf-1.4.2-gcc-7.2.0-yoxwmgb
-     curl-7.60.0-gcc-5.4.0-vzqreb2                lua-luafilesystem-1_6_3-gcc-5.4.0-alakjim    py-numpy-1.15.2-gcc-7.2.0-wbwtcxf
-     diffutils-3.6-gcc-5.4.0-2rhuivg              lua-luaposix-33.4.0-gcc-5.4.0-7wqhwoc        py-scipy-1.1.0-gcc-7.2.0-d5n3cph
-     diffutils-3.6-gcc-7.2.0-eauxwi7              m4-1.4.18-gcc-5.4.0-suf5jtc                  py-setuptools-40.4.3-gcc-7.2.0-5dbwfwn
-     expat-2.2.5-gcc-5.4.0-emyv67q                m4-1.4.18-gcc-7.2.0-wdzvagl                  python-2.7.15-gcc-7.2.0-ucmr2mn
-     findutils-4.6.0-gcc-7.2.0-ca4b7zq            mpc-1.1.0-gcc-5.4.0-iuf3gc3                  readline-7.0-gcc-5.4.0-nxhwrg7
-     gcc-7.2.0-gcc-5.4.0-b7smjjc           (L)    mpfr-3.1.6-gcc-5.4.0-jnt2nnp                 readline-7.0-gcc-7.2.0-ccruj2i
-     gdbm-1.14.1-gcc-5.4.0-q4fpyuo                mpich-3.2.1-gcc-7.2.0-vt5xcat                sqlite-3.23.1-gcc-7.2.0-5ltus3a
-     gdbm-1.14.1-gcc-7.2.0-zk5lhob                ncurses-6.1-gcc-5.4.0-3o765ou                tar-1.30-gcc-5.4.0-dk7lrpo
-     gettext-0.19.8.1-gcc-5.4.0-tawgous           ncurses-6.1-gcc-7.2.0-xcgzqdv                tcl-8.6.8-gcc-5.4.0-qhwyccy
-     git-2.19.1-gcc-5.4.0-p3gjnfa                 netlib-lapack-3.8.0-gcc-7.2.0-fj7nayd        texinfo-6.5-gcc-7.2.0-cuqnfgf
-     gmp-6.1.2-gcc-5.4.0-qc4qcfz                  netlib-scalapack-2.0.2-gcc-7.2.0-67nmj7g     unzip-6.0-gcc-5.4.0-ba23fbg
-     hwloc-1.11.9-gcc-7.2.0-gbyc65s               netlib-scalapack-2.0.2-gcc-7.2.0-6jgjbyg     util-macros-1.19.1-gcc-7.2.0-t62kozq
-     isl-0.18-gcc-5.4.0-vttqout                   netlib-scalapack-2.0.2-gcc-7.2.0-prgo67d     xz-5.2.4-gcc-5.4.0-teneqii
-     libbsd-0.8.6-gcc-5.4.0-f4qkkwm               netlib-scalapack-2.0.2-gcc-7.2.0-zxpt252     xz-5.2.4-gcc-7.2.0-rql5kog
-     libiconv-1.15-gcc-5.4.0-u2x3umv              numactl-2.0.11-gcc-7.2.0-rifwktk             zlib-1.2.11-gcc-5.4.0-5nus6kn
-     libpciaccess-0.13.5-gcc-7.2.0-riipwi2        openblas-0.3.3-gcc-7.2.0-xxoxfh4             zlib-1.2.11-gcc-7.2.0-ezuwp4p
-     libsigsegv-2.11-gcc-5.4.0-fypapcp            openmpi-3.1.3-gcc-7.2.0-do5xfer
-
-    Where:
-     L:  Module is loaded
-
-  Use "module spider" to find all possible modules.
-  Use "module keyword key1 key2 ..." to search for all possible modules matching any of the "keys".
-
-The non-hierarchical module files that have been generated so far
-follow :ref:`the default rules for module generation <modules-yaml>`.
-Taking a look at the ``gcc`` module you'll see, for example:
-
-.. code-block:: console
-
-  $ module show gcc-7.2.0-gcc-5.4.0-b7smjjc
-  -------------------------------------------------------------------------------------------------------------------------------------------------------------------
-     /home/spack1/spack/share/spack/modules/linux-ubuntu16.04-x86_64/gcc-7.2.0-gcc-5.4.0-b7smjjc:
-  -------------------------------------------------------------------------------------------------------------------------------------------------------------------
-  whatis("The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Ada, and Go, as well as libraries for these languages. ")
-  prepend_path("PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin")
-  prepend_path("MANPATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/share/man")
-  prepend_path("LD_LIBRARY_PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/lib")
-  prepend_path("LIBRARY_PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/lib")
-  prepend_path("LD_LIBRARY_PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/lib64")
-  prepend_path("LIBRARY_PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/lib64")
-  prepend_path("CPATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/include")
-  prepend_path("CMAKE_PREFIX_PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/")
-  setenv("CC","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/gcc")
-  setenv("CXX","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/g++")
-  setenv("FC","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/gfortran")
-  setenv("F77","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/gfortran")
-  setenv("F90","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/gfortran")
-  help([[The GNU Compiler Collection includes front ends for C, C++, Objective-C,
-  Fortran, Ada, and Go, as well as libraries for these languages.
-  ]])
-
-As expected, a few environment variables representing paths will be modified
-by the module file according to the default prefix inspection rules.
-
-
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Filter unwanted modifications to the environment
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Now consider the case that your site has decided that ``CPATH`` and
-``LIBRARY_PATH`` modifications should not be present in module files. What you can
-do to abide by the rules is to create a configuration file ``~/.spack/modules.yaml``
-with the following content:
-
-.. code-block:: yaml
-
-  modules:
-    tcl:
-      all:
-        filter:
-          environment_blacklist: ['CPATH', 'LIBRARY_PATH']
-
-Next you should regenerate all the module files:
-
-.. code-block:: console
-
-  $ spack module tcl refresh
-  ==> You are about to regenerate tcl module files for:
-
-  -- linux-ubuntu16.04-x86_64 / gcc@5.4.0 -------------------------
-  3sx2gxe autoconf@2.69    b7smjjc gcc@7.2.0         f4qkkwm libbsd@0.8.6     cpfeo2w lua@5.3.4                3o765ou ncurses@6.1     dk7lrpo tar@1.30
-  rymw7im automake@1.16.1  q4fpyuo gdbm@1.14.1       u2x3umv libiconv@1.15    alakjim lua-luafilesystem@1_6_3  b4y3w3b openssl@1.0.2o  qhwyccy tcl@8.6.8
-  ufczdvs bzip2@1.0.6      tawgous gettext@0.19.8.1  fypapcp libsigsegv@2.11  7wqhwoc lua-luaposix@33.4.0      gt5lgzi pcre@8.42       ba23fbg unzip@6.0
-  vzqreb2 curl@7.60.0      p3gjnfa git@2.19.1        o2pfwjf libtool@2.4.6    suf5jtc m4@1.4.18                ic2kyoa perl@5.26.2     teneqii xz@5.2.4
-  2rhuivg diffutils@3.6    qc4qcfz gmp@6.1.2         wpexsph libxml2@2.9.8    iuf3gc3 mpc@1.1.0                fovrh7a pkgconf@1.4.2   5nus6kn zlib@1.2.11
-  emyv67q expat@2.2.5      vttqout isl@0.18          kmhks3p lmod@7.8         jnt2nnp mpfr@3.1.6               nxhwrg7 readline@7.0
-
-  -- linux-ubuntu16.04-x86_64 / gcc@7.2.0 -------------------------
-  yb2makb autoconf@2.69    riipwi2 libpciaccess@0.13.5  6jgjbyg netlib-scalapack@2.0.2  fdwz5yu perl@5.26.2           cuqnfgf texinfo@6.5
-  qoowd5q automake@1.16.1  g67xpfd libsigsegv@2.11      zxpt252 netlib-scalapack@2.0.2  yoxwmgb pkgconf@1.4.2         t62kozq util-macros@1.19.1
-  mwamumj bzip2@1.0.6      kt2udm6 libtool@2.4.6        67nmj7g netlib-scalapack@2.0.2  wbwtcxf py-numpy@1.15.2       rql5kog xz@5.2.4
-  obqgn2v cmake@3.12.3     47gf5kk libxml2@2.9.8        prgo67d netlib-scalapack@2.0.2  d5n3cph py-scipy@1.1.0        ezuwp4p zlib@1.2.11
-  eauxwi7 diffutils@3.6    wdzvagl m4@1.4.18            rifwktk numactl@2.0.11          5dbwfwn py-setuptools@40.4.3
-  ca4b7zq findutils@4.6.0  vt5xcat mpich@3.2.1          xxoxfh4 openblas@0.3.3          ucmr2mn python@2.7.15
-  zk5lhob gdbm@1.14.1      xcgzqdv ncurses@6.1          do5xfer openmpi@3.1.3           ccruj2i readline@7.0
-  gbyc65s hwloc@1.11.9     fj7nayd netlib-lapack@3.8.0  cvldq3v openssl@1.0.2o          5ltus3a sqlite@3.23.1
-
-  ==> Do you want to proceed? [y/n] y
-  ==> Regenerating tcl module files
-
-If you take a look now at the module for ``gcc`` you'll see that the unwanted
-paths have disappeared:
-
-.. code-block:: console
-
-  $ module show gcc-7.2.0-gcc-5.4.0-b7smjjc
-  -------------------------------------------------------------------------------------------------------------------------------------------------------------------
-     /home/spack1/spack/share/spack/modules/linux-ubuntu16.04-x86_64/gcc-7.2.0-gcc-5.4.0-b7smjjc:
-  -------------------------------------------------------------------------------------------------------------------------------------------------------------------
-  whatis("The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Ada, and Go, as well as libraries for these languages. ")
-  prepend_path("PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin")
-  prepend_path("MANPATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/share/man")
-  prepend_path("LD_LIBRARY_PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/lib")
-  prepend_path("LD_LIBRARY_PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/lib64")
-  prepend_path("CMAKE_PREFIX_PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/")
-  setenv("CC","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/gcc")
-  setenv("CXX","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/g++")
-  setenv("FC","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/gfortran")
-  setenv("F77","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/gfortran")
-  setenv("F90","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/gfortran")
-  help([[The GNU Compiler Collection includes front ends for C, C++, Objective-C,
-  Fortran, Ada, and Go, as well as libraries for these languages.
-  ]])
-
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Prevent some module files from being generated
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Another common request at many sites is to avoid exposing software that
-is only needed as an intermediate step when building a newer stack.
-Let's try to prevent the generation of
-module files for anything that is compiled with ``gcc@5.4.0`` (the OS provided compiler).
-
-To do this you should add a ``blacklist`` keyword to ``~/.spack/modules.yaml``:
-
-.. code-block:: yaml
-  :emphasize-lines: 3,4
-
-  modules:
-    tcl:
-      blacklist:
-        -  '%gcc@5.4.0'
-      all:
-        filter:
-          environment_blacklist: ['CPATH', 'LIBRARY_PATH']
-
-and regenerate the module files:
-
-This time it is convenient to pass the option ``--delete-tree`` to the command that
-regenerates the module files to instruct it to delete the existing tree and regenerate
-a new one instead of overwriting the files in the existing directory.
-
-.. code-block:: console
-
-  $ spack module tcl refresh --delete-tree
-  ==> You are about to regenerate tcl module files for:
-
-  -- linux-ubuntu16.04-x86_64 / gcc@5.4.0 -------------------------
-  3sx2gxe autoconf@2.69    b7smjjc gcc@7.2.0         f4qkkwm libbsd@0.8.6     cpfeo2w lua@5.3.4                3o765ou ncurses@6.1     dk7lrpo tar@1.30
-  rymw7im automake@1.16.1  q4fpyuo gdbm@1.14.1       u2x3umv libiconv@1.15    alakjim lua-luafilesystem@1_6_3  b4y3w3b openssl@1.0.2o  qhwyccy tcl@8.6.8
-  ufczdvs bzip2@1.0.6      tawgous gettext@0.19.8.1  fypapcp libsigsegv@2.11  7wqhwoc lua-luaposix@33.4.0      gt5lgzi pcre@8.42       ba23fbg unzip@6.0
-  vzqreb2 curl@7.60.0      p3gjnfa git@2.19.1        o2pfwjf libtool@2.4.6    suf5jtc m4@1.4.18                ic2kyoa perl@5.26.2     teneqii xz@5.2.4
-  2rhuivg diffutils@3.6    qc4qcfz gmp@6.1.2         wpexsph libxml2@2.9.8    iuf3gc3 mpc@1.1.0                fovrh7a pkgconf@1.4.2   5nus6kn zlib@1.2.11
-  emyv67q expat@2.2.5      vttqout isl@0.18          kmhks3p lmod@7.8         jnt2nnp mpfr@3.1.6               nxhwrg7 readline@7.0
-
-  -- linux-ubuntu16.04-x86_64 / gcc@7.2.0 -------------------------
-  yb2makb autoconf@2.69    riipwi2 libpciaccess@0.13.5  6jgjbyg netlib-scalapack@2.0.2  fdwz5yu perl@5.26.2           cuqnfgf texinfo@6.5
-  qoowd5q automake@1.16.1  g67xpfd libsigsegv@2.11      zxpt252 netlib-scalapack@2.0.2  yoxwmgb pkgconf@1.4.2         t62kozq util-macros@1.19.1
-  mwamumj bzip2@1.0.6      kt2udm6 libtool@2.4.6        67nmj7g netlib-scalapack@2.0.2  wbwtcxf py-numpy@1.15.2       rql5kog xz@5.2.4
-  obqgn2v cmake@3.12.3     47gf5kk libxml2@2.9.8        prgo67d netlib-scalapack@2.0.2  d5n3cph py-scipy@1.1.0        ezuwp4p zlib@1.2.11
-  eauxwi7 diffutils@3.6    wdzvagl m4@1.4.18            rifwktk numactl@2.0.11          5dbwfwn py-setuptools@40.4.3
-  ca4b7zq findutils@4.6.0  vt5xcat mpich@3.2.1          xxoxfh4 openblas@0.3.3          ucmr2mn python@2.7.15
-  zk5lhob gdbm@1.14.1      xcgzqdv ncurses@6.1          do5xfer openmpi@3.1.3           ccruj2i readline@7.0
-  gbyc65s hwloc@1.11.9     fj7nayd netlib-lapack@3.8.0  cvldq3v openssl@1.0.2o          5ltus3a sqlite@3.23.1
-
-  ==> Do you want to proceed? [y/n] y
-  ==> Regenerating tcl module files
-
-  $ module avail
-
-  ----------------------------------------------- /home/spack1/spack/share/spack/modules/linux-ubuntu16.04-x86_64 -----------------------------------------------
-     autoconf-2.69-gcc-7.2.0-yb2makb          m4-1.4.18-gcc-7.2.0-wdzvagl                 perl-5.26.2-gcc-7.2.0-fdwz5yu
-     automake-1.16.1-gcc-7.2.0-qoowd5q        mpich-3.2.1-gcc-7.2.0-vt5xcat               pkgconf-1.4.2-gcc-7.2.0-yoxwmgb
-     bzip2-1.0.6-gcc-7.2.0-mwamumj            ncurses-6.1-gcc-7.2.0-xcgzqdv               py-numpy-1.15.2-gcc-7.2.0-wbwtcxf
-     cmake-3.12.3-gcc-7.2.0-obqgn2v           netlib-lapack-3.8.0-gcc-7.2.0-fj7nayd       py-scipy-1.1.0-gcc-7.2.0-d5n3cph
-     diffutils-3.6-gcc-7.2.0-eauxwi7          netlib-scalapack-2.0.2-gcc-7.2.0-67nmj7g    py-setuptools-40.4.3-gcc-7.2.0-5dbwfwn
-     findutils-4.6.0-gcc-7.2.0-ca4b7zq        netlib-scalapack-2.0.2-gcc-7.2.0-6jgjbyg    python-2.7.15-gcc-7.2.0-ucmr2mn
-     gdbm-1.14.1-gcc-7.2.0-zk5lhob            netlib-scalapack-2.0.2-gcc-7.2.0-prgo67d    readline-7.0-gcc-7.2.0-ccruj2i
-     hwloc-1.11.9-gcc-7.2.0-gbyc65s           netlib-scalapack-2.0.2-gcc-7.2.0-zxpt252    sqlite-3.23.1-gcc-7.2.0-5ltus3a
-     libpciaccess-0.13.5-gcc-7.2.0-riipwi2    numactl-2.0.11-gcc-7.2.0-rifwktk            texinfo-6.5-gcc-7.2.0-cuqnfgf
-     libsigsegv-2.11-gcc-7.2.0-g67xpfd        openblas-0.3.3-gcc-7.2.0-xxoxfh4            util-macros-1.19.1-gcc-7.2.0-t62kozq
-     libtool-2.4.6-gcc-7.2.0-kt2udm6          openmpi-3.1.3-gcc-7.2.0-do5xfer             xz-5.2.4-gcc-7.2.0-rql5kog
-     libxml2-2.9.8-gcc-7.2.0-47gf5kk          openssl-1.0.2o-gcc-7.2.0-cvldq3v            zlib-1.2.11-gcc-7.2.0-ezuwp4p
-
-  Use "module spider" to find all possible modules.
-  Use "module keyword key1 key2 ..." to search for all possible modules matching any of the "keys".
-
-If you look closely you'll see though that we went too far in blacklisting modules:
-the module for ``gcc@7.2.0`` disappeared as it was bootstrapped with ``gcc@5.4.0``. To specify
-exceptions to the blacklist rules you can use ``whitelist``:
-
-.. code-block:: yaml
-  :emphasize-lines: 3,4
-
-  modules:
-    tcl:
-      whitelist:
-        -  gcc
-      blacklist:
-        -  '%gcc@5.4.0'
-      all:
-        filter:
-          environment_blacklist: ['CPATH', 'LIBRARY_PATH']
-
-``whitelist`` rules always have precedence over ``blacklist`` rules. If you regenerate the modules again:
-
-.. code-block:: console
-
-  $ spack module tcl refresh -y
-  ==> Regenerating tcl module files
-
-
-you'll see that now the module for ``gcc@7.2.0`` has reappeared:
-
-.. code-block:: console
-
-  $ module avail gcc-7.2.0-gcc-5.4.0-b7smjjc
-
-  -------------------------------------------- /home/spack1/spack/share/spack/modules/linux-ubuntu16.04-x86_64 ---------------------------------------------
-     gcc-7.2.0-gcc-5.4.0-b7smjjc
-
-  Use "module spider" to find all possible modules.
-  Use "module keyword key1 key2 ..." to search for all possible modules matching any of the "keys".
-
-An additional possibility that you can leverage to unclutter the environment
-is that of preventing the generation of module files for implicitly installed
-packages. In this case all one needs to do is to add the following line:
-
-.. code-block:: yaml
-  :emphasize-lines: 3
-
-  modules:
-    tcl:
-      blacklist_implicits: true
-      whitelist:
-        -  gcc
-      blacklist:
-        -  '%gcc@5.4.0'
-      all:
-        filter:
-          environment_blacklist: ['CPATH', 'LIBRARY_PATH']
-
-to ``modules.yaml`` and regenerate the module file tree as above.
-
-^^^^^^^^^^^^^^^^^^^^^^^^^
-Change module file naming
-^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The next step in making  module files more user-friendly is to
-improve their naming scheme.
-To reduce the length of the hash or remove it altogether you can
-use the ``hash_length`` keyword in the configuration file:
-
-.. code-block:: yaml
-  :emphasize-lines: 3
-
-  modules:
-    tcl:
-      hash_length: 0
-      whitelist:
-        -  gcc
-      blacklist:
-        -  '%gcc@5.4.0'
-      all:
-        filter:
-          environment_blacklist: ['CPATH', 'LIBRARY_PATH']
-
-If you try to regenerate the module files now you will get an error:
-
-.. code-block:: console
-
-  $ spack module tcl refresh --delete-tree -y
-  ==> Error: Name clashes detected in module files:
-
-  file: /home/spack1/spack/share/spack/modules/linux-ubuntu16.04-x86_64/netlib-scalapack-2.0.2-gcc-7.2.0
-  spec: netlib-scalapack@2.0.2%gcc@7.2.0 build_type=RelWithDebInfo ~pic+shared arch=linux-ubuntu16.04-x86_64
-  spec: netlib-scalapack@2.0.2%gcc@7.2.0 build_type=RelWithDebInfo ~pic+shared arch=linux-ubuntu16.04-x86_64
-  spec: netlib-scalapack@2.0.2%gcc@7.2.0 build_type=RelWithDebInfo ~pic+shared arch=linux-ubuntu16.04-x86_64
-  spec: netlib-scalapack@2.0.2%gcc@7.2.0 build_type=RelWithDebInfo ~pic+shared arch=linux-ubuntu16.04-x86_64
-
-  ==> Error: Operation aborted
-
-.. note::
-  We try to check for errors upfront!
-   In Spack we check for errors upfront whenever possible, so don't worry about your module files:
-   as a name clash was detected nothing has been changed on disk.
-
-The problem here is that without
-the hashes the four different flavors of ``netlib-scalapack`` map to the same module file
-name. We can add suffixes to differentiate them:
-
-.. code-block:: yaml
- :emphasize-lines: 9-11,14-17
-
-  modules:
-    tcl:
-      hash_length: 0
-      whitelist:
-        -  gcc
-      blacklist:
-        -  '%gcc@5.4.0'
-      all:
-        suffixes:
-          '^openblas': openblas
-          '^netlib-lapack': netlib
-        filter:
-          environment_blacklist: ['CPATH', 'LIBRARY_PATH']
-      netlib-scalapack:
-        suffixes:
-          '^openmpi': openmpi
-          '^mpich': mpich
-
-As you can see it is possible to specify rules that apply only to a
-restricted set of packages using :ref:`anonymous specs <anonymous_specs>`.
-Regenerating module files now we obtain:
-
-.. code-block:: console
-
-  $ spack module tcl refresh --delete-tree -y
-  ==> Regenerating tcl module files
-  $ module avail
-
-  ----------------------------------------------- /home/spack1/spack/share/spack/modules/linux-ubuntu16.04-x86_64 -----------------------------------------------
-     autoconf-2.69-gcc-7.2.0          m4-1.4.18-gcc-7.2.0                                  pkgconf-1.4.2-gcc-7.2.0
-     automake-1.16.1-gcc-7.2.0        mpich-3.2.1-gcc-7.2.0                                py-numpy-1.15.2-gcc-7.2.0-openblas
-     bzip2-1.0.6-gcc-7.2.0            ncurses-6.1-gcc-7.2.0                                py-scipy-1.1.0-gcc-7.2.0-openblas
-     cmake-3.12.3-gcc-7.2.0           netlib-lapack-3.8.0-gcc-7.2.0                        py-setuptools-40.4.3-gcc-7.2.0
-     diffutils-3.6-gcc-7.2.0          netlib-scalapack-2.0.2-gcc-7.2.0-netlib-mpich        python-2.7.15-gcc-7.2.0
-     findutils-4.6.0-gcc-7.2.0        netlib-scalapack-2.0.2-gcc-7.2.0-netlib-openmpi      readline-7.0-gcc-7.2.0
-     gcc-7.2.0-gcc-5.4.0              netlib-scalapack-2.0.2-gcc-7.2.0-openblas-mpich      sqlite-3.23.1-gcc-7.2.0
-     gdbm-1.14.1-gcc-7.2.0            netlib-scalapack-2.0.2-gcc-7.2.0-openblas-openmpi    texinfo-6.5-gcc-7.2.0
-     hwloc-1.11.9-gcc-7.2.0           numactl-2.0.11-gcc-7.2.0                             util-macros-1.19.1-gcc-7.2.0
-     libpciaccess-0.13.5-gcc-7.2.0    openblas-0.3.3-gcc-7.2.0                             xz-5.2.4-gcc-7.2.0
-     libsigsegv-2.11-gcc-7.2.0        openmpi-3.1.3-gcc-7.2.0                              zlib-1.2.11-gcc-7.2.0
-     libtool-2.4.6-gcc-7.2.0          openssl-1.0.2o-gcc-7.2.0
-     libxml2-2.9.8-gcc-7.2.0          perl-5.26.2-gcc-7.2.0
-
-  Use "module spider" to find all possible modules.
-  Use "module keyword key1 key2 ..." to search for all possible modules matching any of the "keys".
-
-Finally we can set a ``naming_scheme`` to prevent users from loading
-modules that refer to different flavors of the same library/application:
-
-.. code-block:: yaml
-  :emphasize-lines: 4,10,11
-
-  modules:
-    tcl:
-      hash_length: 0
-      naming_scheme: '{name}/{version}-{compiler.name}-{compiler.version}'
-      whitelist:
-        -  gcc
-      blacklist:
-        -  '%gcc@5.4.0'
-      all:
-        conflict:
-          - '{name}'
-        suffixes:
-          '^openblas': openblas
-          '^netlib-lapack': netlib
-        filter:
-          environment_blacklist: ['CPATH', 'LIBRARY_PATH']
-      netlib-scalapack:
-        suffixes:
-          '^openmpi': openmpi
-          '^mpich': mpich
-
-The final result should look like:
-
-.. code-block:: console
-
-  $ spack module tcl refresh --delete-tree -y
-  ==> Regenerating tcl module files
-  $ module avail
-
-  ----------------------------------------------- /home/spack1/spack/share/spack/modules/linux-ubuntu16.04-x86_64 -----------------------------------------------
-     autoconf/2.69-gcc-7.2.0          m4/1.4.18-gcc-7.2.0                                      pkgconf/1.4.2-gcc-7.2.0
-     automake/1.16.1-gcc-7.2.0        mpich/3.2.1-gcc-7.2.0                                    py-numpy/1.15.2-gcc-7.2.0-openblas
-     bzip2/1.0.6-gcc-7.2.0            ncurses/6.1-gcc-7.2.0                                    py-scipy/1.1.0-gcc-7.2.0-openblas
-     cmake/3.12.3-gcc-7.2.0           netlib-lapack/3.8.0-gcc-7.2.0                            py-setuptools/40.4.3-gcc-7.2.0
-     diffutils/3.6-gcc-7.2.0          netlib-scalapack/2.0.2-gcc-7.2.0-netlib-mpich            python/2.7.15-gcc-7.2.0
-     findutils/4.6.0-gcc-7.2.0        netlib-scalapack/2.0.2-gcc-7.2.0-netlib-openmpi          readline/7.0-gcc-7.2.0
-     gcc/7.2.0-gcc-5.4.0              netlib-scalapack/2.0.2-gcc-7.2.0-openblas-mpich          sqlite/3.23.1-gcc-7.2.0
-     gdbm/1.14.1-gcc-7.2.0            netlib-scalapack/2.0.2-gcc-7.2.0-openblas-openmpi (D)    texinfo/6.5-gcc-7.2.0
-     hwloc/1.11.9-gcc-7.2.0           numactl/2.0.11-gcc-7.2.0                                 util-macros/1.19.1-gcc-7.2.0
-     libpciaccess/0.13.5-gcc-7.2.0    openblas/0.3.3-gcc-7.2.0                                 xz/5.2.4-gcc-7.2.0
-     libsigsegv/2.11-gcc-7.2.0        openmpi/3.1.3-gcc-7.2.0                                  zlib/1.2.11-gcc-7.2.0
-     libtool/2.4.6-gcc-7.2.0          openssl/1.0.2o-gcc-7.2.0
-     libxml2/2.9.8-gcc-7.2.0          perl/5.26.2-gcc-7.2.0
-
-    Where:
-     D:  Default Module
-
-  Use "module spider" to find all possible modules.
-  Use "module keyword key1 key2 ..." to search for all possible modules matching any of the "keys".
-
-.. note::
-  TCL specific directive
-    The directives ``naming_scheme`` and ``conflict`` are TCL specific and
-    can't be used in the ``lmod`` section of the configuration file.
-
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Add custom environment modifications
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-At many sites it is customary to set an environment variable in a
-package's module file that points to the folder in which the package
-is installed. You can achieve this with Spack by adding an
-``environment`` directive to the configuration file:
-
-.. code-block:: yaml
-  :emphasize-lines: 17-19
-
-  modules:
-    tcl:
-      hash_length: 0
-      naming_scheme: '{name}/{version}-{compiler.name}-{compiler.version}'
-      whitelist:
-        -  gcc
-      blacklist:
-        -  '%gcc@5.4.0'
-      all:
-        conflict:
-          - '{name}'
-        suffixes:
-          '^openblas': openblas
-          '^netlib-lapack': netlib
-        filter:
-          environment_blacklist: ['CPATH', 'LIBRARY_PATH']
-        environment:
-          set:
-            '{name}_ROOT': '{prefix}'
-      netlib-scalapack:
-        suffixes:
-          '^openmpi': openmpi
-          '^mpich': mpich
-
-Under the hood Spack uses the :meth:`~spack.spec.Spec.format` API to substitute
-tokens in either environment variable names or values. There are two caveats though:
-
-- The set of allowed tokens in variable names is restricted to
-  ``name``, ``version``, ``compiler``, ``compiler.name``,
-  ``compiler.version``, ``architecture``
-- Any token expanded in a variable name is made uppercase, but other than that
-  case sensitivity is preserved
-
-Regenerating the module files results in something like:
-
-.. code-block:: console
-  :emphasize-lines: 15
-
-  $ spack module tcl refresh -y
-  ==> Regenerating tcl module files
-
-  $ module show gcc
-  -------------------------------------------------------------------------------------------------------------------------------------------------------------------
-     /home/spack1/spack/share/spack/modules/linux-ubuntu16.04-x86_64/gcc/7.2.0-gcc-5.4.0:
-  -------------------------------------------------------------------------------------------------------------------------------------------------------------------
-  whatis("The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Ada, and Go, as well as libraries for these languages. ")
-  conflict("gcc")
-  prepend_path("PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin")
-  prepend_path("MANPATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/share/man")
-  prepend_path("LD_LIBRARY_PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/lib")
-  prepend_path("LD_LIBRARY_PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/lib64")
-  prepend_path("CMAKE_PREFIX_PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/")
-  setenv("CC","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/gcc")
-  setenv("CXX","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/g++")
-  setenv("FC","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/gfortran")
-  setenv("F77","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/gfortran")
-  setenv("F90","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/gfortran")
-  setenv("GCC_ROOT","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs")
-  help([[The GNU Compiler Collection includes front ends for C, C++, Objective-C,
-  Fortran, Ada, and Go, as well as libraries for these languages.
-  ]])
-
-As you can see, the ``gcc`` module has the environment variable ``GCC_ROOT`` set.
-
-Sometimes it's also useful to apply environment modifications selectively and target
-only certain packages. You can, for instance set the common variables ``CC``, ``CXX``,
-etc. in the ``gcc`` module file and apply other custom modifications to the
-``openmpi`` modules as follows:
-
-.. code-block:: yaml
-  :emphasize-lines: 20-32
-
-  modules:
-    tcl:
-      hash_length: 0
-      naming_scheme: '{name}/{version}-{compiler.name}-{compiler.version}'
-      whitelist:
-        - gcc
-      blacklist:
-        - '%gcc@5.4.0'
-      all:
-        conflict:
-          - '{name}'
-        suffixes:
-          '^openblas': openblas
-          '^netlib-lapack': netlib
-        filter:
-          environment_blacklist: ['CPATH', 'LIBRARY_PATH']
-        environment:
-          set:
-            '{name}_ROOT': '{prefix}'
-      gcc:
-        environment:
-          set:
-            CC: gcc
-            CXX: g++
-            FC: gfortran
-            F90: gfortran
-            F77: gfortran
-      openmpi:
-        environment:
-          set:
-            SLURM_MPI_TYPE: pmi2
-            OMPI_MCA_btl_openib_warn_default_gid_prefix: '0'
-      netlib-scalapack:
-        suffixes:
-          '^openmpi': openmpi
-          '^mpich': mpich
-
-This time we will be more selective and regenerate only the ``gcc`` and
-``openmpi`` module files:
-
-.. code-block:: console
-
-  $ spack module tcl refresh -y gcc
-  ==> Regenerating tcl module files
-
-  $ spack module tcl refresh -y openmpi
-  ==> Regenerating tcl module files
-
-  $ module show gcc
-  -------------------------------------------------------------------------------------------------------------------------------------------------------------------
-     /home/spack1/spack/share/spack/modules/linux-ubuntu16.04-x86_64/gcc/7.2.0-gcc-5.4.0:
-  -------------------------------------------------------------------------------------------------------------------------------------------------------------------
-  whatis("The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Ada, and Go, as well as libraries for these languages. ")
-  conflict("gcc")
-  prepend_path("PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin")
-  prepend_path("MANPATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/share/man")
-  prepend_path("LD_LIBRARY_PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/lib")
-  prepend_path("LD_LIBRARY_PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/lib64")
-  prepend_path("CMAKE_PREFIX_PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/")
-  setenv("CC","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/gcc")
-  setenv("CXX","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/g++")
-  setenv("FC","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/gfortran")
-  setenv("F77","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/gfortran")
-  setenv("F90","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/gfortran")
-  setenv("GCC_ROOT","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs")
-  setenv("CC","gcc")
-  setenv("CXX","g++'")
-  setenv("FC","gfortran")
-  setenv("F77","gfortran")
-  setenv("F90","gfortran")
-  help([[The GNU Compiler Collection includes front ends for C, C++, Objective-C,
-  Fortran, Ada, and Go, as well as libraries for these languages.
-  ]])
-
-  $ module show openmpi
-  -------------------------------------------------------------------------------------------------------------------------------------------------------------------
-    /home/spack1/spack/share/spack/modules/linux-ubuntu16.04-x86_64/openmpi/3.1.3-gcc-7.2.0:
-  -------------------------------------------------------------------------------------------------------------------------------------------------------------------
-  whatis("An open source Message Passing Interface implementation. ")
-  conflict("openmpi")
-  prepend_path("PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-7.2.0/openmpi-3.1.3-do5xfer2whhk7gc26atgs3ozr3ljbvs4/bin")
-  prepend_path("MANPATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-7.2.0/openmpi-3.1.3-do5xfer2whhk7gc26atgs3ozr3ljbvs4/share/man")
-  prepend_path("LD_LIBRARY_PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-7.2.0/openmpi-3.1.3-do5xfer2whhk7gc26atgs3ozr3ljbvs4/lib")
-  prepend_path("PKG_CONFIG_PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-7.2.0/openmpi-3.1.3-do5xfer2whhk7gc26atgs3ozr3ljbvs4/lib/pkgconfig")
-  prepend_path("CMAKE_PREFIX_PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-7.2.0/openmpi-3.1.3-do5xfer2whhk7gc26atgs3ozr3ljbvs4/")
-  setenv("OPENMPI_ROOT","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-7.2.0/openmpi-3.1.3-do5xfer2whhk7gc26atgs3ozr3ljbvs4")
-  setenv("SLURM_MPI_TYPE","pmi2")
-  setenv("OMPI_MCA_btl_openib_warn_default_gid_prefix","0")
-  help([[An open source Message Passing Interface implementation. The Open MPI
-  Project is an open source Message Passing Interface implementation that
-  is developed and maintained by a consortium of academic, research, and
-  industry partners. Open MPI is therefore able to combine the expertise,
-  technologies, and resources from all across the High Performance
-  Computing community in order to build the best MPI library available.
-  Open MPI offers advantages for system and software vendors, application
-  developers and computer science researchers.
-  ]])
-
-
-^^^^^^^^^^^^^^^^^^^^^
-Autoload dependencies
-^^^^^^^^^^^^^^^^^^^^^
-
-Spack can also generate module files that contain code to load the
-dependencies automatically. You can, for instance generate python
-modules that load their dependencies by adding the ``autoload``
-directive and assigning it the value ``direct``:
-
-.. code-block:: yaml
-  :emphasize-lines: 3,38,39
-
-  modules:
-    tcl:
-      verbose: True
-      hash_length: 0
-      naming_scheme: '{name}/{version}-{compiler.name}-{compiler.version}'
-      whitelist:
-        - gcc
-      blacklist:
-        - '%gcc@5.4.0'
-      all:
-        conflict:
-          - '{name}'
-        suffixes:
-          '^openblas': openblas
-          '^netlib-lapack': netlib
-        filter:
-          environment_blacklist: ['CPATH', 'LIBRARY_PATH']
-        environment:
-          set:
-            '{name}_ROOT': '{prefix}'
-      gcc:
-        environment:
-          set:
-            CC: gcc
-            CXX: g++
-            FC: gfortran
-            F90: gfortran
-            F77: gfortran
-      openmpi:
-        environment:
-          set:
-            SLURM_MPI_TYPE: pmi2
-            OMPI_MCA_btl_openib_warn_default_gid_prefix: '0'
-      netlib-scalapack:
-        suffixes:
-          '^openmpi': openmpi
-          '^mpich': mpich
-      ^python:
-        autoload:  'direct'
-
-and regenerating the module files for every package that depends on ``python``:
-
-.. code-block:: console
-
-  root@module-file-tutorial:/# spack module tcl refresh -y ^python
-  ==> Regenerating tcl module files
-
-Now the ``py-scipy`` module will be:
-
-.. code-block:: tcl
-
-  #%Module1.0
-  ## Module file created by spack (https://github.com/spack/spack) on 2018-11-11 22:10:48.834221
-  ##
-  ## py-scipy@1.1.0%gcc@7.2.0 arch=linux-ubuntu16.04-x86_64 /d5n3cph
-  ##
-
-
-  module-whatis "SciPy (pronounced 'Sigh Pie') is a Scientific Library for Python. It provides many user-friendly and efficient numerical routines such as routines for numerical integration and optimization."
-
-  proc ModulesHelp { } {
-  puts stderr "SciPy (pronounced "Sigh Pie") is a Scientific Library for Python. It"
-  puts stderr "provides many user-friendly and efficient numerical routines such as"
-  puts stderr "routines for numerical integration and optimization."
-  }
-
-  if { [ module-info mode load ] && ![ is-loaded python/2.7.15-gcc-7.2.0 ] } {
-      puts stderr "Autoloading python/2.7.15-gcc-7.2.0"
-      module load python/2.7.15-gcc-7.2.0
-  }
-  if { [ module-info mode load ] && ![ is-loaded openblas/0.3.3-gcc-7.2.0 ] } {
-      puts stderr "Autoloading openblas/0.3.3-gcc-7.2.0"
-      module load openblas/0.3.3-gcc-7.2.0
-  }
-  if { [ module-info mode load ] && ![ is-loaded py-numpy/1.15.2-gcc-7.2.0-openblas ] } {
-      puts stderr "Autoloading py-numpy/1.15.2-gcc-7.2.0-openblas"
-      module load py-numpy/1.15.2-gcc-7.2.0-openblas
-  }
-  conflict py-scipy
-
-  prepend-path LD_LIBRARY_PATH "/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-7.2.0/py-scipy-1.1.0-d5n3cphk2lx2v74ypwb6h7tna7vvgdyn/lib"
-  prepend-path CMAKE_PREFIX_PATH "/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-7.2.0/py-scipy-1.1.0-d5n3cphk2lx2v74ypwb6h7tna7vvgdyn/"
-  prepend-path PYTHONPATH "/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-7.2.0/py-scipy-1.1.0-d5n3cphk2lx2v74ypwb6h7tna7vvgdyn/lib/python2.7/site-packages"
-  setenv PY_SCIPY_ROOT "/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-7.2.0/py-scipy-1.1.0-d5n3cphk2lx2v74ypwb6h7tna7vvgdyn"
-
-and will contain code to autoload all the dependencies:
-
-.. code-block:: console
-
-  $ module load py-scipy
-  Autoloading python/2.7.15-gcc-7.2.0
-  Autoloading openblas/0.3.3-gcc-7.2.0
-  Autoloading py-numpy/1.15.2-gcc-7.2.0-openblas
-
-In case messages are unwanted during the autoload procedure, it will be
-sufficient to omit the line setting ``verbose: True`` in the configuration file above.
-
--------------------------
-Hierarchical module files
--------------------------
-
-So far we worked with non-hierarchical module files, i.e. with module files
-that are all generated in the same root directory and don't attempt to
-dynamically modify the ``MODULEPATH``. This results in a flat module structure where
-all the software is visible at the same time:
-
-.. code-block:: console
-
-  $ module avail
-
-  ----------------------------------------------- /home/spack1/spack/share/spack/modules/linux-ubuntu16.04-x86_64 -----------------------------------------------
-     autoconf/2.69-gcc-7.2.0          m4/1.4.18-gcc-7.2.0                                      pkgconf/1.4.2-gcc-7.2.0
-     automake/1.16.1-gcc-7.2.0        mpich/3.2.1-gcc-7.2.0                                    py-numpy/1.15.2-gcc-7.2.0-openblas (L)
-     bzip2/1.0.6-gcc-7.2.0            ncurses/6.1-gcc-7.2.0                                    py-scipy/1.1.0-gcc-7.2.0-openblas  (L)
-     cmake/3.12.3-gcc-7.2.0           netlib-lapack/3.8.0-gcc-7.2.0                            py-setuptools/40.4.3-gcc-7.2.0
-     diffutils/3.6-gcc-7.2.0          netlib-scalapack/2.0.2-gcc-7.2.0-netlib-mpich           python/2.7.15-gcc-7.2.0            (L)
-     findutils/4.6.0-gcc-7.2.0        netlib-scalapack/2.0.2-gcc-7.2.0-netlib-openmpi         readline/7.0-gcc-7.2.0
-     gcc/7.2.0-gcc-5.4.0              netlib-scalapack/2.0.2-gcc-7.2.0-openblas-mpich          sqlite/3.23.1-gcc-7.2.0
-     gdbm/1.14.1-gcc-7.2.0            netlib-scalapack/2.0.2-gcc-7.2.0-openblas-openmpi (D)    texinfo/6.5-gcc-7.2.0
-     hwloc/1.11.9-gcc-7.2.0           numactl/2.0.11-gcc-7.2.0                                 util-macros/1.19.1-gcc-7.2.0
-     libpciaccess/0.13.5-gcc-7.2.0    openblas/0.3.3-gcc-7.2.0                          (L)    xz/5.2.4-gcc-7.2.0
-     libsigsegv/2.11-gcc-7.2.0        openmpi/3.1.3-gcc-7.2.0                                  zlib/1.2.11-gcc-7.2.0
-     libtool/2.4.6-gcc-7.2.0          openssl/1.0.2o-gcc-7.2.0
-     libxml2/2.9.8-gcc-7.2.0          perl/5.26.2-gcc-7.2.0
-
-    Where:
-     L:  Module is loaded
-     D:  Default Module
-
-  Use "module spider" to find all possible modules.
-  Use "module keyword key1 key2 ..." to search for all possible modules matching any of the "keys".
-
-This layout is quite simple to deploy, but you can see from the above snippet
-that nothing prevents users from loading incompatible sets of modules:
-
-.. code-block:: console
-
-  $ module purge
-  $ module load netlib-lapack/3.8.0-gcc-7.2.0 openblas/0.3.3-gcc-7.2.0
-  $ module list
-
-  Currently Loaded Modules:
-    1) netlib-lapack/3.8.0-gcc-7.2.0   2) openblas/0.3.3-gcc-7.2.0
-
-Even if ``conflicts`` directives are carefully placed in module files, they:
-
-  - won't enforce a consistent environment, but will just report an error
-  - need constant updates, for instance as soon as a new compiler or MPI library is installed
-
-`Hierarchical module files <http://lmod.readthedocs.io/en/latest/080_hierarchy.html>`_ try to
-overcome these shortcomings by showing at start-up only a restricted view of what is
-available on the system: more specifically only the software that has been installed with
-OS provided compilers. Among this software there will be other - usually more recent - compilers
-that, once loaded, will prepend new directories to ``MODULEPATH`` unlocking all the software
-that was compiled with them. This "unlocking" idea can then be extended arbitrarily to
-virtual dependencies, as we'll see in the following section.
-
-^^^^^^^^^^^^^^^^^
-Core/Compiler/MPI
-^^^^^^^^^^^^^^^^^
-
-The most widely used hierarchy is the so called ``Core/Compiler/MPI`` where, on top
-of the compilers, different MPI libraries also unlock software linked to them.
-There are just a few steps needed to adapt the ``modules.yaml`` file we used previously:
-
-  #. enable the ``lmod`` file generator
-  #. change the ``tcl`` tag to ``lmod``
-  #. remove ``tcl`` specific directives (``naming_scheme`` and ``conflict``)
-  #. declare which compilers are considered ``core_compilers``
-  #. remove the ``mpi`` related suffixes (as they will be substituted by hierarchies)
-
-After these modifications your configuration file should look like:
-
-.. code-block:: yaml
-  :emphasize-lines: 2-8
-
-  modules:
-    enable::
-      - lmod
-    lmod:
-      core_compilers:
-        - 'gcc@5.4.0'
-      hierarchy:
-        - mpi
-      hash_length: 0
-      whitelist:
-        - gcc
-      blacklist:
-        - '%gcc@5.4.0'
-      all:
-        suffixes:
-          '^openblas': openblas
-          '^netlib-lapack': netlib
-        filter:
-          environment_blacklist: ['CPATH', 'LIBRARY_PATH']
-        environment:
-          set:
-            '{name}_ROOT': '{prefix}'
-      gcc:
-        environment:
-          set:
-            CC: gcc
-            CXX: g++
-            FC: gfortran
-            F90: gfortran
-            F77: gfortran
-      openmpi:
-        environment:
-          set:
-            SLURM_MPI_TYPE: pmi2
-            OMPI_MCA_btl_openib_warn_default_gid_prefix: '0'
-
-
-.. note::
-  Double colon in configuration files
-    The double colon after ``enable`` is intentional and it serves the
-    purpose of overriding the default list of enabled generators so
-    that only ``lmod`` will be active (see :ref:`config-overrides` for more
-    details).
-
-The directive ``core_compilers`` accepts a list of compilers. Everything built
-using these compilers will create a module in the ``Core`` part of the hierarchy,
-which is the entry point for hierarchical module files. It is
-common practice to put the OS provided compilers in the list and only build common utilities
-and other compilers with them.
-
-If we now regenerate the module files:
-
-.. code-block:: console
-
-  $ spack module lmod refresh --delete-tree -y
-  ==> Regenerating lmod module files
-
-and update ``MODULEPATH`` to point to the ``Core``:
-
-.. code-block:: console
-
-  $ module purge
-  $ module unuse $HOME/spack/share/spack/modules/linux-ubuntu16.04-x86_64
-  $ module use $HOME/spack/share/spack/lmod/linux-ubuntu16.04-x86_64/Core
-
-asking for the available modules will return:
-
-.. code-block:: console
-
-  $ module avail
-
-  ----------------------------------------------------------- share/spack/lmod/linux-ubuntu16.04-x86_64/Core ------------------------------------------------------------
-     gcc/7.2.0
-
-  Use "module spider" to find all possible modules.
-  Use "module keyword key1 key2 ..." to search for all possible modules matching any of the "keys".
-
-Unsurprisingly, the only visible module is ``gcc``. Loading that we'll unlock
-the ``Compiler`` part of the hierarchy:
-
-.. code-block:: console
-
-  $ module load gcc
-  $ module avail
-
-  ------------------------------------------- /home/spack1/spack/share/spack/lmod/linux-ubuntu16.04-x86_64/gcc/7.2.0 --------------------------------------------
-     autoconf/2.69      findutils/4.6.0        libtool/2.4.6    netlib-lapack/3.8.0    perl/5.26.2                 python/2.7.15         xz/5.2.4
-     automake/1.16.1    gdbm/1.14.1            libxml2/2.9.8    numactl/2.0.11         pkgconf/1.4.2               readline/7.0          zlib/1.2.11
-     bzip2/1.0.6        hwloc/1.11.9           m4/1.4.18        openblas/0.3.3         py-numpy/1.15.2-openblas    sqlite/3.23.1
-     cmake/3.12.3       libpciaccess/0.13.5    mpich/3.2.1      openmpi/3.1.3          py-scipy/1.1.0-openblas     texinfo/6.5
-     diffutils/3.6      libsigsegv/2.11        ncurses/6.1      openssl/1.0.2o         py-setuptools/40.4.3        util-macros/1.19.1
-
-  ----------------------------------------------------------- share/spack/lmod/linux-ubuntu16.04-x86_64/Core ------------------------------------------------------------
-     gcc/7.2.0 (L)
-
-    Where:
-     L:  Module is loaded
-
-  Use "module spider" to find all possible modules.
-  Use "module keyword key1 key2 ..." to search for all possible modules matching any of the "keys".
-
-The same holds true also for the ``MPI`` part, that you can enable by loading
-either ``mpich`` or ``openmpi``. Let's start by loading ``mpich``:
-
-.. code-block:: console
-
-  $ module load mpich
-  $ module avail
-
-  --------------------------------- /home/spack1/spack/share/spack/lmod/linux-ubuntu16.04-x86_64/mpich/3.2.1-vt5xcat/gcc/7.2.0 ----------------------------------
-     netlib-scalapack/2.0.2-netlib    netlib-scalapack/2.0.2-openblas (D)
-
-  ------------------------------------------- /home/spack1/spack/share/spack/lmod/linux-ubuntu16.04-x86_64/gcc/7.2.0 --------------------------------------------
-     autoconf/2.69      findutils/4.6.0        libtool/2.4.6        netlib-lapack/3.8.0    perl/5.26.2                 python/2.7.15         xz/5.2.4
-     automake/1.16.1    gdbm/1.14.1            libxml2/2.9.8        numactl/2.0.11         pkgconf/1.4.2               readline/7.0          zlib/1.2.11
-     bzip2/1.0.6        hwloc/1.11.9           m4/1.4.18            openblas/0.3.3         py-numpy/1.15.2-openblas    sqlite/3.23.1
-     cmake/3.12.3       libpciaccess/0.13.5    mpich/3.2.1   (L)    openmpi/3.1.3          py-scipy/1.1.0-openblas     texinfo/6.5
-     diffutils/3.6      libsigsegv/2.11        ncurses/6.1          openssl/1.0.2o         py-setuptools/40.4.3        util-macros/1.19.1
-
-  ----------------------------------------------------------- share/spack/lmod/linux-ubuntu16.04-x86_64/Core ------------------------------------------------------------
-     gcc/7.2.0 (L)
-
-    Where:
-     L:  Module is loaded
-     D:  Default Module
-
-  Use "module spider" to find all possible modules.
-  Use "module keyword key1 key2 ..." to search for all possible modules matching any of the "keys".
-
-
-  root@module-file-tutorial:/# module load openblas netlib-scalapack/2.0.2-openblas
-  root@module-file-tutorial:/# module list
-
-  Currently Loaded Modules:
-    1) gcc/7.2.0   2) mpich/3.2.1   3) openblas/0.3.3   4) netlib-scalapack/2.0.2-openblas
-
-At this point we can showcase the improved consistency that a hierarchical layout provides
-over a non-hierarchical one:
-
-.. code-block:: console
-
-  $ module load openmpi
-
-  Lmod is automatically replacing "mpich/3.2.1" with "openmpi/3.1.3".
-
-
-  Due to MODULEPATH changes, the following have been reloaded:
-    1) netlib-scalapack/2.0.2-openblas
-
-``Lmod`` took care of swapping the MPI provider for us, and it also substituted the
-``netlib-scalapack`` module to conform to the change in the MPI.
-In this way we can't accidentally pull-in two different MPI providers at the
-same time or load a module file for a package linked to ``openmpi`` when ``mpich`` is also loaded.
-Consistency for compilers and MPI is ensured by the tool.
-
-
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Add LAPACK to the hierarchy
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The hierarchy just shown is already a great improvement over non-hierarchical layouts,
-but it still has an asymmetry: ``LAPACK`` providers cover the same semantic role
-as ``MPI`` providers, but yet they are not part of the hierarchy.
-
-To be more practical, this means that although we have gained an improved consistency in
-our environment when it comes to ``MPI``, we still have the same problems as we had before
-for ``LAPACK`` implementations:
-
-.. code-block:: console
-
-  root@module-file-tutorial:/# module list
-
-  Currently Loaded Modules:
-    1) gcc/7.2.0   2) openblas/0.3.3   3) openmpi/3.1.3   4) netlib-scalapack/2.0.2-openblas
-
-  root@module-file-tutorial:/# module load netlib-scalapack/2.0.2-netlib
-
-  The following have been reloaded with a version change:
-    1) netlib-scalapack/2.0.2-openblas => netlib-scalapack/2.0.2-netlib
-
-  root@module-file-tutorial:/# module list
-
-  Currently Loaded Modules:
-    1) gcc/7.2.0   2) openblas/0.3.3   3) openmpi/3.1.3   4) netlib-scalapack/2.0.2-netlib
-
-Hierarchies that are deeper than ``Core``/``Compiler``/``MPI`` are
-probably still considered "unusual" or "impractical" at many sites, mainly because
-module files are written manually and keeping track of the combinations
-among multiple providers quickly becomes quite involved.
-
-For instance, having both ``MPI`` and ``LAPACK`` in the hierarchy
-means we must classify software into one of four categories:
-
-  #. Software that doesn't depend on ``MPI`` or ``LAPACK``
-  #. Software that depends only on ``MPI``
-  #. Software that depends only on ``LAPACK``
-  #. Software that depends on both
-
-to decide when to show it to the user. The situation becomes more involved as the number of virtual
-dependencies in the hierarchy increases.
-
-We can take advantage of the DAG that Spack maintains for the installed software and solve
-this combinatorial problem in a clean and automated way.
-In some sense Spack's ability to manage this combinatorial complexity makes deeper
-hierarchies feasible.
-
-Coming back to our example, let's add ``lapack`` to the hierarchy and remove any remaining suffix:
-
-.. code-block:: yaml
-  :emphasize-lines: 9
-
-  modules:
-    enable::
-      - lmod
-    lmod:
-      core_compilers:
-        - 'gcc@5.4.0'
-      hierarchy:
-        - mpi
-        - lapack
-      hash_length: 0
-      whitelist:
-        - gcc
-      blacklist:
-        - '%gcc@5.4.0'
-      all:
-        filter:
-          environment_blacklist: ['CPATH', 'LIBRARY_PATH']
-        environment:
-          set:
-            '{name}_ROOT': '{prefix}'
-      gcc:
-        environment:
-          set:
-            CC: gcc
-            CXX: g++
-            FC: gfortran
-            F90: gfortran
-            F77: gfortran
-      openmpi:
-        environment:
-          set:
-            SLURM_MPI_TYPE: pmi2
-            OMPI_MCA_btl_openib_warn_default_gid_prefix: '0'
-
-After module files have been regenerated as usual:
-
-.. code-block:: console
-
-  root@module-file-tutorial:/# module purge
-
-  root@module-file-tutorial:/# spack module lmod refresh --delete-tree -y
-  ==> Regenerating lmod module files
-
-we can see that now we have additional components in the hierarchy:
-
-.. code-block:: console
-
-  $ module load gcc
-  $ module load openblas
-  $ module avail
-
-  -------------------------------- /home/spack1/spack/share/spack/lmod/linux-ubuntu16.04-x86_64/openblas/0.3.3-xxoxfh4/gcc/7.2.0 --------------------------------
-     py-numpy/1.15.2    py-scipy/1.1.0
-
-  ------------------------------------------- /home/spack1/spack/share/spack/lmod/linux-ubuntu16.04-x86_64/gcc/7.2.0 --------------------------------------------
-     autoconf/2.69      findutils/4.6.0        libtool/2.4.6    netlib-lapack/3.8.0        perl/5.26.2             sqlite/3.23.1
-     automake/1.16.1    gdbm/1.14.1            libxml2/2.9.8    numactl/2.0.11             pkgconf/1.4.2           texinfo/6.5
-     bzip2/1.0.6        hwloc/1.11.9           m4/1.4.18        openblas/0.3.3      (L)    py-setuptools/40.4.3    util-macros/1.19.1
-     cmake/3.12.3       libpciaccess/0.13.5    mpich/3.2.1      openmpi/3.1.3              python/2.7.15           xz/5.2.4
-     diffutils/3.6      libsigsegv/2.11        ncurses/6.1      openssl/1.0.2o             readline/7.0            zlib/1.2.11
-
-  ----------------------------------------------------------- share/spack/lmod/linux-ubuntu16.04-x86_64/Core ------------------------------------------------------------
-     gcc/7.2.0 (L)
-
-    Where:
-     L:  Module is loaded
-
-  Use "module spider" to find all possible modules.
-  Use "module keyword key1 key2 ..." to search for all possible modules matching any of the "keys".
-
-
-  $ module load openmpi
-  $ module avail
-
-  --------------------- /home/spack1/spack/share/spack/lmod/linux-ubuntu16.04-x86_64/openmpi/3.1.3-do5xfer/openblas/0.3.3-xxoxfh4/gcc/7.2.0 ---------------------
-     netlib-scalapack/2.0.2
-
-  -------------------------------- /home/spack1/spack/share/spack/lmod/linux-ubuntu16.04-x86_64/openblas/0.3.3-xxoxfh4/gcc/7.2.0 --------------------------------
-     py-numpy/1.15.2    py-scipy/1.1.0
-
-  ------------------------------------------- /home/spack1/spack/share/spack/lmod/linux-ubuntu16.04-x86_64/gcc/7.2.0 --------------------------------------------
-     autoconf/2.69      findutils/4.6.0        libtool/2.4.6    netlib-lapack/3.8.0        perl/5.26.2             sqlite/3.23.1
-     automake/1.16.1    gdbm/1.14.1            libxml2/2.9.8    numactl/2.0.11             pkgconf/1.4.2           texinfo/6.5
-     bzip2/1.0.6        hwloc/1.11.9           m4/1.4.18        openblas/0.3.3      (L)    py-setuptools/40.4.3    util-macros/1.19.1
-     cmake/3.12.3       libpciaccess/0.13.5    mpich/3.2.1      openmpi/3.1.3       (L)    python/2.7.15           xz/5.2.4
-     diffutils/3.6      libsigsegv/2.11        ncurses/6.1      openssl/1.0.2o             readline/7.0            zlib/1.2.11
-
-  ---------------------------------------------- /home/spack1/spack/share/spack/lmod/linux-ubuntu16.04-x86_64/Core ----------------------------------------------
-     gcc/7.2.0 (L)
-
-    Where:
-     L:  Module is loaded
-
-  Use "module spider" to find all possible modules.
-  Use "module keyword key1 key2 ..." to search for all possible modules matching any of the "keys".
-
-Both ``MPI`` and ``LAPACK`` providers will now benefit from the same safety features:
-
-.. code-block:: console
-
-  $ module load py-numpy netlib-scalapack
-  $ module load mpich
-
-  Lmod is automatically replacing "openmpi/3.1.3" with "mpich/3.2.1".
-
-
-  Due to MODULEPATH changes, the following have been reloaded:
-    1) netlib-scalapack/2.0.2
-
-  $ module load netlib-lapack
-
-  Lmod is automatically replacing "openblas/0.3.3" with "netlib-lapack/3.8.0".
-
-
-  Inactive Modules:
-    1) py-numpy
-
-  Due to MODULEPATH changes, the following have been reloaded:
-    1) netlib-scalapack/2.0.2
-
-Because we only compiled ``py-numpy`` with ``openblas`` the module
-is made inactive when we switch the ``LAPACK`` provider. The user
-environment is now consistent by design!
-
-----------------------
-Working with templates
-----------------------
-
-As briefly mentioned in the introduction, Spack uses `Jinja2 <http://jinja.pocoo.org/docs/2.9/>`_
-to generate each individual module file.
-This means that you have all of its flexibility and power when it comes to
-customizing what gets generated!
-
-^^^^^^^^^^^^^^^^^^^^^
-Module file templates
-^^^^^^^^^^^^^^^^^^^^^
-
-The templates that Spack uses to generate module files are stored in the
-``share/spack/templates/module`` directory within the Spack prefix, and
-they all share the same common structure.  Usually, they start with a
-header that identifies the type of module being generated. In the case of
-hierarchical module files it's:
-
-.. literalinclude:: _spack_root/share/spack/templates/modules/modulefile.lua
-  :language: jinja
-  :lines: 1-6
-
-The statements within double curly brackets ``{{ ... }}`` denote
-`expressions <http://jinja.pocoo.org/docs/2.9/templates/#expressions>`_
-that will be evaluated and substituted at module generation time.
-The rest of the file is then divided into
-`blocks <http://jinja.pocoo.org/docs/2.9/templates/#template-inheritance>`_
-that can be overridden or extended by users, if need be.
-`Control structures <http://jinja.pocoo.org/docs/2.9/templates/#list-of-control-structures>`_
-, delimited by ``{% ... %}``,
-are also permitted in the template language:
-
-.. literalinclude:: _spack_root/share/spack/templates/modules/modulefile.lua
-  :language: jinja
-  :lines: 73-88
-
-The locations where Spack looks for templates are specified
-in ``config.yaml``:
-
-.. literalinclude:: _spack_root/etc/spack/defaults/config.yaml
-  :language: yaml
-  :lines: 21-24
-
-and can be extended by users to employ custom templates, as we'll see next.
-
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Extend the default templates
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Let's assume one of our software is protected by group membership:
-allowed users belong to the same linux group, and access is granted at group level.
-Wouldn't it be nice if people that are not
-yet entitled to use it could receive a helpful message at module load time
-that tells them who to contact in your organization to be inserted in the group?
-
-To automate the generation of module files with such site-specific behavior
-we'll start by extending the list of locations where Spack looks for module
-files. Let's create the file ``~/.spack/config.yaml`` with the content:
-
-.. code-block:: yaml
-
-  config:
-    template_dirs:
-      - $HOME/.spack/templates
-
-This tells Spack to also search another location when looking for template files.
-Next, we need to create our custom template extension in the folder listed above:
-
-.. code-block:: jinja
-
-  {% extends "modules/modulefile.lua" %}
-  {% block footer %}
-  -- Access is granted only to specific groups
-  if not isDir("{{ spec.prefix }}") then
-      LmodError (
-          "You don't have the necessary rights to run \"{{ spec.name }}\".\n\n",
-          "\tPlease write an e-mail to 1234@foo.com if you need further information on how to get access to it.\n"
-      )
-  end
-  {% endblock %}
-
-Let's name this file ``group-restricted.lua``. The line:
-
-.. code-block:: jinja
-
-  {% extends "modules/modulefile.lua" %}
-
-tells Jinja2 that we are reusing the standard template for hierarchical module files.
-The section:
-
-.. code-block:: jinja
-
-  {% block footer %}
-  -- Access is granted only to specific groups
-  if not isDir("{{ spec.prefix }}") then
-      LmodError (
-          "You don't have the necessary rights to run \"{{ spec.name }}\".\n\n",
-          "\tPlease write an e-mail to 1234@foo.com if you need further information on how to get access to it.\n"
-      )
-  end
-  {% endblock %}
-
-overrides the ``footer`` block.
-Finally, we need to add a couple of lines in ``modules.yaml`` to tell Spack which specs
-need to use the new custom template. For the sake of illustration let's assume
-it's ``netlib-scalapack``:
-
-.. code-block:: yaml
-  :emphasize-lines: 35-36
-
-  modules:
-    enable::
-      - lmod
-    lmod:
-      core_compilers:
-        - 'gcc@5.4.0'
-      hierarchy:
-        - mpi
-        - lapack
-      hash_length: 0
-      whitelist:
-        - gcc
-      blacklist:
-        - '%gcc@5.4.0'
-        - readline
-      all:
-        filter:
-          environment_blacklist: ['CPATH', 'LIBRARY_PATH']
-        environment:
-          set:
-            '{name}_ROOT': '{prefix}'
-      gcc:
-        environment:
-          set:
-            CC: gcc
-            CXX: g++
-            FC: gfortran
-            F90: gfortran
-            F77: gfortran
-      openmpi:
-        environment:
-          set:
-            SLURM_MPI_TYPE: pmi2
-            OMPI_MCA_btl_openib_warn_default_gid_prefix: '0'
-      netlib-scalapack:
-        template: 'group-restricted.lua'
-
-If we regenerate the module files one last time:
-
-.. code-block:: console
-
-  root@module-file-tutorial:/# spack module lmod refresh -y netlib-scalapack
-  ==> Regenerating lmod module files
-
-we'll find the following at the end of each ``netlib-scalapack`` module file:
-
-.. code-block:: lua
-
-  -- Access is granted only to specific groups
-  if not isDir("/usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-7.2.0/netlib-scalapack-2.0.2-d3lertflood3twaor44eam2kcr4l72ag") then
-      LmodError (
-          "You don't have the necessary rights to run \"netlib-scalapack\".\n\n",
-          "\tPlease write an e-mail to 1234@foo.com if you need further information on how to get access to it.\n"
-      )
-  end
-
-and every user that doesn't have access to the software will now be redirected to
-the right e-mail address where to ask for it!
diff --git a/lib/spack/docs/tutorial_packaging.rst b/lib/spack/docs/tutorial_packaging.rst
deleted file mode 100644
index ca693ba14f..0000000000
--- a/lib/spack/docs/tutorial_packaging.rst
+++ /dev/null
@@ -1,559 +0,0 @@
-.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
-   Spack Project Developers. See the top-level COPYRIGHT file for details.
-
-   SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
-.. _packaging-tutorial:
-
-=========================
-Package Creation Tutorial
-=========================
-
-This tutorial will walk you through the steps behind building a simple
-package installation script.  We'll focus on writing a package for
-mpileaks, an MPI debugging tool.  By creating a package file we're
-essentially giving Spack a recipe for how to build a particular piece of
-software.  We're describing some of the software's dependencies, where to
-find the package, what commands and options are used to build the package
-from source, and more.  Once we've specified a package's recipe, we can
-ask Spack to build that package in many different ways.
-
-This tutorial assumes you have a basic familiarity with some of the Spack
-commands, and that you have a working version of Spack installed.  If
-not, we suggest looking at Spack's :ref:`getting_started` guide.  This
-tutorial also assumes you have at least a beginner's-level familiarity
-with Python.
-
-Also note that this document is a tutorial.  It can help you get started
-with packaging, but is not intended to be complete.  See Spack's
-:ref:`packaging-guide` for more complete documentation on this topic.
-
----------------
-Getting Started
----------------
-
-A few things before we get started:
-
-- We'll refer to the Spack installation location via the environment
-  variable ``SPACK_ROOT``.  You should point ``SPACK_ROOT`` at wherever
-  you have Spack installed.
-- Add ``$SPACK_ROOT/bin`` to your ``PATH`` before you start.
-- Make sure your ``EDITOR`` environment variable is set to your
-  preferred text editor.
-- We'll be writing Python code as part of this tutorial.  You can find
-  successive versions of the Python code in
-  ``$SPACK_ROOT/lib/spack/docs/tutorial/examples``.
-
--------------------------
-Creating the Package File
--------------------------
-
-We will use a separate package repository for the tutorial. Package
-repositories allow you to separate sets of packages that take
-precedence over one another. We will use the tutorial repo that ships
-with Spack to avoid breaking the builtin Spack packages.
-
-.. code-block:: console
-
-   $ spack repo add $SPACK_ROOT/var/spack/repos/tutorial/
-   ==> Added repo with namespace 'tutorial'.
-
-Spack comes with a handy command to create a new package: ``spack create``.
-
-This command is given the location of a package's source code, downloads
-the code, and sets up some basic packaging infrastructure for you.  The
-mpileaks source code can be found on GitHub, and here's what happens when
-we run ``spack create`` on it:
-
-.. code-block:: console
-
-   $ spack create -t generic https://github.com/LLNL/mpileaks/releases/download/v1.0/mpileaks-1.0.tar.gz
-   ==> This looks like a URL for mpileaks
-   ==> Found 1 version of mpileaks:
-
-     1.0  https://github.com/LLNL/mpileaks/releases/download/v1.0/mpileaks-1.0.tar.gz
-
-   ==> How many would you like to checksum? (default is 1, q to abort) 1
-   ==> Downloading...
-   ==> Fetching https://github.com/LLNL/mpileaks/releases/download/v1.0/mpileaks-1.0.tar.gz
-   ############################################################################# 100.0%
-   ==> Checksummed 1 version of mpileaks
-   ==> Using specified package template: 'generic'
-   ==> Created template for mpileaks package
-   ==> Created package file: ~/spack/var/spack/repos/tutorial/packages/mpileaks/package.py
-
-Spack should spawn a text editor with this file:
-
-.. literalinclude:: tutorial/examples/0.package.py
-   :language: python
-
-Spack has created this file in
-``$SPACK_ROOT/var/spack/repos/tutorial/packages/mpileaks/package.py``.  Take a
-moment to look over the file.  There's a few placeholders that Spack has
-created, which we'll fill in as part of this tutorial:
-
-- We'll document some information about this package in the comments.
-- We'll fill in the dependency list for this package.
-- We'll fill in some of the configuration arguments needed to build this
-  package.
-
-For the moment, exit your editor and let's see what happens when we try
-to build this package:
-
-.. code-block:: console
-
-   $ spack install mpileaks
-   ==> Installing mpileaks
-   ==> Searching for binary cache of mpileaks
-   ==> Warning: No Spack mirrors are currently configured
-   ==> No binary for mpileaks found: installing from source
-   ==> Fetching https://github.com/LLNL/mpileaks/releases/download/v1.0/mpileaks-1.0.tar.gz
-   ############################################################################# 100.0%
-   ==> Staging archive: ~/spack/var/spack/stage/mpileaks-1.0-sv75n3u5ev6mljwcezisz3slooozbbxu/mpileaks-1.0.tar.gz
-   ==> Created stage in ~/spack/var/spack/stage/mpileaks-1.0-sv75n3u5ev6mljwcezisz3slooozbbxu
-   ==> No patches needed for mpileaks
-   ==> Building mpileaks [Package]
-   ==> Executing phase: 'install'
-   ==> Error: ProcessError: Command exited with status 2:
-       'make' '-j16'
-
-   1 error found in build log:
-        1    ==> Executing phase: 'install'
-        2    ==> 'make' '-j16'
-     >> 3    make: *** No targets specified and no makefile found.  Stop.
-
-   See build log for details:
-     ~/spack/var/spack/stage/mpileaks-1.0-sv75n3u5ev6mljwcezisz3slooozbbxu/spack-build-out.txt
-
-This obviously didn't work; we need to fill in the package-specific
-information.  Specifically, Spack didn't try to build any of mpileaks'
-dependencies, nor did it use the proper configure arguments.  Let's start
-fixing things.
-
----------------------
-Package Documentation
----------------------
-
-We can bring the ``package.py`` file back into our ``EDITOR`` with the
-``spack edit`` command:
-
-.. code-block:: console
-
-   $ spack edit mpileaks
-
-Let's remove some of the ``FIXME`` comments, add links to the mpileaks
-homepage, and document what mpileaks does.  I'm also going to cut out the
-Copyright clause at this point to keep this tutorial document shorter,
-but you shouldn't do that normally.  The results of these changes can be
-found in ``$SPACK_ROOT/lib/spack/docs/tutorial/examples/1.package.py``
-and are displayed below.  Make these changes to your ``package.py``:
-
-.. literalinclude:: tutorial/examples/1.package.py
-   :lines: 6-
-   :language: python
-
-We've filled in the comment that describes what this package does and
-added a link to its website.  That won't help us build yet, but it will
-allow Spack to provide some documentation on this package to other users:
-
-.. code-block:: console
-
-   $ spack info mpileaks
-   Package:   mpileaks
-
-   Description:
-       Tool to detect and report MPI objects like MPI_Requests and
-       MPI_Datatypes.
-
-   Homepage: https://github.com/LLNL/mpileaks
-
-   Tags:
-       None
-
-   Preferred version:
-       1.0    https://github.com/LLNL/mpileaks/releases/download/v1.0/mpileaks-1.0.tar.gz
-
-   Safe versions:
-       1.0    https://github.com/LLNL/mpileaks/releases/download/v1.0/mpileaks-1.0.tar.gz
-
-   Variants:
-       None
-
-   Installation Phases:
-       install
-
-   Build Dependencies:
-       None
-
-   Link Dependencies:
-       None
-
-   Run Dependencies:
-       None
-
-   Virtual Packages:
-       None
-
-As we fill in more information about this package the ``spack info`` command
-will become more informative.  Now let's start making this package build.
-
-------------
-Dependencies
-------------
-
-The mpileaks package depends on three other packages: ``mpi``,
-``adept-utils``, and ``callpath``.  Let's add those via the
-``depends_on`` command in our ``package.py`` (this version is in
-``$SPACK_ROOT/lib/spack/docs/tutorial/examples/2.package.py``):
-
-.. literalinclude:: tutorial/examples/2.package.py
-   :lines: 6-
-   :language: python
-
-Now when we go to build mpileaks, Spack will fetch and build these
-dependencies before building mpileaks.  Note that the mpi dependency is a
-different kind of beast than the adept-utils and callpath dependencies;
-there is no mpi package available in Spack.  Instead mpi is a *virtual
-dependency*.  Spack may satisfy that dependency by installing packages
-such as ``openmpi`` or ``mvapich2``.  See the :ref:`packaging-guide` for more
-information on virtual dependencies.
-
-Now when we try to install this package, a lot more happens:
-
-.. code-block:: console
-
-   $ spack install mpileaks
-   ...
-   ==> Successfully installed libdwarf from binary cache
-   [+] ~/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/libdwarf-20180129-p4jeflorwlnkoq2vpuyocwrbcht2ayak
-   ==> Installing callpath
-   ==> Searching for binary cache of callpath
-   ==> Installing callpath from binary cache
-   ==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/callpath-1.0.4/linux-ubuntu16.04-x86_64-gcc-5.4.0-callpath-1.0.4-empvyxdkc4j4pwg7gznwhbiumruey66x.spack
-   ######################################################################## 100.0%
-   ==> Successfully installed callpath from binary cache
-   [+] ~/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/callpath-1.0.4-empvyxdkc4j4pwg7gznwhbiumruey66x
-   ==> Installing mpileaks
-   ==> Searching for binary cache of mpileaks
-   ==> No binary for mpileaks found: installing from source
-   ==> Using cached archive: ~/spack/var/spack/cache/mpileaks/mpileaks-1.0.tar.gz
-   ==> Staging archive: ~/spack/var/spack/stage/mpileaks-1.0-csoikctsalli4cdkkdk377gprkc472rb/mpileaks-1.0.tar.gz
-   ==> Created stage in ~/spack/var/spack/stage/mpileaks-1.0-csoikctsalli4cdkkdk377gprkc472rb
-   ==> No patches needed for mpileaks
-   ==> Building mpileaks [Package]
-   ==> Executing phase: 'install'
-   ==> Error: ProcessError: Command exited with status 2:
-       'make' '-j16'
-
-   1 error found in build log:
-        1    ==> Executing phase: 'install'
-        2    ==> 'make' '-j16'
-     >> 3    make: *** No targets specified and no makefile found.  Stop.
-
-   See build log for details:
-     ~/spack/var/spack/stage/mpileaks-1.0-csoikctsalli4cdkkdk377gprkc472rb/mpileaks-1.0/spack-build-out.txt
-
-Note that this command may take a while to run and produce more output if
-you don't have an MPI already installed or configured in Spack.
-
-Now Spack has identified and made sure all of our dependencies have been
-built.  It found the ``openmpi`` package that will satisfy our ``mpi``
-dependency, and the ``callpath`` and ``adept-utils`` package to satisfy our
-concrete dependencies.
-
-------------------------
-Debugging Package Builds
-------------------------
-
-Our ``mpileaks`` package is still not building.  It may be obvious to
-many of you that we never ran the configure script.  Let's add a
-call to ``configure()`` to the top of the install routine. The resulting
-``package.py`` is in ``$SPACK_ROOT/lib/spack/docs/tutorial/examples/3.package.py``:
-
-.. literalinclude:: tutorial/examples/3.package.py
-  :lines: 6-
-  :language: python
-
-If we re-run we still get errors:
-
-.. code-block:: console
-
-   $ spack install mpileaks
-   ...
-   ==> Installing mpileaks
-   ==> Searching for binary cache of mpileaks
-   ==> Finding buildcaches in /mirror/build_cache
-   ==> No binary for mpileaks found: installing from source
-   ==> Using cached archive: ~/spack/var/spack/cache/mpileaks/mpileaks-1.0.tar.gz
-   ==> Staging archive: ~/spack/var/spack/stage/mpileaks-1.0-csoikctsalli4cdkkdk377gprkc472rb/mpileaks-1.0.tar.gz
-   ==> Created stage in ~/spack/var/spack/stage/mpileaks-1.0-csoikctsalli4cdkkdk377gprkc472rb
-   ==> No patches needed for mpileaks
-   ==> Building mpileaks [Package]
-   ==> Executing phase: 'install'
-   ==> Error: ProcessError: Command exited with status 1:
-       './configure'
-
-   1 error found in build log:
-        25    checking for ~/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/openmpi-3.1.3-3
-              njc4q5pqdpptq6jvqjrezkffwokv2sx/bin/mpicc... ~/spack/opt/spack/linux-ubuntu16.04-
-              x86_64/gcc-5.4.0/openmpi-3.1.3-3njc4q5pqdpptq6jvqjrezkffwokv2sx/bin/mpicc
-        26    Checking whether ~/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/openmpi-3.1
-              .3-3njc4q5pqdpptq6jvqjrezkffwokv2sx/bin/mpicc responds to '-showme:compile'... no
-        27    Checking whether ~/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/openmpi-3.1
-              .3-3njc4q5pqdpptq6jvqjrezkffwokv2sx/bin/mpicc responds to '-showme'... no
-        28    Checking whether ~/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/openmpi-3.1
-              .3-3njc4q5pqdpptq6jvqjrezkffwokv2sx/bin/mpicc responds to '-compile-info'... no
-        29    Checking whether ~/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/openmpi-3.1
-              .3-3njc4q5pqdpptq6jvqjrezkffwokv2sx/bin/mpicc responds to '-show'... no
-        30    ./configure: line 4809: Echo: command not found
-     >> 31    configure: error: unable to locate adept-utils installation
-
-   See build log for details:
-     ~/spack/var/spack/stage/mpileaks-1.0-csoikctsalli4cdkkdk377gprkc472rb/mpileaks-1.0/spack-build-out.txt
-
-Again, the problem may be obvious.  But let's pretend we're not
-all experienced Autotools developers and use this opportunity to spend some
-time debugging.  We have a few options that can tell us about
-what's going wrong:
-
-As per the error message, Spack has given us a ``spack-build-out.txt`` debug
-log:
-
-.. code-block:: console
-
-  ==> Executing phase: 'install'
-  ==> './configure'
-  checking metadata... no
-  checking installation directory variables... yes
-  checking for a BSD-compatible install... /usr/bin/install -c
-  checking whether build environment is sane... yes
-  checking for a thread-safe mkdir -p... /bin/mkdir -p
-  checking for gawk... gawk
-  checking whether make sets $(MAKE)... yes
-  checking for gcc... /home/spack1/spack/lib/spack/env/gcc/gcc
-  checking for C compiler default output file name... a.out
-  checking whether the C compiler works... yes
-  checking whether we are cross compiling... no
-  checking for suffix of executables...
-  checking for suffix of object files... o
-  checking whether we are using the GNU C compiler... yes
-  checking whether /home/spack1/spack/lib/spack/env/gcc/gcc accepts -g... yes
-  checking for /home/spack1/spack/lib/spack/env/gcc/gcc option to accept ISO C89... none needed
-  checking for style of include used by make... GNU
-  checking dependency style of /home/spack1/spack/lib/spack/env/gcc/gcc... gcc3
-  checking whether /home/spack1/spack/lib/spack/env/gcc/gcc and cc understand -c and -o together... yes
-  checking whether we are using the GNU C++ compiler... yes
-  checking whether /home/spack1/spack/lib/spack/env/gcc/g++ accepts -g... yes
-  checking dependency style of /home/spack1/spack/lib/spack/env/gcc/g++... gcc3
-  checking for /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/openmpi-3.0.0-yo5qkfvumpmgmvlbalqcadu46j5bd52f/bin/mpicc... /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/openmpi-3.0.0-yo5qkfvumpmgmvlbalqcadu46j5bd52f/bin/mpicc
-  Checking whether /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/openmpi-3.0.0-yo5qkfvumpmgmvlbalqcadu46j5bd52f/bin/mpicc responds to '-showme:compile'... yes
-  configure: error: unable to locate adept-utils installation
-
-This gives us the output from the build, and mpileaks isn't
-finding its ``adept-utils`` package.  Spack has
-automatically added the include and library directories of
-``adept-utils`` to the compiler's search path, but some packages like
-mpileaks can sometimes be picky and still want things spelled out on
-their command line.  But let's continue to pretend we're not experienced
-developers, and explore some other debugging paths:
-
-We can also enter the build area and try to manually run the build:
-
-.. code-block:: console
-
-  $ spack build-env mpileaks bash
-  $ spack cd mpileaks
-
-The ``spack build-env`` command spawned a new shell that contains the same
-environment that Spack used to build the mpileaks package (you can
-substitute bash for your favorite shell).  The ``spack cd`` command
-changed our working dirctory to the last attempted build for mpileaks.
-From here we can manually re-run the build:
-
-.. code-block:: console
-
-  $ ./configure
-  checking metadata... no
-  checking installation directory variables... yes
-  checking for a BSD-compatible install... /usr/bin/install -c
-  checking whether build environment is sane... yes
-  checking for a thread-safe mkdir -p... /bin/mkdir -p
-  checking for gawk... gawk
-  checking whether make sets $(MAKE)... yes
-  checking for gcc... /home/spack1/spack/lib/spack/env/gcc/gcc
-  checking for C compiler default output file name... a.out
-  checking whether the C compiler works... yes
-  checking whether we are cross compiling... no
-  checking for suffix of executables...
-  checking for suffix of object files... o
-  checking whether we are using the GNU C compiler... yes
-  checking whether /home/spack1/spack/lib/spack/env/gcc/gcc accepts -g... yes
-  checking for /home/spack1/spack/lib/spack/env/gcc/gcc option to accept ISO C89... none needed
-  checking for style of include used by make... GNU
-  checking dependency style of /home/spack1/spack/lib/spack/env/gcc/gcc... gcc3
-  checking whether /home/spack1/spack/lib/spack/env/gcc/gcc and cc understand -c and -o together... yes
-  checking whether we are using the GNU C++ compiler... yes
-  checking whether /home/spack1/spack/lib/spack/env/gcc/g++ accepts -g... yes
-  checking dependency style of /home/spack1/spack/lib/spack/env/gcc/g++... gcc3
-  checking for /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/openmpi-3.0.0-yo5qkfvumpmgmvlbalqcadu46j5bd52f/bin/mpicc... /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/openmpi-3.0.0-yo5qkfvumpmgmvlbalqcadu46j5bd52f/bin/mpicc
-  Checking whether /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/openmpi-3.0.0-yo5qkfvumpmgmvlbalqcadu46j5bd52f/bin/mpicc responds to '-showme:compile'... yes
-  configure: error: unable to locate adept-utils installation
-
-We're seeing the same error, but now we're in a shell where we can run
-the command ourselves and debug as needed.  We could, for example, run
-``./configure --help`` to see what options we can use to specify
-dependencies.
-
-We can use the ``exit`` command to leave the shell spawned by ``spack
-build-env``.
-
-------------------------------
-Specifying Configure Arguments
-------------------------------
-
-Let's add the configure arguments to the mpileaks' ``package.py``.  This
-version can be found in
-``$SPACK_ROOT/lib/spack/docs/tutorial/examples/4.package.py``:
-
-.. literalinclude:: tutorial/examples/4.package.py
-   :lines: 6-
-   :language: python
-
-This is all we need for a working mpileaks package!  If we install now we'll see:
-
-.. code-block:: console
-
-   $ spack install mpileaks
-   ...
-   ==> Installing mpileaks
-   ==> Searching for binary cache of mpileaks
-   ==> Finding buildcaches in /mirror/build_cache
-   ==> No binary for mpileaks found: installing from source
-   ==> Using cached archive: ~/spack/var/spack/cache/mpileaks/mpileaks-1.0.tar.gz
-   ==> Staging archive: ~/spack/var/spack/stage/mpileaks-1.0-csoikctsalli4cdkkdk377gprkc472rb/mpileaks-1.0.tar.gz
-   ==> Created stage in ~/spack/var/spack/stage/mpileaks-1.0-csoikctsalli4cdkkdk377gprkc472rb
-   ==> No patches needed for mpileaks
-   ==> Building mpileaks [Package]
-   ==> Executing phase: 'install'
-   ==> Successfully installed mpileaks
-     Fetch: 0.00s.  Build: 9.41s.  Total: 9.41s.
-   [+] ~/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/mpileaks-1.0-csoikctsalli4cdkkdk377gprkc472rb
-
-There are some special circumstances in this package that are worth highlighting.
-Normally, Spack would have automatically detected that mpileaks was an
-Autotools-based package when we ran ``spack create`` and made it an ``AutoToolsPackage``
-class (except we added the ``-t generic`` option to skip this).  Instead of
-a full install routine we would have just written:
-
-.. code-block:: python
-
-   def configure_args(self):
-       return [
-           '--with-adept-utils={0}'.format(self.spec['adept-utils'].prefix),
-           '--with-callpath={0}'.format(self.spec['callpath'].prefix)
-       ]
-
-Similarly, if this had been a CMake-based package we
-would have been filling in a ``cmake_args`` function instead of
-``configure_args``.  There are similar default package types for
-many build environments that will be discussed later in the tutorial.
-
---------
-Variants
---------
-
-We have a successful mpileaks build, but let's take some time to improve
-it.  ``mpileaks`` has a build-time option to truncate parts of the stack
-that it walks.  Let's add a variant to allow users to set this when they
-build mpileaks with Spack.
-
-To do this, we'll add a variant to our package, as per the following (see
-``$SPACK_ROOT/lib/spack/docs/tutorial/examples/5.package.py``):
-
-.. literalinclude:: tutorial/examples/5.package.py
-   :lines: 6-
-   :language: python
-
-We've added the variant ``stackstart``, and given it a default value of
-``0``.  If we install now we can see the stackstart variant added to the
-configure line (output truncated for length):
-
-.. code-block:: console
-
-   $ spack install --verbose mpileaks stackstart=4
-   ...
-   ==> Installing mpileaks
-   ==> Searching for binary cache of mpileaks
-   ==> Finding buildcaches in /mirror/build_cache
-   ==> No binary for mpileaks found: installing from source
-   ==> Using cached archive: ~/spack/var/spack/cache/mpileaks/mpileaks-1.0.tar.gz
-   ==> Staging archive: ~/spack/var/spack/stage/mpileaks-1.0-meufjojkxve3l7rci2mbud3faidgplto/mpileaks-1.0.tar.gz
-   ==> Created stage in ~/spack/var/spack/stage/mpileaks-1.0-meufjojkxve3l7rci2mbud3faidgplto
-   ==> No patches needed for mpileaks
-   ==> Building mpileaks [Package]
-   ==> Executing phase: 'install'
-   ==> './configure' '--prefix=~/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/mpileaks-1.0-meufjojkxve3l7rci2mbud3faidgplto' '--with-adept-utils=~/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/adept-utils-1.0.1-7tippnvo5g76wpijk7x5kwfpr3iqiaen' '--with-callpath=~/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/callpath-1.0.4-empvyxdkc4j4pwg7gznwhbiumruey66x' '--with-stack-start-c=4' '--with-stack-start-fortran=4'
-
----------------
-The Spec Object
----------------
-
-This tutorial has glossed over a few important features, which weren't
-too relevant for mpileaks but may be useful for other packages.  There
-were several places we reference the ``self.spec`` object.  This is a
-powerful class for querying information about what we're building.  For
-example, you could use the spec to query information about how a
-package's dependencies were built, or what compiler was being used, or
-what version of a package is being installed.  Full documentation can be
-found in the :ref:`packaging-guide`, but here's some quick snippets with
-common queries:
-
-- Am I building ``mpileaks`` version ``1.1`` or greater?
-
-.. code-block:: python
-
-   if self.spec.satisfies('@1.1:'):
-       # Do things needed for 1.1+
-
-- Is ``openmpi`` the MPI I'm building with?
-
-.. code-block:: python
-
-   if self.spec['mpi'].name == 'openmpi':
-       # Do openmpi things
-
-- Am I building with ``gcc`` version less than ``5.0.0``:
-
-.. code-block:: python
-
-   if self.spec.satisfies('%gcc@:5.0.0'):
-       # Add arguments specific to gcc's earlier than 5.0.0
-
-- Am I building with the ``debug`` variant:
-
-.. code-block:: python
-
-   if self.spec.satisfies('+debug'):
-       # Add -g option to configure flags
-
-- Is my ``dyninst`` dependency greater than version ``8.0``?
-
-.. code-block:: python
-
-   if self.spec['dyninst'].satisfies('@8.0:'):
-       # Use newest dyninst options
-
-More examples can be found in the thousands of packages already added to
-Spack in ``$SPACK_ROOT/var/spack/repos/builtin/packages``.
-
-Good Luck!
-
-To ensure that future sections of the tutorial run properly, please
-uninstall mpileaks and remove the tutorial repo from your
-configuration.
-
-.. code-block:: console
-
-   $ spack uninstall -ay mpileaks
-   $ spack repo remove tutorial
-   $ rm -rf $SPACK_ROOT/var/spack/repos/tutorial/packages/mpileaks
-- 
GitLab