Document how to add conditional dependencies (#14694)

* add short docs section on conditional dependencies
* add reference to spec syntax
* add note that conditional dependencies can save time
This commit is contained in:
Peter Scheibel 2020-01-30 12:34:54 -08:00 committed by GitHub
parent b2adcdb389
commit 7b2895109c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1989,6 +1989,28 @@ inject the dependency's ``prefix/lib`` directory, but the package needs to
be in ``PATH`` and ``PYTHONPATH`` during the build process and later when be in ``PATH`` and ``PYTHONPATH`` during the build process and later when
a user wants to run the package. a user wants to run the package.
^^^^^^^^^^^^^^^^^^^^^^^^
Conditional dependencies
^^^^^^^^^^^^^^^^^^^^^^^^
You may have a package that only requires a dependency under certain
conditions. For example, you may have a package that has optional MPI support,
- MPI is only a dependency when you want to enable MPI support for the
package. In that case, you could say something like:
.. code-block:: python
variant('mpi', default=False)
depends_on('mpi', when='+mpi')
``when`` can include constraints on the variant, version, compiler, etc. and
the :mod:`syntax<spack.spec>` is the same as for Specs written on the command
line.
If a dependency/feature of a package isn't typically used, you can save time
by making it conditional (since Spack will not build the dependency unless it
is required for the Spec).
.. _dependency_dependency_patching: .. _dependency_dependency_patching:
^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^