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