Use console instead of shell syntax lexer, fixes #1634
This commit is contained in:
parent
f856952728
commit
6795f4ca12
@ -8,15 +8,18 @@ The ``spack`` command has many *subcommands*. You'll only need a
|
|||||||
small subset of them for typical usage.
|
small subset of them for typical usage.
|
||||||
|
|
||||||
Note that Spack colorizes output. ``less -R`` should be used with
|
Note that Spack colorizes output. ``less -R`` should be used with
|
||||||
Spack to maintain this colorization. E.g.::
|
Spack to maintain this colorization. E.g.:
|
||||||
|
|
||||||
spack find | less -R
|
.. code-block:: console
|
||||||
|
|
||||||
It is recommend that the following be put in your ``.bashrc`` file::
|
$ spack find | less -R
|
||||||
|
|
||||||
|
It is recommend that the following be put in your ``.bashrc`` file:
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
alias less='less -R'
|
alias less='less -R'
|
||||||
|
|
||||||
|
|
||||||
--------------------------
|
--------------------------
|
||||||
Listing available packages
|
Listing available packages
|
||||||
--------------------------
|
--------------------------
|
||||||
@ -114,18 +117,18 @@ Installing and uninstalling
|
|||||||
For example, To install the latest version of the ``mpileaks``
|
For example, To install the latest version of the ``mpileaks``
|
||||||
package, you might type this:
|
package, you might type this:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack install mpileaks
|
$ spack install mpileaks
|
||||||
|
|
||||||
If `mpileaks` depends on other packages, Spack will install the
|
If ``mpileaks`` depends on other packages, Spack will install the
|
||||||
dependencies first. It then fetches the ``mpileaks`` tarball, expands
|
dependencies first. It then fetches the ``mpileaks`` tarball, expands
|
||||||
it, verifies that it was downloaded without errors, builds it, and
|
it, verifies that it was downloaded without errors, builds it, and
|
||||||
installs it in its own directory under ``$SPACK_ROOT/opt``. You'll see
|
installs it in its own directory under ``$SPACK_ROOT/opt``. You'll see
|
||||||
a number of messages from spack, a lot of build output, and a message
|
a number of messages from spack, a lot of build output, and a message
|
||||||
that the packages is installed:
|
that the packages is installed:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack install mpileaks
|
$ spack install mpileaks
|
||||||
==> Installing mpileaks
|
==> Installing mpileaks
|
||||||
@ -155,7 +158,7 @@ Building a specific version
|
|||||||
Spack can also build *specific versions* of a package. To do this,
|
Spack can also build *specific versions* of a package. To do this,
|
||||||
just add ``@`` after the package name, followed by a version:
|
just add ``@`` after the package name, followed by a version:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack install mpich@3.0.4
|
$ spack install mpich@3.0.4
|
||||||
|
|
||||||
@ -174,8 +177,8 @@ two configurations of the same version of a package, one built with boost
|
|||||||
This can all be done on the command line using the *spec* syntax.
|
This can all be done on the command line using the *spec* syntax.
|
||||||
Spack calls the descriptor used to refer to a particular package
|
Spack calls the descriptor used to refer to a particular package
|
||||||
configuration a **spec**. In the commands above, ``mpileaks`` and
|
configuration a **spec**. In the commands above, ``mpileaks`` and
|
||||||
``mpileaks@3.0.4``. We'll talk more about how you can use them to
|
``mpileaks@3.0.4`` are both valid *specs*. We'll talk more about how
|
||||||
customize an installation in :ref:`sec-specs`.
|
you can use them to customize an installation in :ref:`sec-specs`.
|
||||||
|
|
||||||
.. _spack-uninstall:
|
.. _spack-uninstall:
|
||||||
|
|
||||||
@ -183,53 +186,56 @@ customize an installation in :ref:`sec-specs`.
|
|||||||
``spack uninstall``
|
``spack uninstall``
|
||||||
^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
To uninstall a package, type ``spack uninstall <package>``. This will ask the user for
|
To uninstall a package, type ``spack uninstall <package>``. This will ask
|
||||||
confirmation, and in case will completely remove the directory in which the package was installed.
|
the user for confirmation, and in case will completely remove the directory
|
||||||
|
in which the package was installed.
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
spack uninstall mpich
|
$ spack uninstall mpich
|
||||||
|
|
||||||
If there are still installed packages that depend on the package to be
|
If there are still installed packages that depend on the package to be
|
||||||
uninstalled, spack will refuse to uninstall it.
|
uninstalled, spack will refuse to uninstall it.
|
||||||
|
|
||||||
To uninstall a package and every package that depends on it, you may give the
|
To uninstall a package and every package that depends on it, you may give the
|
||||||
`--dependents` option.
|
``--dependents`` option.
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
spack uninstall --dependents mpich
|
$ spack uninstall --dependents mpich
|
||||||
|
|
||||||
will display a list of all the packages that depend on `mpich` and, upon confirmation,
|
will display a list of all the packages that depend on ``mpich`` and, upon
|
||||||
will uninstall them in the right order.
|
confirmation, will uninstall them in the right order.
|
||||||
|
|
||||||
A line like
|
A command like
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
spack uninstall mpich
|
$ spack uninstall mpich
|
||||||
|
|
||||||
may be ambiguous, if multiple ``mpich`` configurations are installed. For example, if both
|
may be ambiguous if multiple ``mpich`` configurations are installed.
|
||||||
``mpich@3.0.2`` and ``mpich@3.1`` are installed, ``mpich`` could refer
|
For example, if both ``mpich@3.0.2`` and ``mpich@3.1`` are installed,
|
||||||
to either one. Because it cannot determine which one to uninstall,
|
``mpich`` could refer to either one. Because it cannot determine which
|
||||||
Spack will ask you either to provide a version number to remove the
|
one to uninstall, Spack will ask you either to provide a version number
|
||||||
ambiguity or use the ``--all`` option to uninstall all of the matching packages.
|
to remove the ambiguity or use the ``--all`` option to uninstall all of
|
||||||
|
the matching packages.
|
||||||
|
|
||||||
You may force uninstall a package with the `--force` option
|
You may force uninstall a package with the ``--force`` option
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
spack uninstall --force mpich
|
$ spack uninstall --force mpich
|
||||||
|
|
||||||
but you risk breaking other installed packages. In general, it is safer to remove dependent
|
but you risk breaking other installed packages. In general, it is safer to
|
||||||
packages *before* removing their dependencies or use the `--dependents` option.
|
remove dependent packages *before* removing their dependencies or use the
|
||||||
|
``--dependents`` option.
|
||||||
|
|
||||||
-------------------------
|
-------------------------
|
||||||
Seeing installed packages
|
Seeing installed packages
|
||||||
-------------------------
|
-------------------------
|
||||||
|
|
||||||
We know that ``spack list`` shows you the names of available packages,
|
We know that ``spack list`` shows you the names of available packages,
|
||||||
but how do you figure out which are installed?
|
but how do you figure out which are already installed?
|
||||||
|
|
||||||
.. _spack-find:
|
.. _spack-find:
|
||||||
|
|
||||||
@ -244,7 +250,7 @@ of the same package with different specs.
|
|||||||
|
|
||||||
Running ``spack find`` with no arguments lists installed packages:
|
Running ``spack find`` with no arguments lists installed packages:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack find
|
$ spack find
|
||||||
==> 74 installed packages.
|
==> 74 installed packages.
|
||||||
@ -283,17 +289,18 @@ only shows the version of installed packages.
|
|||||||
|
|
||||||
``spack find`` can filter the package list based on the package name, spec, or
|
``spack find`` can filter the package list based on the package name, spec, or
|
||||||
a number of properties of their installation status. For example, missing
|
a number of properties of their installation status. For example, missing
|
||||||
dependencies of a spec can be shown with ``-m``, packages which were
|
dependencies of a spec can be shown with ``--missing``, packages which were
|
||||||
explicitly installed with ``spack install <package>`` can be singled out with
|
explicitly installed with ``spack install <package>`` can be singled out with
|
||||||
``-e`` and those which have been pulled in only as dependencies with ``-E``.
|
``--explicit`` and those which have been pulled in only as dependencies with
|
||||||
|
``--implicit``.
|
||||||
|
|
||||||
In some cases, there may be different configurations of the *same*
|
In some cases, there may be different configurations of the *same*
|
||||||
version of a package installed. For example, there are two
|
version of a package installed. For example, there are two
|
||||||
installations of of ``libdwarf@20130729`` above. We can look at them
|
installations of ``libdwarf@20130729`` above. We can look at them
|
||||||
in more detail using ``spack find -d``, and by asking only to show
|
in more detail using ``spack find --deps``, and by asking only to show
|
||||||
``libdwarf`` packages:
|
``libdwarf`` packages:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack find --deps libdwarf
|
$ spack find --deps libdwarf
|
||||||
==> 2 installed packages.
|
==> 2 installed packages.
|
||||||
@ -307,25 +314,25 @@ Now we see that the two instances of ``libdwarf`` depend on
|
|||||||
*different* versions of ``libelf``: 0.8.12 and 0.8.13. This view can
|
*different* versions of ``libelf``: 0.8.12 and 0.8.13. This view can
|
||||||
become complicated for packages with many dependencies. If you just
|
become complicated for packages with many dependencies. If you just
|
||||||
want to know whether two packages' dependencies differ, you can use
|
want to know whether two packages' dependencies differ, you can use
|
||||||
``spack find -l``:
|
``spack find --long``:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack find -l libdwarf
|
$ spack find --long libdwarf
|
||||||
==> 2 installed packages.
|
==> 2 installed packages.
|
||||||
-- linux-debian7-x86_64 / gcc@4.4.7 --------------------------------
|
-- linux-debian7-x86_64 / gcc@4.4.7 --------------------------------
|
||||||
libdwarf@20130729-d9b90962 libdwarf@20130729-b52fac98
|
libdwarf@20130729-d9b90962 libdwarf@20130729-b52fac98
|
||||||
|
|
||||||
Now the ``libwarf`` installs have hashes after their names. These are
|
Now the ``libdwarf`` installs have hashes after their names. These are
|
||||||
hashes over all of the dependencies of each package. If the hashes
|
hashes over all of the dependencies of each package. If the hashes
|
||||||
are the same, then the packages have the same dependency configuration.
|
are the same, then the packages have the same dependency configuration.
|
||||||
|
|
||||||
If you want to know the path where each package is installed, you can
|
If you want to know the path where each package is installed, you can
|
||||||
use ``spack find -p``:
|
use ``spack find --paths``:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack find -p
|
$ spack find --paths
|
||||||
==> 74 installed packages.
|
==> 74 installed packages.
|
||||||
-- linux-debian7-x86_64 / gcc@4.4.7 --------------------------------
|
-- linux-debian7-x86_64 / gcc@4.4.7 --------------------------------
|
||||||
ImageMagick@6.8.9-10 /home/gamblin2/spack/opt/linux-debian7-x86_64/gcc@4.4.7/ImageMagick@6.8.9-10-4df950dd
|
ImageMagick@6.8.9-10 /home/gamblin2/spack/opt/linux-debian7-x86_64/gcc@4.4.7/ImageMagick@6.8.9-10-4df950dd
|
||||||
@ -340,9 +347,9 @@ use ``spack find -p``:
|
|||||||
And, finally, you can restrict your search to a particular package
|
And, finally, you can restrict your search to a particular package
|
||||||
by supplying its name:
|
by supplying its name:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack find -p libelf
|
$ spack find --paths libelf
|
||||||
-- linux-debian7-x86_64 / gcc@4.4.7 --------------------------------
|
-- linux-debian7-x86_64 / gcc@4.4.7 --------------------------------
|
||||||
libelf@0.8.11 /home/gamblin2/spack/opt/linux-debian7-x86_64/gcc@4.4.7/libelf@0.8.11
|
libelf@0.8.11 /home/gamblin2/spack/opt/linux-debian7-x86_64/gcc@4.4.7/libelf@0.8.11
|
||||||
libelf@0.8.12 /home/gamblin2/spack/opt/linux-debian7-x86_64/gcc@4.4.7/libelf@0.8.12
|
libelf@0.8.12 /home/gamblin2/spack/opt/linux-debian7-x86_64/gcc@4.4.7/libelf@0.8.12
|
||||||
@ -353,7 +360,7 @@ by supplying its name:
|
|||||||
package. If you want to find only libelf versions greater than version
|
package. If you want to find only libelf versions greater than version
|
||||||
0.8.12, you could say:
|
0.8.12, you could say:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack find libelf@0.8.12:
|
$ spack find libelf@0.8.12:
|
||||||
-- linux-debian7-x86_64 / gcc@4.4.7 --------------------------------
|
-- linux-debian7-x86_64 / gcc@4.4.7 --------------------------------
|
||||||
@ -362,17 +369,16 @@ package. If you want to find only libelf versions greater than version
|
|||||||
Finding just the versions of libdwarf built with a particular version
|
Finding just the versions of libdwarf built with a particular version
|
||||||
of libelf would look like this:
|
of libelf would look like this:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack find -l libdwarf ^libelf@0.8.12
|
$ spack find --long libdwarf ^libelf@0.8.12
|
||||||
==> 1 installed packages.
|
==> 1 installed packages.
|
||||||
-- linux-debian7-x86_64 / gcc@4.4.7 --------------------------------
|
-- linux-debian7-x86_64 / gcc@4.4.7 --------------------------------
|
||||||
libdwarf@20130729-d9b90962
|
libdwarf@20130729-d9b90962
|
||||||
|
|
||||||
We can also search for packages that have a certain attribute. For example,
|
We can also search for packages that have a certain attribute. For example,
|
||||||
``spack find -l libdwarf +debug`` will show only installations of libdwarf
|
``spack find libdwarf +debug`` will show only installations of libdwarf
|
||||||
with the 'debug' compile-time option enabled, while ``spack find -l +debug``
|
with the 'debug' compile-time option enabled.
|
||||||
will find every installed package with a 'debug' compile-time option enabled.
|
|
||||||
|
|
||||||
The full spec syntax is discussed in detail in :ref:`sec-specs`.
|
The full spec syntax is discussed in detail in :ref:`sec-specs`.
|
||||||
|
|
||||||
@ -385,7 +391,7 @@ Compiler configuration
|
|||||||
Spack has the ability to build packages with multiple compilers and
|
Spack has the ability to build packages with multiple compilers and
|
||||||
compiler versions. Spack searches for compilers on your machine
|
compiler versions. Spack searches for compilers on your machine
|
||||||
automatically the first time it is run. It does this by inspecting
|
automatically the first time it is run. It does this by inspecting
|
||||||
your path.
|
your ``PATH``.
|
||||||
|
|
||||||
.. _spack-compilers:
|
.. _spack-compilers:
|
||||||
|
|
||||||
@ -394,7 +400,9 @@ your path.
|
|||||||
^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
You can see which compilers spack has found by running ``spack
|
You can see which compilers spack has found by running ``spack
|
||||||
compilers`` or ``spack compiler list``::
|
compilers`` or ``spack compiler list``:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack compilers
|
$ spack compilers
|
||||||
==> Available compilers
|
==> Available compilers
|
||||||
@ -432,7 +440,9 @@ An alias for ``spack compiler find``.
|
|||||||
|
|
||||||
If you do not see a compiler in this list, but you want to use it with
|
If you do not see a compiler in this list, but you want to use it with
|
||||||
Spack, you can simply run ``spack compiler find`` with the path to
|
Spack, you can simply run ``spack compiler find`` with the path to
|
||||||
where the compiler is installed. For example::
|
where the compiler is installed. For example:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack compiler find /usr/local/tools/ic-13.0.079
|
$ spack compiler find /usr/local/tools/ic-13.0.079
|
||||||
==> Added 1 new compiler to /Users/gamblin2/.spack/compilers.yaml
|
==> Added 1 new compiler to /Users/gamblin2/.spack/compilers.yaml
|
||||||
@ -441,7 +451,9 @@ where the compiler is installed. For example::
|
|||||||
Or you can run ``spack compiler find`` with no arguments to force
|
Or you can run ``spack compiler find`` with no arguments to force
|
||||||
auto-detection. This is useful if you do not know where compilers are
|
auto-detection. This is useful if you do not know where compilers are
|
||||||
installed, but you know that new compilers have been added to your
|
installed, but you know that new compilers have been added to your
|
||||||
``PATH``. For example, using dotkit, you might do this::
|
``PATH``. For example, using dotkit, you might do this:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
$ module load gcc-4.9.0
|
$ module load gcc-4.9.0
|
||||||
$ spack compiler find
|
$ spack compiler find
|
||||||
@ -458,7 +470,9 @@ This loads the environment module for gcc-4.9.0 to add it to
|
|||||||
^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
If you want to see specifics on a particular compiler, you can run
|
If you want to see specifics on a particular compiler, you can run
|
||||||
``spack compiler info`` on it::
|
``spack compiler info`` on it:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack compiler info intel@15
|
$ spack compiler info intel@15
|
||||||
intel@15.0.0:
|
intel@15.0.0:
|
||||||
@ -466,9 +480,11 @@ If you want to see specifics on a particular compiler, you can run
|
|||||||
cxx = /usr/local/bin/icpc-15.0.090
|
cxx = /usr/local/bin/icpc-15.0.090
|
||||||
f77 = /usr/local/bin/ifort-15.0.090
|
f77 = /usr/local/bin/ifort-15.0.090
|
||||||
fc = /usr/local/bin/ifort-15.0.090
|
fc = /usr/local/bin/ifort-15.0.090
|
||||||
|
modules = []
|
||||||
|
operating system = centos6
|
||||||
|
|
||||||
This shows which C, C++, and Fortran compilers were detected by Spack.
|
This shows which C, C++, and Fortran compilers were detected by Spack.
|
||||||
Notice also that we didn\'t have to be too specific about the
|
Notice also that we didn't have to be too specific about the
|
||||||
version. We just said ``intel@15``, and information about the only
|
version. We just said ``intel@15``, and information about the only
|
||||||
matching Intel compiler was displayed.
|
matching Intel compiler was displayed.
|
||||||
|
|
||||||
@ -480,9 +496,42 @@ If auto-detection fails, you can manually configure a compiler by
|
|||||||
editing your ``~/.spack/compilers.yaml`` file. You can do this by running
|
editing your ``~/.spack/compilers.yaml`` file. You can do this by running
|
||||||
``spack config edit compilers``, which will open the file in your ``$EDITOR``.
|
``spack config edit compilers``, which will open the file in your ``$EDITOR``.
|
||||||
|
|
||||||
Each compiler configuration in the file looks like this::
|
Each compiler configuration in the file looks like this:
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
compilers:
|
||||||
|
- compiler:
|
||||||
|
modules = []
|
||||||
|
operating_system: centos6
|
||||||
|
paths:
|
||||||
|
cc: /usr/local/bin/icc-15.0.024-beta
|
||||||
|
cxx: /usr/local/bin/icpc-15.0.024-beta
|
||||||
|
f77: /usr/local/bin/ifort-15.0.024-beta
|
||||||
|
fc: /usr/local/bin/ifort-15.0.024-beta
|
||||||
|
spec: intel@15.0.0:
|
||||||
|
|
||||||
|
For compilers, like ``clang``, that do not support Fortran, put
|
||||||
|
``None`` for ``f77`` and ``fc``:
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
paths:
|
||||||
|
cc: /usr/bin/clang
|
||||||
|
cxx: /usr/bin/clang++
|
||||||
|
f77: None
|
||||||
|
fc: None
|
||||||
|
spec: clang@3.3svn:
|
||||||
|
|
||||||
|
Once you save the file, the configured compilers will show up in the
|
||||||
|
list displayed by ``spack compilers``.
|
||||||
|
|
||||||
|
You can also add compiler flags to manually configured compilers. The
|
||||||
|
valid flags are ``cflags``, ``cxxflags``, ``fflags``, ``cppflags``,
|
||||||
|
``ldflags``, and ``ldlibs``. For example:
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
...
|
|
||||||
compilers:
|
compilers:
|
||||||
- compiler:
|
- compiler:
|
||||||
modules = []
|
modules = []
|
||||||
@ -492,36 +541,9 @@ Each compiler configuration in the file looks like this::
|
|||||||
cxx: /usr/local/bin/icpc-15.0.024-beta
|
cxx: /usr/local/bin/icpc-15.0.024-beta
|
||||||
f77: /usr/local/bin/ifort-15.0.024-beta
|
f77: /usr/local/bin/ifort-15.0.024-beta
|
||||||
fc: /usr/local/bin/ifort-15.0.024-beta
|
fc: /usr/local/bin/ifort-15.0.024-beta
|
||||||
|
parameters:
|
||||||
spec: intel@15.0.0:
|
|
||||||
|
|
||||||
For compilers, like ``clang``, that do not support Fortran, put
|
|
||||||
``None`` for ``f77`` and ``fc``::
|
|
||||||
|
|
||||||
clang@3.3svn:
|
|
||||||
cc: /usr/bin/clang
|
|
||||||
cxx: /usr/bin/clang++
|
|
||||||
f77: None
|
|
||||||
fc: None
|
|
||||||
|
|
||||||
Once you save the file, the configured compilers will show up in the
|
|
||||||
list displayed by ``spack compilers``.
|
|
||||||
|
|
||||||
You can also add compiler flags to manually configured compilers. The
|
|
||||||
valid flags are ``cflags``, ``cxxflags``, ``fflags``, ``cppflags``,
|
|
||||||
``ldflags``, and ``ldlibs``. For example::
|
|
||||||
|
|
||||||
...
|
|
||||||
compilers:
|
|
||||||
- compiler:
|
|
||||||
...
|
|
||||||
intel@15.0.0:
|
|
||||||
cc: /usr/local/bin/icc-15.0.024-beta
|
|
||||||
cxx: /usr/local/bin/icpc-15.0.024-beta
|
|
||||||
f77: /usr/local/bin/ifort-15.0.024-beta
|
|
||||||
fc: /usr/local/bin/ifort-15.0.024-beta
|
|
||||||
cppflags: -O3 -fPIC
|
cppflags: -O3 -fPIC
|
||||||
...
|
spec: intel@15.0.0:
|
||||||
|
|
||||||
These flags will be treated by spack as if they were enterred from
|
These flags will be treated by spack as if they were enterred from
|
||||||
the command line each time this compiler is used. The compiler wrappers
|
the command line each time this compiler is used. The compiler wrappers
|
||||||
@ -541,10 +563,12 @@ Spack, that descriptor is called a *spec*. Spack uses specs to refer
|
|||||||
to a particular build configuration (or configurations) of a package.
|
to a particular build configuration (or configurations) of a package.
|
||||||
Specs are more than a package name and a version; you can use them to
|
Specs are more than a package name and a version; you can use them to
|
||||||
specify the compiler, compiler version, architecture, compile options,
|
specify the compiler, compiler version, architecture, compile options,
|
||||||
and dependency options for a build. In this section, we\'ll go over
|
and dependency options for a build. In this section, we'll go over
|
||||||
the full syntax of specs.
|
the full syntax of specs.
|
||||||
|
|
||||||
Here is an example of a much longer spec than we\'ve seen thus far::
|
Here is an example of a much longer spec than we've seen thus far:
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
mpileaks @1.2:1.4 %gcc@4.7.5 +debug -qt arch=bgq_os ^callpath @1.1 %gcc@4.7.2
|
mpileaks @1.2:1.4 %gcc@4.7.5 +debug -qt arch=bgq_os ^callpath @1.1 %gcc@4.7.2
|
||||||
|
|
||||||
@ -638,7 +662,7 @@ of dependencies within a spec is that they appear *after* the root
|
|||||||
package. For example, these two specs represent exactly the same
|
package. For example, these two specs represent exactly the same
|
||||||
configuration:
|
configuration:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: none
|
||||||
|
|
||||||
mpileaks ^callpath@1.0 ^libelf@0.8.3
|
mpileaks ^callpath@1.0 ^libelf@0.8.3
|
||||||
mpileaks ^libelf@0.8.3 ^callpath@1.0
|
mpileaks ^libelf@0.8.3 ^callpath@1.0
|
||||||
@ -712,7 +736,7 @@ makes available. Variants can be specified using
|
|||||||
a flexible parameter syntax ``name=<value>``. For example,
|
a flexible parameter syntax ``name=<value>``. For example,
|
||||||
``spack install libelf debug=True`` will install libelf build with debug
|
``spack install libelf debug=True`` will install libelf build with debug
|
||||||
flags. The names of particular variants available for a package depend on
|
flags. The names of particular variants available for a package depend on
|
||||||
what was provided by the package author. ``spack into <package>`` will
|
what was provided by the package author. ``spack info <package>`` will
|
||||||
provide information on what build variants are available.
|
provide information on what build variants are available.
|
||||||
|
|
||||||
For compatibility with earlier versions, variants which happen to be
|
For compatibility with earlier versions, variants which happen to be
|
||||||
@ -723,7 +747,7 @@ compile time option for the libelf package.
|
|||||||
|
|
||||||
Depending on the package a variant may have any default value. For
|
Depending on the package a variant may have any default value. For
|
||||||
``libelf`` here, ``debug`` is ``False`` by default, and we turned it on
|
``libelf`` here, ``debug`` is ``False`` by default, and we turned it on
|
||||||
with ``debug=True`` or ``+debug``. If a package is ``True`` by default
|
with ``debug=True`` or ``+debug``. If a variant is ``True`` by default
|
||||||
you can turn it off by either adding ``-name`` or ``~name`` to the spec.
|
you can turn it off by either adding ``-name`` or ``~name`` to the spec.
|
||||||
|
|
||||||
There are two syntaxes here because, depending on context, ``~`` and
|
There are two syntaxes here because, depending on context, ``~`` and
|
||||||
@ -774,9 +798,9 @@ command line. From within python files, the same spec would be specified
|
|||||||
handles the quote symbols.
|
handles the quote symbols.
|
||||||
|
|
||||||
The six compiler flags are injected in the order of implicit make commands
|
The six compiler flags are injected in the order of implicit make commands
|
||||||
in gnu autotools. If all flags are set, the order is
|
in GNU Autotools. If all flags are set, the order is
|
||||||
``$cppflags $cflags|$cxxflags $ldflags command $ldlibs`` for C and C++ and
|
``$cppflags $cflags|$cxxflags $ldflags <command> $ldlibs`` for C and C++ and
|
||||||
``$fflags $cppflags $ldflags command $ldlibs`` for fortran.
|
``$fflags $cppflags $ldflags <command> $ldlibs`` for Fortran.
|
||||||
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
Architecture specifiers
|
Architecture specifiers
|
||||||
@ -786,14 +810,14 @@ The architecture can be specified by using the reserved
|
|||||||
words ``target`` and/or ``os`` (``target=x86-64 os=debian7``). You can also
|
words ``target`` and/or ``os`` (``target=x86-64 os=debian7``). You can also
|
||||||
use the triplet form of platform, operating system and processor.
|
use the triplet form of platform, operating system and processor.
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
spack install libelf arch=cray_xc-CNL10-haswell
|
$ spack install libelf arch=cray-CNL10-haswell
|
||||||
|
|
||||||
Users on non-Cray systems won't have to worry about specifying the architecture.
|
Users on non-Cray systems won't have to worry about specifying the architecture.
|
||||||
Spack will autodetect what kind of operating system is on your machine as well
|
Spack will autodetect what kind of operating system is on your machine as well
|
||||||
as the processor. For more information on how the architecture can be
|
as the processor. For more information on how the architecture can be
|
||||||
used on Cray machines, check here :ref:`cray-support`
|
used on Cray machines, see :ref:`cray-support`
|
||||||
|
|
||||||
.. _sec-virtual-dependencies:
|
.. _sec-virtual-dependencies:
|
||||||
|
|
||||||
@ -848,21 +872,27 @@ Constraining virtual packages
|
|||||||
|
|
||||||
When installing a package that depends on a virtual package, you can
|
When installing a package that depends on a virtual package, you can
|
||||||
opt to specify the particular provider you want to use, or you can let
|
opt to specify the particular provider you want to use, or you can let
|
||||||
Spack pick. For example, if you just type this::
|
Spack pick. For example, if you just type this:
|
||||||
|
|
||||||
spack install mpileaks
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ spack install mpileaks
|
||||||
|
|
||||||
Then spack will pick a provider for you according to site policies.
|
Then spack will pick a provider for you according to site policies.
|
||||||
If you really want a particular version, say mpich, then you could
|
If you really want a particular version, say ``mpich``, then you could
|
||||||
run this instead::
|
run this instead:
|
||||||
|
|
||||||
spack install mpileaks ^mpich
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ spack install mpileaks ^mpich
|
||||||
|
|
||||||
This forces spack to use some version of ``mpich`` for its
|
This forces spack to use some version of ``mpich`` for its
|
||||||
implementation. As always, you can be even more specific and require
|
implementation. As always, you can be even more specific and require
|
||||||
a particular ``mpich`` version::
|
a particular ``mpich`` version:
|
||||||
|
|
||||||
spack install mpileaks ^mpich@3
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ spack install mpileaks ^mpich@3
|
||||||
|
|
||||||
The ``mpileaks`` package in particular only needs MPI-1 commands, so
|
The ``mpileaks`` package in particular only needs MPI-1 commands, so
|
||||||
any MPI implementation will do. If another package depends on
|
any MPI implementation will do. If another package depends on
|
||||||
@ -887,7 +917,7 @@ to be unique, Spack will replace the reference with the spec to which
|
|||||||
it refers. Otherwise, it will prompt for a more qualified hash.
|
it refers. Otherwise, it will prompt for a more qualified hash.
|
||||||
|
|
||||||
Note that this will not work to reinstall a depencency uninstalled by
|
Note that this will not work to reinstall a depencency uninstalled by
|
||||||
``spack uninstall -f``.
|
``spack uninstall --force``.
|
||||||
|
|
||||||
.. _spack-providers:
|
.. _spack-providers:
|
||||||
|
|
||||||
@ -937,15 +967,15 @@ distributions, this can be installed from the vendor's repository:
|
|||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: sh
|
||||||
|
|
||||||
yum install environment-modules # (Fedora/RHEL/CentOS)
|
$ yum install environment-modules # (Fedora/RHEL/CentOS)
|
||||||
apt-get install environment-modules # (Ubuntu/Debian)
|
$ apt-get install environment-modules # (Ubuntu/Debian)
|
||||||
|
|
||||||
If your Linux distribution does not have
|
If your Linux distribution does not have
|
||||||
Environment Modules, you can get it with Spack:
|
Environment Modules, you can get it with Spack:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
spack install environment-modules
|
$ spack install environment-modules
|
||||||
|
|
||||||
In this case to activate it automatically you need to add the following two
|
In this case to activate it automatically you need to add the following two
|
||||||
lines to your ``.bashrc`` profile (or similar):
|
lines to your ``.bashrc`` profile (or similar):
|
||||||
@ -972,7 +1002,8 @@ For ``bash`` or ``ksh``, run:
|
|||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: sh
|
||||||
|
|
||||||
. ${SPACK_ROOT}/share/spack/setup-env.sh
|
export SPACK_ROOT=/path/to/spack
|
||||||
|
. $SPACK_ROOT/share/spack/setup-env.sh
|
||||||
|
|
||||||
For ``csh`` and ``tcsh`` run:
|
For ``csh`` and ``tcsh`` run:
|
||||||
|
|
||||||
@ -995,8 +1026,8 @@ directories:
|
|||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: sh
|
||||||
|
|
||||||
${SPACK_ROOT}/share/spack/modules
|
$SPACK_ROOT/share/spack/modules
|
||||||
${SPACK_ROOT}/share/spack/dotkit
|
$SPACK_ROOT/share/spack/dotkit
|
||||||
|
|
||||||
The directories are automatically added to your ``MODULEPATH`` and
|
The directories are automatically added to your ``MODULEPATH`` and
|
||||||
``DK_NODE`` environment variables when you enable Spack's `shell
|
``DK_NODE`` environment variables when you enable Spack's `shell
|
||||||
@ -1011,7 +1042,7 @@ If you have shell support enabled you should be able to run either
|
|||||||
been installed. Here is sample output of those programs, showing lots
|
been installed. Here is sample output of those programs, showing lots
|
||||||
of installed packages.
|
of installed packages.
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ module avail
|
$ module avail
|
||||||
|
|
||||||
@ -1028,7 +1059,7 @@ of installed packages.
|
|||||||
libNBC@1.1.1%gcc@4.9.0-27912b7b sundials@2.5.0%gcc@4.9.0-27912b7b
|
libNBC@1.1.1%gcc@4.9.0-27912b7b sundials@2.5.0%gcc@4.9.0-27912b7b
|
||||||
libdwarf@20130729%gcc@4.4.7-b52fac98
|
libdwarf@20130729%gcc@4.4.7-b52fac98
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ use -l spack
|
$ use -l spack
|
||||||
|
|
||||||
@ -1054,13 +1085,13 @@ The names here should look familiar, they're the same ones from
|
|||||||
``spack find``. You *can* use the names here directly. For example,
|
``spack find``. You *can* use the names here directly. For example,
|
||||||
you could type either of these commands to load the callpath module:
|
you could type either of these commands to load the callpath module:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
use callpath@1.0.1%gcc@4.4.7-5dce4318
|
$ use callpath@1.0.1%gcc@4.4.7-5dce4318
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
module load callpath@1.0.1%gcc@4.4.7-5dce4318
|
$ module load callpath@1.0.1%gcc@4.4.7-5dce4318
|
||||||
|
|
||||||
Neither of these is particularly pretty, easy to remember, or
|
Neither of these is particularly pretty, easy to remember, or
|
||||||
easy to type. Luckily, Spack has its own interface for using modules
|
easy to type. Luckily, Spack has its own interface for using modules
|
||||||
@ -1077,7 +1108,7 @@ And you can use the same shortened names you use everywhere else in
|
|||||||
Spack. For example, this will add the ``mpich`` package built with
|
Spack. For example, this will add the ``mpich`` package built with
|
||||||
``gcc`` to your path:
|
``gcc`` to your path:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack install mpich %gcc@4.4.7
|
$ spack install mpich %gcc@4.4.7
|
||||||
|
|
||||||
@ -1090,15 +1121,15 @@ Spack. For example, this will add the ``mpich`` package built with
|
|||||||
|
|
||||||
Or, similarly with modules, you could type:
|
Or, similarly with modules, you could type:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack load mpich %gcc@4.4.7
|
$ spack load mpich %gcc@4.4.7
|
||||||
|
|
||||||
These commands will add appropriate directories to your ``PATH``,
|
These commands will add appropriate directories to your ``PATH``,
|
||||||
``MANPATH``, ``CPATH``, and ``LD_LIBRARY_PATH``. When you no longer want to use
|
``MANPATH``, ``CPATH``, and ``LD_LIBRARY_PATH``. When you no longer
|
||||||
a package, you can type unload or unuse similarly:
|
want to use a package, you can type unload or unuse similarly:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack unload mpich %gcc@4.4.7 # modules
|
$ spack unload mpich %gcc@4.4.7 # modules
|
||||||
$ spack unuse mpich %gcc@4.4.7 # dotkit
|
$ spack unuse mpich %gcc@4.4.7 # dotkit
|
||||||
@ -1116,7 +1147,7 @@ Ambiguous module names
|
|||||||
If a spec used with load/unload or use/unuse is ambiguous (i.e. more
|
If a spec used with load/unload or use/unuse is ambiguous (i.e. more
|
||||||
than one installed package matches it), then Spack will warn you:
|
than one installed package matches it), then Spack will warn you:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack load libelf
|
$ spack load libelf
|
||||||
==> Error: Multiple matches for spec libelf. Choose one:
|
==> Error: Multiple matches for spec libelf. Choose one:
|
||||||
@ -1129,7 +1160,7 @@ identify one package. For example, above, the key differentiator is
|
|||||||
that one ``libelf`` is built with the Intel compiler, while the other
|
that one ``libelf`` is built with the Intel compiler, while the other
|
||||||
used ``gcc``. You could therefore just type:
|
used ``gcc``. You could therefore just type:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack load libelf %intel
|
$ spack load libelf %intel
|
||||||
|
|
||||||
@ -1144,13 +1175,13 @@ and are placed in the following directories under the Spack root:
|
|||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: sh
|
||||||
|
|
||||||
${SPACK_ROOT}/share/spack/modules
|
$SPACK_ROOT/share/spack/modules
|
||||||
${SPACK_ROOT}/share/spack/dotkit
|
$SPACK_ROOT/share/spack/dotkit
|
||||||
|
|
||||||
The content that gets written in each module file can be customized in two ways:
|
The content that gets written in each module file can be customized in two ways:
|
||||||
|
|
||||||
1. overriding part of the ``spack.Package`` API within a ``package.py``
|
#. overriding part of the ``spack.Package`` API within a ``package.py``
|
||||||
2. writing dedicated configuration files
|
#. writing dedicated configuration files
|
||||||
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
Override ``Package`` API
|
Override ``Package`` API
|
||||||
@ -1179,7 +1210,7 @@ RPATH.
|
|||||||
Modules may be loaded recursively with the ``load`` command's
|
Modules may be loaded recursively with the ``load`` command's
|
||||||
``--dependencies`` or ``-r`` argument:
|
``--dependencies`` or ``-r`` argument:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack load --dependencies <spec> ...
|
$ spack load --dependencies <spec> ...
|
||||||
|
|
||||||
@ -1195,7 +1226,7 @@ commands inside a shell script. By adding the ``--shell`` flag,
|
|||||||
``spack module find`` may also be used to generate code that can be
|
``spack module find`` may also be used to generate code that can be
|
||||||
cut-and-pasted into a shell script. For example:
|
cut-and-pasted into a shell script. For example:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack module find tcl --dependencies --shell py-numpy git
|
$ spack module find tcl --dependencies --shell py-numpy git
|
||||||
# bzip2@1.0.6%gcc@4.9.3=linux-x86_64
|
# bzip2@1.0.6%gcc@4.9.3=linux-x86_64
|
||||||
@ -1230,7 +1261,7 @@ cut-and-pasted into a shell script. For example:
|
|||||||
module load git-2.8.0-rc2-gcc-4.9.3-3bib4hqtnv5xjjoq5ugt3inblt4xrgkd
|
module load git-2.8.0-rc2-gcc-4.9.3-3bib4hqtnv5xjjoq5ugt3inblt4xrgkd
|
||||||
|
|
||||||
The script may be further edited by removing unnecessary modules.
|
The script may be further edited by removing unnecessary modules.
|
||||||
This script may be directly executed in bash via
|
This script may be directly executed in bash via:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: sh
|
||||||
|
|
||||||
@ -1261,7 +1292,6 @@ overrides ``setup_dependent_environment`` in the following way:
|
|||||||
.. code-block:: python
|
.. code-block:: python
|
||||||
|
|
||||||
def setup_dependent_environment(self, spack_env, run_env, extension_spec):
|
def setup_dependent_environment(self, spack_env, run_env, extension_spec):
|
||||||
# ...
|
|
||||||
if extension_spec.package.extends(self.spec):
|
if extension_spec.package.extends(self.spec):
|
||||||
run_env.prepend_path('PYTHONPATH', os.path.join(extension_spec.prefix, self.site_packages_dir))
|
run_env.prepend_path('PYTHONPATH', os.path.join(extension_spec.prefix, self.site_packages_dir))
|
||||||
|
|
||||||
@ -1355,7 +1385,8 @@ modified by your dotkit modules. Then :
|
|||||||
dotkit:
|
dotkit:
|
||||||
all:
|
all:
|
||||||
filter:
|
filter:
|
||||||
environment_blacklist: ['CPATH', 'LIBRARY_PATH'] # Exclude changes to any of these variables
|
# Exclude changes to any of these variables
|
||||||
|
environment_blacklist: ['CPATH', 'LIBRARY_PATH']
|
||||||
|
|
||||||
will generate dotkit module files that will not contain modifications to either
|
will generate dotkit module files that will not contain modifications to either
|
||||||
``CPATH`` or ``LIBRARY_PATH`` and environment module files that instead will
|
``CPATH`` or ``LIBRARY_PATH`` and environment module files that instead will
|
||||||
@ -1448,15 +1479,12 @@ Running ``spack module refresh`` will remove the
|
|||||||
``share/spack/modules`` and ``share/spack/dotkit`` directories, then
|
``share/spack/modules`` and ``share/spack/dotkit`` directories, then
|
||||||
regenerate all module and dotkit files from scratch:
|
regenerate all module and dotkit files from scratch:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack module refresh
|
$ spack module refresh
|
||||||
==> Regenerating tcl module files.
|
==> Regenerating tcl module files.
|
||||||
==> Regenerating dotkit module files.
|
==> Regenerating dotkit module files.
|
||||||
|
|
||||||
|
|
||||||
.. _extensions:
|
|
||||||
|
|
||||||
----------------
|
----------------
|
||||||
Filesystem Views
|
Filesystem Views
|
||||||
----------------
|
----------------
|
||||||
@ -1496,10 +1524,10 @@ built by Spack.
|
|||||||
|
|
||||||
Views can be used for a variety of purposes including:
|
Views can be used for a variety of purposes including:
|
||||||
|
|
||||||
- A central installation in a traditional layout, eg ``/usr/local`` maintained over time by the sysadmin.
|
* A central installation in a traditional layout, eg ``/usr/local`` maintained over time by the sysadmin.
|
||||||
- A self-contained installation area which may for the basis of a top-level atomic versioning scheme, eg ``/opt/pro`` vs ``/opt/dev``.
|
* A self-contained installation area which may for the basis of a top-level atomic versioning scheme, eg ``/opt/pro`` vs ``/opt/dev``.
|
||||||
- Providing an atomic and monolithic binary distribution, eg for delivery as a single tarball.
|
* Providing an atomic and monolithic binary distribution, eg for delivery as a single tarball.
|
||||||
- Producing ephemeral testing or developing environments.
|
* Producing ephemeral testing or developing environments.
|
||||||
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^
|
||||||
Using Filesystem Views
|
Using Filesystem Views
|
||||||
@ -1514,9 +1542,9 @@ The following example creates a filesystem view based
|
|||||||
on an installed ``cmake`` package and then removes from the view the
|
on an installed ``cmake`` package and then removes from the view the
|
||||||
files in the ``cmake`` package while retaining its dependencies.
|
files in the ``cmake`` package while retaining its dependencies.
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack view -v symlink myview cmake@3.5.2
|
$ spack view --verbose symlink myview cmake@3.5.2
|
||||||
==> Linking package: "ncurses"
|
==> Linking package: "ncurses"
|
||||||
==> Linking package: "zlib"
|
==> Linking package: "zlib"
|
||||||
==> Linking package: "openssl"
|
==> Linking package: "openssl"
|
||||||
@ -1529,7 +1557,7 @@ files in the ``cmake`` package while retaining its dependencies.
|
|||||||
captoinfo clear cpack ctest infotocap openssl tabs toe tset
|
captoinfo clear cpack ctest infotocap openssl tabs toe tset
|
||||||
ccmake cmake c_rehash infocmp ncurses6-config reset tic tput
|
ccmake cmake c_rehash infocmp ncurses6-config reset tic tput
|
||||||
|
|
||||||
$ spack view -v -d false rm myview cmake@3.5.2
|
$ spack view --verbose --dependencies false rm myview cmake@3.5.2
|
||||||
==> Removing package: "cmake"
|
==> Removing package: "cmake"
|
||||||
|
|
||||||
$ ls myview/bin/
|
$ ls myview/bin/
|
||||||
@ -1568,6 +1596,8 @@ particular, if two packages require the same sub-tree of dependencies,
|
|||||||
removing one package (recursively) will remove its dependencies and
|
removing one package (recursively) will remove its dependencies and
|
||||||
leave the other package broken.
|
leave the other package broken.
|
||||||
|
|
||||||
|
.. _extensions:
|
||||||
|
|
||||||
---------------------------
|
---------------------------
|
||||||
Extensions & Python support
|
Extensions & Python support
|
||||||
---------------------------
|
---------------------------
|
||||||
@ -1583,7 +1613,7 @@ Spack has support for this type of installation as well. In Spack,
|
|||||||
a package that can live inside the prefix of another package is called
|
a package that can live inside the prefix of another package is called
|
||||||
an *extension*. Suppose you have Python installed like so:
|
an *extension*. Suppose you have Python installed like so:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack find python
|
$ spack find python
|
||||||
==> 1 installed packages.
|
==> 1 installed packages.
|
||||||
@ -1598,7 +1628,7 @@ an *extension*. Suppose you have Python installed like so:
|
|||||||
|
|
||||||
You can find extensions for your Python installation like this:
|
You can find extensions for your Python installation like this:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack extensions python
|
$ spack extensions python
|
||||||
==> python@2.7.8%gcc@4.4.7 arch=linux-debian7-x86_64-703c7a96
|
==> python@2.7.8%gcc@4.4.7 arch=linux-debian7-x86_64-703c7a96
|
||||||
@ -1623,11 +1653,11 @@ You can find extensions for your Python installation like this:
|
|||||||
|
|
||||||
The extensions are a subset of what's returned by ``spack list``, and
|
The extensions are a subset of what's returned by ``spack list``, and
|
||||||
they are packages like any other. They are installed into their own
|
they are packages like any other. They are installed into their own
|
||||||
prefixes, and you can see this with ``spack find -p``:
|
prefixes, and you can see this with ``spack find --paths``:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack find -p py-numpy
|
$ spack find --paths py-numpy
|
||||||
==> 1 installed packages.
|
==> 1 installed packages.
|
||||||
-- linux-debian7-x86_64 / gcc@4.4.7 --------------------------------
|
-- linux-debian7-x86_64 / gcc@4.4.7 --------------------------------
|
||||||
py-numpy@1.9.1 /g/g21/gamblin2/src/spack/opt/linux-debian7-x86_64/gcc@4.4.7/py-numpy@1.9.1-66733244
|
py-numpy@1.9.1 /g/g21/gamblin2/src/spack/opt/linux-debian7-x86_64/gcc@4.4.7/py-numpy@1.9.1-66733244
|
||||||
@ -1635,7 +1665,7 @@ prefixes, and you can see this with ``spack find -p``:
|
|||||||
However, even though this package is installed, you cannot use it
|
However, even though this package is installed, you cannot use it
|
||||||
directly when you run ``python``:
|
directly when you run ``python``:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack load python
|
$ spack load python
|
||||||
$ python
|
$ python
|
||||||
@ -1659,14 +1689,14 @@ in your current shell.
|
|||||||
|
|
||||||
For tcl modules:
|
For tcl modules:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack load python
|
$ spack load python
|
||||||
$ spack load py-numpy
|
$ spack load py-numpy
|
||||||
|
|
||||||
or, for dotkit:
|
or, for dotkit:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack use python
|
$ spack use python
|
||||||
$ spack use py-numpy
|
$ spack use py-numpy
|
||||||
@ -1690,7 +1720,7 @@ installation:
|
|||||||
``spack activate``
|
``spack activate``
|
||||||
^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack activate py-numpy
|
$ spack activate py-numpy
|
||||||
==> Activated extension py-setuptools@11.3.1%gcc@4.4.7 arch=linux-debian7-x86_64-3c74eb69 for python@2.7.8%gcc@4.4.7.
|
==> Activated extension py-setuptools@11.3.1%gcc@4.4.7 arch=linux-debian7-x86_64-3c74eb69 for python@2.7.8%gcc@4.4.7.
|
||||||
@ -1707,7 +1737,7 @@ once all dependencies were activated in the ``python`` installation,
|
|||||||
If we run ``spack extensions`` again, we now see the three new
|
If we run ``spack extensions`` again, we now see the three new
|
||||||
packages listed as activated:
|
packages listed as activated:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack extensions python
|
$ spack extensions python
|
||||||
==> python@2.7.8%gcc@4.4.7 arch=linux-debian7-x86_64-703c7a96
|
==> python@2.7.8%gcc@4.4.7 arch=linux-debian7-x86_64-703c7a96
|
||||||
@ -1756,7 +1786,7 @@ explicitly load their preferred version.
|
|||||||
If, for some reason, you want to activate a package *without* its
|
If, for some reason, you want to activate a package *without* its
|
||||||
dependencies, you can use ``spack activate -f``:
|
dependencies, you can use ``spack activate -f``:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack activate -f py-numpy
|
$ spack activate -f py-numpy
|
||||||
==> Activated extension py-numpy@1.9.1%gcc@4.4.7 arch=linux-debian7-x86_64-66733244 for python@2.7.8%gcc@4.4.7.
|
==> Activated extension py-numpy@1.9.1%gcc@4.4.7 arch=linux-debian7-x86_64-66733244 for python@2.7.8%gcc@4.4.7.
|
||||||
@ -1775,15 +1805,17 @@ several variants:
|
|||||||
* ``spack deactivate <extension>`` will deactivate a single
|
* ``spack deactivate <extension>`` will deactivate a single
|
||||||
extension. If another activated extension depends on this one,
|
extension. If another activated extension depends on this one,
|
||||||
Spack will warn you and exit with an error.
|
Spack will warn you and exit with an error.
|
||||||
* ``spack deactivate -f <extension>`` deactivates an extension
|
* ``spack deactivate --force <extension>`` deactivates an extension
|
||||||
regardless of packages that depend on it.
|
regardless of packages that depend on it.
|
||||||
* ``spack deactivate -a <extension>`` deactivates an extension and
|
* ``spack deactivate --all <extension>`` deactivates an extension and
|
||||||
all of its dependencies. Use ``-f`` to disregard dependents.
|
all of its dependencies. Use ``--force`` to disregard dependents.
|
||||||
* ``spack deactivate -a <extendee>`` deactivates *all* activated
|
* ``spack deactivate --all <extendee>`` deactivates *all* activated
|
||||||
extensions of a package. For example, to deactivate *all* python
|
extensions of a package. For example, to deactivate *all* python
|
||||||
extensions, use::
|
extensions, use:
|
||||||
|
|
||||||
spack deactivate -a python
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ spack deactivate --all python
|
||||||
|
|
||||||
-----------------------
|
-----------------------
|
||||||
Filesystem requirements
|
Filesystem requirements
|
||||||
@ -1796,7 +1828,7 @@ without ``flock`` support enabled. You can determine how your
|
|||||||
filesystems are mounted with ``mount -p``. The output for a Lustre
|
filesystems are mounted with ``mount -p``. The output for a Lustre
|
||||||
filesystem might look like this:
|
filesystem might look like this:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ mount -l | grep lscratch
|
$ mount -l | grep lscratch
|
||||||
pilsner-mds1-lnet0@o2ib100:/lsd on /p/lscratchd type lustre (rw,nosuid,noauto,_netdev,lazystatfs,flock)
|
pilsner-mds1-lnet0@o2ib100:/lsd on /p/lscratchd type lustre (rw,nosuid,noauto,_netdev,lazystatfs,flock)
|
||||||
@ -1808,7 +1840,7 @@ system administrator to enable ``flock``.
|
|||||||
|
|
||||||
This issue typically manifests with the error below:
|
This issue typically manifests with the error below:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ ./spack find
|
$ ./spack find
|
||||||
Traceback (most recent call last):
|
Traceback (most recent call last):
|
||||||
@ -1817,7 +1849,7 @@ This issue typically manifests with the error below:
|
|||||||
File "./spack", line 154,' in main
|
File "./spack", line 154,' in main
|
||||||
return_val = command(parser, args)
|
return_val = command(parser, args)
|
||||||
File "./spack/lib/spack/spack/cmd/find.py", line 170, in find
|
File "./spack/lib/spack/spack/cmd/find.py", line 170, in find
|
||||||
specs = set(spack.installed_db.query(**q_args))
|
specs = set(spack.installed_db.query(\**q_args))
|
||||||
File "./spack/lib/spack/spack/database.py", line 551, in query
|
File "./spack/lib/spack/spack/database.py", line 551, in query
|
||||||
with self.read_transaction():
|
with self.read_transaction():
|
||||||
File "./spack/lib/spack/spack/database.py", line 598, in __enter__
|
File "./spack/lib/spack/spack/database.py", line 598, in __enter__
|
||||||
@ -1832,12 +1864,7 @@ This issue typically manifests with the error below:
|
|||||||
|
|
||||||
A nicer error message is TBD in future versions of Spack.
|
A nicer error message is TBD in future versions of Spack.
|
||||||
|
|
||||||
<<<<<<< c36f13e44dae52086ca48e4f16b514642bc91106
|
|
||||||
|
|
||||||
.. _cray-support:
|
.. _cray-support:
|
||||||
=======
|
|
||||||
.. _spack-cray:
|
|
||||||
>>>>>>> Fix #1604 and fix #1605, title underline problems
|
|
||||||
|
|
||||||
-------------
|
-------------
|
||||||
Spack on Cray
|
Spack on Cray
|
||||||
@ -1846,34 +1873,34 @@ Spack on Cray
|
|||||||
Spack differs slightly when used on a Cray system. The architecture spec
|
Spack differs slightly when used on a Cray system. The architecture spec
|
||||||
can differentiate between the front-end and back-end processor and operating system.
|
can differentiate between the front-end and back-end processor and operating system.
|
||||||
For example, on Edison at NERSC, the back-end target processor
|
For example, on Edison at NERSC, the back-end target processor
|
||||||
is \"Ivy Bridge\", so you can specify to use the back-end this way:
|
is "Ivy Bridge", so you can specify to use the back-end this way:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
spack install zlib target=ivybridge
|
$ spack install zlib target=ivybridge
|
||||||
|
|
||||||
You can also use the operating system to build against the back-end:
|
You can also use the operating system to build against the back-end:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
spack install zlib os=CNL10
|
$ spack install zlib os=CNL10
|
||||||
|
|
||||||
Notice that the name includes both the operating system name and the major
|
Notice that the name includes both the operating system name and the major
|
||||||
version number concatenated together.
|
version number concatenated together.
|
||||||
|
|
||||||
Alternatively, if you want to build something for the front-end,
|
Alternatively, if you want to build something for the front-end,
|
||||||
you can specify the front-end target processor. The processor for a login node
|
you can specify the front-end target processor. The processor for a login node
|
||||||
on Edison is \"Sandy bridge\" so we specify on the command line like so:
|
on Edison is "Sandy bridge" so we specify on the command line like so:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
spack install zlib target=sandybridge
|
$ spack install zlib target=sandybridge
|
||||||
|
|
||||||
And the front-end operating system is:
|
And the front-end operating system is:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
spack install zlib os=SuSE11
|
$ spack install zlib os=SuSE11
|
||||||
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
Cray compiler detection
|
Cray compiler detection
|
||||||
@ -1888,27 +1915,27 @@ compiler wrapper names (i.e. cc, CC, ftn). During build time, Spack will load
|
|||||||
the correct PrgEnv and compiler module and will call appropriate wrapper.
|
the correct PrgEnv and compiler module and will call appropriate wrapper.
|
||||||
|
|
||||||
The compilers.yaml config file will also differ. There is a
|
The compilers.yaml config file will also differ. There is a
|
||||||
modules section that is filled with the compiler\'s Programming Environment
|
modules section that is filled with the compiler's Programming Environment
|
||||||
and module name. On other systems, this field is empty []::
|
and module name. On other systems, this field is empty []:
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
...
|
|
||||||
- compiler:
|
- compiler:
|
||||||
modules:
|
modules:
|
||||||
- PrgEnv-intel
|
- PrgEnv-intel
|
||||||
- intel/15.0.109
|
- intel/15.0.109
|
||||||
...
|
|
||||||
|
|
||||||
As mentioned earlier, the compiler paths will look different on a Cray system.
|
As mentioned earlier, the compiler paths will look different on a Cray system.
|
||||||
Since most compilers are invoked using cc, CC and ftn, the paths for each
|
Since most compilers are invoked using cc, CC and ftn, the paths for each
|
||||||
compiler are replaced with their respective Cray compiler wrapper names::
|
compiler are replaced with their respective Cray compiler wrapper names:
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
...
|
|
||||||
paths:
|
paths:
|
||||||
cc: cc
|
cc: cc
|
||||||
cxx: CC
|
cxx: CC
|
||||||
f77: ftn
|
f77: ftn
|
||||||
fc: ftn
|
fc: ftn
|
||||||
...
|
|
||||||
|
|
||||||
As opposed to an explicit path to the compiler executable. This allows Spack
|
As opposed to an explicit path to the compiler executable. This allows Spack
|
||||||
to call the Cray compiler wrappers during build time.
|
to call the Cray compiler wrappers during build time.
|
||||||
@ -1917,16 +1944,16 @@ For more on compiler configuration, check out :ref:`compiler-config`.
|
|||||||
|
|
||||||
Spack sets the default Cray link type to dynamic, to better match other
|
Spack sets the default Cray link type to dynamic, to better match other
|
||||||
other platforms. Individual packages can enable static linking (which is the
|
other platforms. Individual packages can enable static linking (which is the
|
||||||
default outside of Spack on cray systems) using the -static flag.
|
default outside of Spack on cray systems) using the ``-static`` flag.
|
||||||
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
Setting defaults and using Cray modules
|
Setting defaults and using Cray modules
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
If you want to use default compilers for each PrgEnv and also be able
|
If you want to use default compilers for each PrgEnv and also be able
|
||||||
to load cray external modules, you will need to set up a packages.yaml.
|
to load cray external modules, you will need to set up a ``packages.yaml``.
|
||||||
|
|
||||||
Here\'s an example of an external configuration for cray modules:
|
Here's an example of an external configuration for cray modules:
|
||||||
|
|
||||||
.. code-block:: yaml
|
.. code-block:: yaml
|
||||||
|
|
||||||
@ -1942,7 +1969,7 @@ environment variables, libraries, etc, that are brought into the environment
|
|||||||
via module load.
|
via module load.
|
||||||
|
|
||||||
You can set the default compiler that Spack can use for each compiler type.
|
You can set the default compiler that Spack can use for each compiler type.
|
||||||
If you want to use the Cray defaults, then set them under *all:* in packages.yaml.
|
If you want to use the Cray defaults, then set them under ``all:`` in packages.yaml.
|
||||||
In the compiler field, set the compiler specs in your order of preference.
|
In the compiler field, set the compiler specs in your order of preference.
|
||||||
Whenever you build with that compiler type, Spack will concretize to that version.
|
Whenever you build with that compiler type, Spack will concretize to that version.
|
||||||
|
|
||||||
@ -1987,7 +2014,7 @@ Getting Help
|
|||||||
^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^
|
||||||
|
|
||||||
If you don't find what you need here, the ``help`` subcommand will
|
If you don't find what you need here, the ``help`` subcommand will
|
||||||
print out out a list of *all* of ``spack``'s options and subcommands:
|
print out out a list of *all* of spack's options and subcommands:
|
||||||
|
|
||||||
.. command-output:: spack help
|
.. command-output:: spack help
|
||||||
|
|
||||||
@ -1996,5 +2023,5 @@ usage information for a particular subcommand:
|
|||||||
|
|
||||||
.. command-output:: spack help install
|
.. command-output:: spack help install
|
||||||
|
|
||||||
Alternately, you can use ``spack -h`` in place of ``spack help``, or
|
Alternately, you can use ``spack --help`` in place of ``spack help``, or
|
||||||
``spack <subcommand> -h`` to get help on a particular subcommand.
|
``spack <subcommand> --help`` to get help on a particular subcommand.
|
||||||
|
@ -10,7 +10,9 @@ Configuration
|
|||||||
Temporary space
|
Temporary space
|
||||||
---------------
|
---------------
|
||||||
|
|
||||||
.. warning:: Temporary space configuration will eventually be moved to
|
.. warning::
|
||||||
|
|
||||||
|
Temporary space configuration will eventually be moved to
|
||||||
configuration files, but currently these settings are in
|
configuration files, but currently these settings are in
|
||||||
``lib/spack/spack/__init__.py``
|
``lib/spack/spack/__init__.py``
|
||||||
|
|
||||||
@ -144,7 +146,7 @@ The preferred configuration can be controlled via the
|
|||||||
|
|
||||||
Here's an example packages.yaml file that sets preferred packages:
|
Here's an example packages.yaml file that sets preferred packages:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: yaml
|
||||||
|
|
||||||
packages:
|
packages:
|
||||||
opencv:
|
opencv:
|
||||||
@ -205,15 +207,15 @@ supply ``-p`` to Spack on the command line, before any subcommands.
|
|||||||
|
|
||||||
``spack -p`` output looks like this:
|
``spack -p`` output looks like this:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack -p graph dyninst
|
$ spack -p graph dyninst
|
||||||
o dyninst
|
o dyninst
|
||||||
|\
|
\|\
|
||||||
| |\
|
\| \|\
|
||||||
| o | libdwarf
|
\| o \| libdwarf
|
||||||
|/ /
|
\|/ /
|
||||||
o | libelf
|
o \| libelf
|
||||||
/
|
/
|
||||||
o boost
|
o boost
|
||||||
|
|
||||||
|
@ -70,7 +70,9 @@ Directory Structure
|
|||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
So that you can familiarize yourself with the project, we'll start
|
So that you can familiarize yourself with the project, we'll start
|
||||||
with a high level view of Spack's directory structure::
|
with a high level view of Spack's directory structure:
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
spack/ <- installation root
|
spack/ <- installation root
|
||||||
bin/
|
bin/
|
||||||
@ -109,17 +111,14 @@ Spack is designed so that it could live within a `standard UNIX
|
|||||||
directory hierarchy <http://linux.die.net/man/7/hier>`_, so ``lib``,
|
directory hierarchy <http://linux.die.net/man/7/hier>`_, so ``lib``,
|
||||||
``var``, and ``opt`` all contain a ``spack`` subdirectory in case
|
``var``, and ``opt`` all contain a ``spack`` subdirectory in case
|
||||||
Spack is installed alongside other software. Most of the interesting
|
Spack is installed alongside other software. Most of the interesting
|
||||||
parts of Spack live in ``lib/spack``. Files under ``var`` are created
|
parts of Spack live in ``lib/spack``.
|
||||||
as needed, so there is no ``var`` directory when you initially clone
|
|
||||||
Spack from the repository.
|
|
||||||
|
|
||||||
Spack has *one* directory layout and there is no install process.
|
Spack has *one* directory layout and there is no install process.
|
||||||
version and the source code. Most Python programs don't look like
|
Most Python programs don't look like this (they use distutils, ``setup.py``,
|
||||||
this (they use distutils, ``setup.py``, etc.) but we wanted to make
|
etc.) but we wanted to make Spack *very* easy to use. The simple layout
|
||||||
Spack *very* easy to use. The simple layout spares users from the
|
spares users from the need to install Spack into a Python environment.
|
||||||
need to install Spack into a Python environment. Many users don't
|
Many users don't have write access to a Python installation, and installing
|
||||||
have write access to a Python installation, and installing an entire
|
an entire new instance of Python to bootstrap Spack would be very complicated.
|
||||||
new instance of Python to bootstrap Spack would be very complicated.
|
|
||||||
Users should not have to install install a big, complicated package to
|
Users should not have to install install a big, complicated package to
|
||||||
use the thing that's supposed to spare them from the details of big,
|
use the thing that's supposed to spare them from the details of big,
|
||||||
complicated packages. The end result is that Spack works out of the
|
complicated packages. The end result is that Spack works out of the
|
||||||
@ -283,8 +282,7 @@ Spec objects
|
|||||||
Package objects
|
Package objects
|
||||||
---------------
|
---------------
|
||||||
|
|
||||||
Most spack commands
|
Most spack commands look something like this:
|
||||||
look something like this:
|
|
||||||
|
|
||||||
#. Parse an abstract spec (or specs) from the command line,
|
#. Parse an abstract spec (or specs) from the command line,
|
||||||
#. *Normalize* the spec based on information in package files,
|
#. *Normalize* the spec based on information in package files,
|
||||||
@ -295,7 +293,7 @@ look something like this:
|
|||||||
The information in Package files is used at all stages in this
|
The information in Package files is used at all stages in this
|
||||||
process.
|
process.
|
||||||
|
|
||||||
Conceptually, packages are overloaded. They contain
|
Conceptually, packages are overloaded. They contain:
|
||||||
|
|
||||||
-------------
|
-------------
|
||||||
Stage objects
|
Stage objects
|
||||||
|
@ -14,7 +14,7 @@ Simple package installation
|
|||||||
Installing the default version of a package is simple. This will install
|
Installing the default version of a package is simple. This will install
|
||||||
the latest version of the ``mpileaks`` package and all of its dependencies:
|
the latest version of the ``mpileaks`` package and all of its dependencies:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack install mpileaks
|
$ spack install mpileaks
|
||||||
|
|
||||||
@ -26,7 +26,7 @@ Spack allows installation to be customized. Users can specify the
|
|||||||
version, build compiler, compile-time options, and cross-compile
|
version, build compiler, compile-time options, and cross-compile
|
||||||
platform, all on the command line.
|
platform, all on the command line.
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
# Install a particular version by appending @
|
# Install a particular version by appending @
|
||||||
$ spack install mpileaks@1.1.2
|
$ spack install mpileaks@1.1.2
|
||||||
@ -59,7 +59,7 @@ customized extensively. Suppose that ``mpileaks`` depends indirectly
|
|||||||
on ``libelf`` and ``libdwarf``. Using ``^``, users can add custom
|
on ``libelf`` and ``libdwarf``. Using ``^``, users can add custom
|
||||||
configurations for the dependencies:
|
configurations for the dependencies:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
# Install mpileaks and link it with specific versions of libelf and libdwarf
|
# Install mpileaks and link it with specific versions of libelf and libdwarf
|
||||||
$ spack install mpileaks@1.1.2 %gcc@4.7.3 +debug ^libelf@0.8.12 ^libdwarf@20130729+debug
|
$ spack install mpileaks@1.1.2 %gcc@4.7.3 +debug ^libelf@0.8.12 ^libdwarf@20130729+debug
|
||||||
@ -91,7 +91,7 @@ in pure Python.
|
|||||||
|
|
||||||
For example, this command:
|
For example, this command:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack create http://www.mr511.de/software/libelf-0.8.13.tar.gz
|
$ spack create http://www.mr511.de/software/libelf-0.8.13.tar.gz
|
||||||
|
|
||||||
@ -101,16 +101,26 @@ creates a simple python file:
|
|||||||
|
|
||||||
from spack import *
|
from spack import *
|
||||||
|
|
||||||
|
|
||||||
class Libelf(Package):
|
class Libelf(Package):
|
||||||
homepage = "http://www.example.com/"
|
"""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 = "http://www.mr511.de/software/libelf-0.8.13.tar.gz"
|
url = "http://www.mr511.de/software/libelf-0.8.13.tar.gz"
|
||||||
|
|
||||||
version('0.8.13', '4136d7b4c04df68b686570afa26988ac')
|
version('0.8.13', '4136d7b4c04df68b686570afa26988ac')
|
||||||
|
|
||||||
def install(self, prefix):
|
# FIXME: Add dependencies if required.
|
||||||
configure("--prefix=%s" % prefix)
|
# depends_on('foo')
|
||||||
|
|
||||||
|
def install(self, spec, prefix):
|
||||||
|
# FIXME: Modify the configure line to suit your build system here.
|
||||||
|
configure('--prefix={0}'.format(prefix))
|
||||||
|
|
||||||
|
# FIXME: Add logic to build and install here.
|
||||||
make()
|
make()
|
||||||
make("install")
|
make('install')
|
||||||
|
|
||||||
It doesn't take much python coding to get from there to a working
|
It doesn't take much python coding to get from there to a working
|
||||||
package:
|
package:
|
||||||
|
@ -9,7 +9,7 @@ Download
|
|||||||
Getting spack is easy. You can clone it from the `github repository
|
Getting spack is easy. You can clone it from the `github repository
|
||||||
<https://github.com/llnl/spack>`_ using this command:
|
<https://github.com/llnl/spack>`_ using this command:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ git clone https://github.com/llnl/spack.git
|
$ git clone https://github.com/llnl/spack.git
|
||||||
|
|
||||||
@ -18,7 +18,7 @@ full path to this directory is in the ``SPACK_ROOT`` environment
|
|||||||
variable. Add ``$SPACK_ROOT/bin`` to your path and you're ready to
|
variable. Add ``$SPACK_ROOT/bin`` to your path and you're ready to
|
||||||
go:
|
go:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ export PATH=$SPACK_ROOT/bin:$PATH
|
$ export PATH=$SPACK_ROOT/bin:$PATH
|
||||||
$ spack install libelf
|
$ spack install libelf
|
||||||
@ -26,9 +26,10 @@ go:
|
|||||||
For a richer experience, use Spack's `shell support
|
For a richer experience, use Spack's `shell support
|
||||||
<http://software.llnl.gov/spack/basic_usage.html#environment-modules>`_:
|
<http://software.llnl.gov/spack/basic_usage.html#environment-modules>`_:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
# For bash users
|
# For bash users
|
||||||
|
$ export SPACK_ROOT=/path/to/spack
|
||||||
$ . $SPACK_ROOT/share/spack/setup-env.sh
|
$ . $SPACK_ROOT/share/spack/setup-env.sh
|
||||||
|
|
||||||
# For tcsh or csh users (note you must set SPACK_ROOT)
|
# For tcsh or csh users (note you must set SPACK_ROOT)
|
||||||
@ -48,7 +49,7 @@ You may want to run it out of a prefix other than the git repository
|
|||||||
you cloned. The ``spack bootstrap`` command provides this
|
you cloned. The ``spack bootstrap`` command provides this
|
||||||
functionality. To install spack in a new directory, simply type:
|
functionality. To install spack in a new directory, simply type:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack bootstrap /my/favorite/prefix
|
$ spack bootstrap /my/favorite/prefix
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ Get spack from the `github repository
|
|||||||
<https://github.com/llnl/spack>`_ and install your first
|
<https://github.com/llnl/spack>`_ and install your first
|
||||||
package:
|
package:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ git clone https://github.com/llnl/spack.git
|
$ git clone https://github.com/llnl/spack.git
|
||||||
$ cd spack/bin
|
$ cd spack/bin
|
||||||
|
@ -11,7 +11,9 @@ mirror is a URL that points to a directory, either on the local
|
|||||||
filesystem or on some server, containing tarballs for all of Spack's
|
filesystem or on some server, containing tarballs for all of Spack's
|
||||||
packages.
|
packages.
|
||||||
|
|
||||||
Here's an example of a mirror's directory structure::
|
Here's an example of a mirror's directory structure:
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
mirror/
|
mirror/
|
||||||
cmake/
|
cmake/
|
||||||
@ -57,21 +59,9 @@ contains tarballs for each package, named after each package.
|
|||||||
----------------
|
----------------
|
||||||
|
|
||||||
Mirrors are managed with the ``spack mirror`` command. The help for
|
Mirrors are managed with the ``spack mirror`` command. The help for
|
||||||
``spack mirror`` looks like this::
|
``spack mirror`` looks like this:
|
||||||
|
|
||||||
$ spack mirror -h
|
.. command-output:: spack help mirror
|
||||||
usage: spack mirror [-h] SUBCOMMAND ...
|
|
||||||
|
|
||||||
positional arguments:
|
|
||||||
SUBCOMMAND
|
|
||||||
create Create a directory to be used as a spack mirror, and fill
|
|
||||||
it with package archives.
|
|
||||||
add Add a mirror to Spack.
|
|
||||||
remove Remove a mirror by name.
|
|
||||||
list Print out available mirrors to the console.
|
|
||||||
|
|
||||||
optional arguments:
|
|
||||||
-h, --help show this help message and exit
|
|
||||||
|
|
||||||
The ``create`` command actually builds a mirror by fetching all of its
|
The ``create`` command actually builds a mirror by fetching all of its
|
||||||
packages from the internet and checksumming them.
|
packages from the internet and checksumming them.
|
||||||
@ -92,7 +82,7 @@ The command will iterate through all of Spack's packages and download
|
|||||||
the safe ones into a directory structure like the one above. Here is
|
the safe ones into a directory structure like the one above. Here is
|
||||||
what it looks like:
|
what it looks like:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack mirror create libelf libdwarf
|
$ spack mirror create libelf libdwarf
|
||||||
==> Created new mirror in spack-mirror-2014-06-24
|
==> Created new mirror in spack-mirror-2014-06-24
|
||||||
@ -134,7 +124,9 @@ Normally, ``spack mirror create`` downloads all the archives it has
|
|||||||
checksums for. If you want to only create a mirror for a subset of
|
checksums for. If you want to only create a mirror for a subset of
|
||||||
packages, you can do that by supplying a list of package specs on the
|
packages, you can do that by supplying a list of package specs on the
|
||||||
command line after ``spack mirror create``. For example, this
|
command line after ``spack mirror create``. For example, this
|
||||||
command::
|
command:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack mirror create libelf@0.8.12: boost@1.44:
|
$ spack mirror create libelf@0.8.12: boost@1.44:
|
||||||
|
|
||||||
@ -146,7 +138,9 @@ Mirror files
|
|||||||
^^^^^^^^^^^^
|
^^^^^^^^^^^^
|
||||||
|
|
||||||
If you have a *very* large number of packages you want to mirror, you
|
If you have a *very* large number of packages you want to mirror, you
|
||||||
can supply a file with specs in it, one per line::
|
can supply a file with specs in it, one per line:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
$ cat specs.txt
|
$ cat specs.txt
|
||||||
libdwarf
|
libdwarf
|
||||||
@ -168,7 +162,9 @@ your site.
|
|||||||
|
|
||||||
Once you have a mirror, you need to let spack know about it. This is
|
Once you have a mirror, you need to let spack know about it. This is
|
||||||
relatively simple. First, figure out the URL for the mirror. If it's
|
relatively simple. First, figure out the URL for the mirror. If it's
|
||||||
a file, you can use a file URL like this one::
|
a file, you can use a file URL like this one:
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
file:///Users/gamblin2/spack-mirror-2014-06-24
|
file:///Users/gamblin2/spack-mirror-2014-06-24
|
||||||
|
|
||||||
@ -180,7 +176,7 @@ web server, you could use a URL like this one:
|
|||||||
Spack will use the URL as the root for all of the packages it fetches.
|
Spack will use the URL as the root for all of the packages it fetches.
|
||||||
You can tell your Spack installation to use that mirror like this:
|
You can tell your Spack installation to use that mirror like this:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack mirror add local_filesystem file:///Users/gamblin2/spack-mirror-2014-06-24
|
$ spack mirror add local_filesystem file:///Users/gamblin2/spack-mirror-2014-06-24
|
||||||
|
|
||||||
@ -192,7 +188,9 @@ Each mirror has a name so that you can refer to it again later.
|
|||||||
``spack mirror list``
|
``spack mirror list``
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
To see all the mirrors Spack knows about, run ``spack mirror list``::
|
To see all the mirrors Spack knows about, run ``spack mirror list``:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack mirror list
|
$ spack mirror list
|
||||||
local_filesystem file:///Users/gamblin2/spack-mirror-2014-06-24
|
local_filesystem file:///Users/gamblin2/spack-mirror-2014-06-24
|
||||||
@ -203,7 +201,9 @@ To see all the mirrors Spack knows about, run ``spack mirror list``::
|
|||||||
``spack mirror remove``
|
``spack mirror remove``
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
To remove a mirror by name::
|
To remove a mirror by name, run:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
$ spack mirror remove local_filesystem
|
$ spack mirror remove local_filesystem
|
||||||
$ spack mirror list
|
$ spack mirror list
|
||||||
@ -213,7 +213,9 @@ To remove a mirror by name::
|
|||||||
Mirror precedence
|
Mirror precedence
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
Adding a mirror really adds a line in ``~/.spack/mirrors.yaml``::
|
Adding a mirror really adds a line in ``~/.spack/mirrors.yaml``:
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
mirrors:
|
mirrors:
|
||||||
local_filesystem: file:///Users/gamblin2/spack-mirror-2014-06-24
|
local_filesystem: file:///Users/gamblin2/spack-mirror-2014-06-24
|
||||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user