bugfix: spack stacks mixed dependency and non-dep constraints (#12315)

Spack stacks drop invalid dependencies applied to packages by a
spec_list matrix operation

Without this fix, Spack would raise an error if orthogonal dependency
constraints and non-dependency constraints were applied to the same
package by a matrix and the dependency constraint was invalid for
that package. This is an error, fixed by this PR.

An example failing configuration:

spack:
  definitions:
  - packages: [libelf, hdf5+mpi]
  - compilers: ['%gcc']
  - mpis: [^openmpi]

  specs:
  - matrix:
    - $packages
    - $compilers
    - $mpis
This commit is contained in:
Greg Becker 2019-08-07 18:34:41 -07:00 committed by Peter Scheibel
parent a791234676
commit 36fbd6cf4c

View file

@ -1346,7 +1346,7 @@ def _concretize_from_constraints(spec_constraints):
for d in invalid_msg.split()
if d != 'or']
invalid_deps = [c for c in spec_constraints
if any(c.satisfies(invd)
if any(c.satisfies(invd, strict=True)
for invd in invalid_deps_string)]
if len(invalid_deps) != len(invalid_deps_string):
raise e