concretizer: don't optimize emitting version_satisfies() (#20128)

When all versions were allowed a version_satisfies rule was not emitted,
and this caused conditional directives to fail.
This commit is contained in:
Andrew W Elble 2020-12-02 03:53:53 -05:00 committed by Tamara Dahlgren
parent 24fb43cc43
commit 598c25b434
2 changed files with 5 additions and 4 deletions

View File

@ -1395,10 +1395,6 @@ def define_version_constraints(self):
if exact_match:
allowed_versions = exact_match
# don't bother restricting anything if all versions are allowed
if len(allowed_versions) == len(self.possible_versions[pkg_name]):
continue
predicates = [fn.version(pkg_name, v) for v in allowed_versions]
# version_satisfies(pkg, constraint) is true if and only if a

View File

@ -501,6 +501,11 @@ def test_conflicts_in_spec(self, conflict_spec):
with pytest.raises(spack.error.SpackError):
s.concretize()
def test_conflict_in_all_directives_true(self):
s = Spec('when-directives-true')
with pytest.raises(spack.error.SpackError):
s.concretize()
@pytest.mark.parametrize('spec_str', [
'conflict@10.0%clang+foo'
])