Don't use @system in packages.yaml (#3472)

This commit is contained in:
Adam J. Stewart
2017-03-17 09:55:55 -05:00
committed by Todd Gamblin
parent 5f13e40655
commit 10b767b93f
3 changed files with 19 additions and 73 deletions

View File

@@ -85,18 +85,8 @@ Check Installation
With Spack installed, you should be able to run some basic Spack With Spack installed, you should be able to run some basic Spack
commands. For example: commands. For example:
.. code-block:: console .. command-output:: spack spec netcdf
$ spack spec netcdf
...
netcdf@4.4.1%gcc@5.3.0~hdf4+mpi arch=linux-SuSE11-x86_64
^curl@7.50.1%gcc@5.3.0 arch=linux-SuSE11-x86_64
^openssl@system%gcc@5.3.0 arch=linux-SuSE11-x86_64
^zlib@1.2.8%gcc@5.3.0 arch=linux-SuSE11-x86_64
^hdf5@1.10.0-patch1%gcc@5.3.0+cxx~debug+fortran+mpi+shared~szip~threadsafe arch=linux-SuSE11-x86_64
^openmpi@1.10.1%gcc@5.3.0~mxm~pmi~psm~psm2~slurm~sqlite3~thread_multiple~tm+verbs+vt arch=linux-SuSE11-x86_64
^m4@1.4.17%gcc@5.3.0+sigsegv arch=linux-SuSE11-x86_64
^libsigsegv@2.10%gcc@5.3.0 arch=linux-SuSE11-x86_64
^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^
Optional: Alternate Prefix Optional: Alternate Prefix
@@ -225,7 +215,7 @@ If you want to see specifics on a particular compiler, you can run
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 = [] modules = []
operating system = centos6 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.
@@ -712,19 +702,22 @@ example:
$ curl -O https://github.com/ImageMagick/ImageMagick/archive/7.0.2-7.tar.gz $ curl -O https://github.com/ImageMagick/ImageMagick/archive/7.0.2-7.tar.gz
The recommended way to tell Spack to use the system-supplied OpenSSL is To tell Spack to use the system-supplied OpenSSL, first determine what
to add the following to ``packages.yaml``. Note that the ``@system`` version you have:
"version" means "I don't care what version it is, just use what is
there." This is reasonable for OpenSSL, which has a stable API.
.. code-block:: console
$ openssl version
OpenSSL 1.0.2g 1 Mar 2016
Then add the following to ``~/.spack/packages.yaml``:
.. code-block:: yaml .. code-block:: yaml
packages: packages:
openssl: openssl:
paths: paths:
openssl@system: /usr openssl@1.0.2g: /usr
version: [system]
buildable: False buildable: False
@@ -740,8 +733,7 @@ to add the following to ``packages.yaml``:
packages: packages:
netlib-lapack: netlib-lapack:
paths: paths:
netlib-lapack@system: /usr netlib-lapack@3.6.1: /usr
version: [system]
buildable: False buildable: False
all: all:
providers: providers:
@@ -750,11 +742,9 @@ to add the following to ``packages.yaml``:
.. note:: .. note::
The ``@system`` "version" means "I don't care what version it is, Above we pretend that the system-provided BLAS / LAPACK is ``netlib-lapack``
just use what is there." Above we pretend that the system-provided only because it is the only BLAS / LAPACK provider which use standard names
Blas/Lapack is ``netlib-lapack`` only because it is the only BLAS / LAPACK for libraries (as opposed to, for example, ``libopenblas.so``).
provider which use standard names for libraries (as opposed to, for example,
`libopenblas.so`).
Although we specify external package in ``/usr``, Spack is smart enough not Although we specify external package in ``/usr``, Spack is smart enough not
to add ``/usr/lib`` to RPATHs, where it could cause unrelated system to add ``/usr/lib`` to RPATHs, where it could cause unrelated system
@@ -909,7 +899,6 @@ with Spack:
tcl: tcl:
paths: paths:
tcl@8.5: /usr tcl@8.5: /usr
version: [8.5]
buildable: False buildable: False
#. Install with: #. Install with:

View File

@@ -3156,37 +3156,6 @@ Version Lists
Spack packages should list supported versions with the newest first. Spack packages should list supported versions with the newest first.
^^^^^^^^^^^^^^^^
Special Versions
^^^^^^^^^^^^^^^^
The following *special* version names may be used when building a package:
"""""""""""
``@system``
"""""""""""
Indicates a hook to the OS-installed version of the
package. This is useful, for example, to tell Spack to use the
OS-installed version in ``packages.yaml``:
.. code-block:: yaml
openssl:
paths:
openssl@system: /usr
buildable: False
Certain Spack internals look for the ``@system`` version and do
appropriate things in that case.
""""""""""
``@local``
""""""""""
Indicates the version was built manually from some source
tree of unknown provenance (see ``spack setup``).
--------------------------- ---------------------------
Packaging workflow commands Packaging workflow commands
--------------------------- ---------------------------

View File

@@ -33,24 +33,12 @@ possible realization of a particular package, out of combinatorially
many other realizations. For example, here is a concrete spec many other realizations. For example, here is a concrete spec
instantiated from ``curl``: instantiated from ``curl``:
.. code-block:: console .. command-output:: spack spec curl
curl@7.50.1%gcc@5.3.0 arch=linux-SuSE11-x86_64
^openssl@system%gcc@5.3.0 arch=linux-SuSE11-x86_64
^zlib@1.2.8%gcc@5.3.0 arch=linux-SuSE11-x86_64
Spack's core concretization algorithm generates concrete specs by Spack's core concretization algorithm generates concrete specs by
instantiating packages from its repo, based on a set of "hints", instantiating packages from its repo, based on a set of "hints",
including user input and the ``packages.yaml`` file. This algorithm including user input and the ``packages.yaml`` file. This algorithm
may be accessed at any time with the ``spack spec`` command. For may be accessed at any time with the ``spack spec`` command.
example:
.. code-block:: console
$ spack spec curl
curl@7.50.1%gcc@5.3.0 arch=linux-SuSE11-x86_64
^openssl@system%gcc@5.3.0 arch=linux-SuSE11-x86_64
^zlib@1.2.8%gcc@5.3.0 arch=linux-SuSE11-x86_64
Every time Spack installs a package, that installation corresponds to Every time Spack installs a package, that installation corresponds to
a concrete spec. Only a vanishingly small fraction of possible a concrete spec. Only a vanishingly small fraction of possible
@@ -68,7 +56,7 @@ variant, compiler, etc. For example, the following set is consistent:
.. code-block:: console .. code-block:: console
curl@7.50.1%gcc@5.3.0 arch=linux-SuSE11-x86_64 curl@7.50.1%gcc@5.3.0 arch=linux-SuSE11-x86_64
^openssl@system%gcc@5.3.0 arch=linux-SuSE11-x86_64 ^openssl@1.0.2k%gcc@5.3.0 arch=linux-SuSE11-x86_64
^zlib@1.2.8%gcc@5.3.0 arch=linux-SuSE11-x86_64 ^zlib@1.2.8%gcc@5.3.0 arch=linux-SuSE11-x86_64
zlib@1.2.8%gcc@5.3.0 arch=linux-SuSE11-x86_64 zlib@1.2.8%gcc@5.3.0 arch=linux-SuSE11-x86_64
@@ -77,7 +65,7 @@ The following set is not consistent:
.. code-block:: console .. code-block:: console
curl@7.50.1%gcc@5.3.0 arch=linux-SuSE11-x86_64 curl@7.50.1%gcc@5.3.0 arch=linux-SuSE11-x86_64
^openssl@system%gcc@5.3.0 arch=linux-SuSE11-x86_64 ^openssl@1.0.2k%gcc@5.3.0 arch=linux-SuSE11-x86_64
^zlib@1.2.8%gcc@5.3.0 arch=linux-SuSE11-x86_64 ^zlib@1.2.8%gcc@5.3.0 arch=linux-SuSE11-x86_64
zlib@1.2.7%gcc@5.3.0 arch=linux-SuSE11-x86_64 zlib@1.2.7%gcc@5.3.0 arch=linux-SuSE11-x86_64