summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTodd Gamblin <tgamblin@llnl.gov>2020-01-03 17:32:30 -0800
committerTodd Gamblin <tgamblin@llnl.gov>2020-11-17 10:04:13 -0800
commit71726a9b3392c3ca5f2dd8745d770dc3d0a238e6 (patch)
treeed3b9468c5c508e7cc094b0c34eee21a6447caec
parent309ae856ab8c894b4635a07efb31c7643df1e91f (diff)
downloadspack-71726a9b3392c3ca5f2dd8745d770dc3d0a238e6.tar.gz
spack-71726a9b3392c3ca5f2dd8745d770dc3d0a238e6.tar.bz2
spack-71726a9b3392c3ca5f2dd8745d770dc3d0a238e6.tar.xz
spack-71726a9b3392c3ca5f2dd8745d770dc3d0a238e6.zip
concretizer bugfix: require at least one value for multi-value variants
We didn't have a cardinality constraint for multi-valued variants, so the solver wasn't filling them in. - [x] add a requirement for at least one value for multi-valued variants
-rw-r--r--lib/spack/spack/solver/concretize.lp4
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/spack/spack/solver/concretize.lp b/lib/spack/spack/solver/concretize.lp
index 817c529082..6f5b584dfa 100644
--- a/lib/spack/spack/solver/concretize.lp
+++ b/lib/spack/spack/solver/concretize.lp
@@ -78,6 +78,10 @@ node(D) :- node(P), depends_on(P, D).
1 { variant_value(P, V, X) : variant_possible_value(P, V, X) } 1
:- node(P), variant(P, V), variant_single_value(P, V).
+% at least one variant value for multi-valued variants.
+1 { variant_value(P, V, X) : variant_possible_value(P, V, X) }
+ :- node(P), variant(P, V), not variant_single_value(P, V).
+
% if a variant is set to anything, it is considered 'set'.
variant_set(P, V) :- variant_set(P, V, _).