depends_on cannot handle ^ sigil (#18220)

* depends_on cannot handle ^ sigil

* cardioid+mfem+cuda requires hypre+cuda

* Document this limitation

* Move warning message to Known Issues docs

* Better handling of parmetis dep
This commit is contained in:
Adam J. Stewart 2020-09-03 17:31:00 -05:00 committed by GitHub
parent 7728b0737b
commit 7d9f2bf4ed
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 36 additions and 6 deletions

View file

@ -14,7 +14,7 @@ problems if you encounter them.
Variants are not properly forwarded to dependencies
---------------------------------------------------
**Status:** Expected to be fixed in the next release
**Status:** Expected to be fixed by Spack's new concretizer
Sometimes, a variant of a package can also affect how its dependencies are
built. For example, in order to build MPI support for a package, it may
@ -48,3 +48,30 @@ A workaround is to explicitly activate the variants of dependencies as well:
See https://github.com/spack/spack/issues/267 and
https://github.com/spack/spack/issues/2546 for further details.
-----------------------------------------------
depends_on cannot handle recursive dependencies
-----------------------------------------------
**Status:** Not yet a work in progress
Although ``depends_on`` can handle any aspect of Spack's spec syntax,
it currently cannot handle recursive dependencies. If the ``^`` sigil
appears in a ``depends_on`` statement, the concretizer will hang.
For example, something like:
.. code-block:: python
depends_on('mfem+cuda ^hypre+cuda', when='+cuda')
should be rewritten as:
.. code-block:: python
depends_on('mfem+cuda', when='+cuda')
depends_on('hypre+cuda', when='+cuda')
See https://github.com/spack/spack/issues/17660 and
https://github.com/spack/spack/issues/11160 for more details.

View file

@ -25,8 +25,8 @@ class Cardioid(CMakePackage):
depends_on('lapack')
depends_on('mpi')
depends_on('cuda', when="+cuda")
depends_on('mfem+mpi+superlu-dist+lapack', when="+mfem~cuda")
depends_on('mfem+mpi+superlu-dist+lapack^hypre+cuda', when="+mfem+cuda")
depends_on('mfem+mpi+superlu-dist+lapack', when="+mfem")
depends_on('hypre+cuda', when="+mfem+cuda")
depends_on('cmake@3.1:', type='build')
depends_on('perl', type='build')

View file

@ -22,10 +22,13 @@ class Parmetis(CMakePackage):
variant('shared', default=True, description='Enables the build of shared libraries.')
variant('gdb', default=False, description='Enables gdb support.')
variant('int64', default=False, description='Sets the bit width of METIS\'s index type to 64.')
depends_on('cmake@2.8:', type='build')
depends_on('mpi')
depends_on('metis@5:')
depends_on('metis+int64', when='+int64')
depends_on('metis~int64', when='~int64')
patch('enable_external_metis.patch')
# bug fixes from PETSc developers

View file

@ -118,8 +118,8 @@ class Phist(CMakePackage):
depends_on('ghost', when='kernel_lib=ghost')
depends_on('trilinos+anasazi+belos+teuchos', when='+trilinos')
depends_on('parmetis ^metis+int64', when='+parmetis +int64')
depends_on('parmetis ^metis~int64', when='+parmetis ~int64')
depends_on('parmetis+int64', when='+parmetis+int64')
depends_on('parmetis~int64', when='+parmetis~int64')
# Fortran 2003 bindings were included in version 1.7, previously they
# required a separate package

View file

@ -51,7 +51,7 @@ class Warpx(MakefilePackage):
depends_on('openpmd-api +mpi', when='+openpmd +mpi')
depends_on('ascent', when='+ascent')
depends_on('ascent +cuda', when='+ascent backend=cuda')
depends_on('ascent +mpi ^conduit~hdf5', when='+ascent +mpi')
depends_on('ascent +mpi', when='+ascent +mpi')
resource(name='amrex',
git='https://github.com/AMReX-Codes/amrex.git',