From a6d433b937ee7d418289b23585a6d53343f1f14e Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Fri, 4 Dec 2020 16:27:03 +0100 Subject: concretizer: restrict maximizing variant values to MV variants (#20194) --- lib/spack/spack/solver/concretize.lp | 8 ++++++-- lib/spack/spack/test/concretize.py | 4 ++++ 2 files changed, 10 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/spack/spack/solver/concretize.lp b/lib/spack/spack/solver/concretize.lp index 2de7030ddf..acfed6f599 100644 --- a/lib/spack/spack/solver/concretize.lp +++ b/lib/spack/spack/solver/concretize.lp @@ -508,7 +508,9 @@ root(Dependency, 1) :- not root(Dependency), node(Dependency). % need to maximize their number below to ensure they're all set #maximize { 1@13,Package,Variant,Value - : variant_not_default(Package, Variant, Value, Weight), root(Package) + : variant_not_default(Package, Variant, Value, Weight), + not variant_single_value(Package, Variant), + root(Package) }. #minimize{ Weight@13,Provider @@ -531,7 +533,9 @@ root(Dependency, 1) :- not root(Dependency), node(Dependency). % need to maximize their number below to ensure they're all set #maximize { 1@8,Package,Variant,Value - : variant_not_default(Package, Variant, Value, Weight), not root(Package) + : variant_not_default(Package, Variant, Value, Weight), + not variant_single_value(Package, Variant), + not root(Package) }. % Try to maximize the number of compiler matches in the DAG, diff --git a/lib/spack/spack/test/concretize.py b/lib/spack/spack/test/concretize.py index fed0432f91..2e96eea4af 100644 --- a/lib/spack/spack/test/concretize.py +++ b/lib/spack/spack/test/concretize.py @@ -975,3 +975,7 @@ class TestConcretize(object): spec.concretize() assert ((uuidpatch, localpatch) == spec['libelf'].variants['patches'].value) + + def test_dont_select_version_that_brings_more_variants_in(self): + s = Spec('dep-with-variants-if-develop-root').concretized() + assert s['dep-with-variants-if-develop'].satisfies('@1.0') -- cgit v1.2.3-60-g2f50