summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/spack/spack/solver/asp.py21
1 files changed, 11 insertions, 10 deletions
diff --git a/lib/spack/spack/solver/asp.py b/lib/spack/spack/solver/asp.py
index 975dbfcc91..01536f267f 100644
--- a/lib/spack/spack/solver/asp.py
+++ b/lib/spack/spack/solver/asp.py
@@ -966,16 +966,17 @@ class SpackSolverSetup(object):
if value == '*':
continue
- # validate variant value
- reserved_names = spack.directives.reserved_names
- if not spec.virtual and vname not in reserved_names:
- try:
- variant_def = spec.package.variants[vname]
- except KeyError:
- msg = 'variant "{0}" not found in package "{1}"'
- raise RuntimeError(msg.format(vname, spec.name))
- else:
- variant_def.validate_or_raise(variant, spec.package)
+ # validate variant value only if spec not concrete
+ if not spec.concrete:
+ reserved_names = spack.directives.reserved_names
+ if not spec.virtual and vname not in reserved_names:
+ try:
+ variant_def = spec.package.variants[vname]
+ except KeyError:
+ msg = 'variant "{0}" not found in package "{1}"'
+ raise RuntimeError(msg.format(vname, spec.name))
+ else:
+ variant_def.validate_or_raise(variant, spec.package)
clauses.append(f.variant_value(spec.name, vname, value))