environments: allow sigils to apply to entire reference (#15245)

* environments: allow sigils to apply to entire reference
This commit is contained in:
Greg Becker
2020-05-04 15:11:10 -07:00
committed by GitHub
parent 6c07260d27
commit 8e2f5ba861
3 changed files with 110 additions and 5 deletions

View File

@@ -602,7 +602,7 @@ files are identical.
spack:
definitions:
- first: [libelf, libdwarf]
- compilers: ['%gcc', '^intel']
- compilers: ['%gcc', '%intel']
- second:
- $first
- matrix:
@@ -676,6 +676,40 @@ The valid variables for a ``when`` clause are:
#. ``hostname``. The hostname of the system (if ``hostname`` is an
executable in the user's PATH).
""""""""""""""""""""""""
SpecLists as Constraints
""""""""""""""""""""""""
Dependencies and compilers in Spack can be both packages in an
environment and constraints on other packages. References to SpecLists
allow a shorthand to treat packages in a list as either a compiler or
a dependency using the ``$%`` or ``$^`` syntax respectively.
For example, the following environment has three root packages:
``gcc@8.1.0``, ``mvapich2@2.3.1 %gcc@8.1.0``, and ``hdf5+mpi
%gcc@8.1.0 ^mvapich2@2.3.1``.
.. code-block:: yaml
spack:
definitions:
- compilers: [gcc@8.1.0]
- mpis: [mvapich2@2.3.1]
- packages: [hdf5+mpi]
specs:
- $compilers
- matrix:
- [$mpis]
- [$%compilers]
- matrix:
- [$packages]
- [$^mpis]
- [$%compilers]
This allows for a much-needed reduction in redundancy between packages
and constraints.
^^^^^^^^^^^^^^^^^^^^^^^^^
Environment-managed Views
^^^^^^^^^^^^^^^^^^^^^^^^^