From a42f340d375cbc781e7a113f3b3afa2e4e3124ed Mon Sep 17 00:00:00 2001
From: Michael Kuhn <suraia@ikkoku.de>
Date: Fri, 30 Dec 2016 23:11:39 +0100
Subject: [PATCH] Allow setting default variants (#2644)

---
 lib/spack/spack/preferred_packages.py | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/lib/spack/spack/preferred_packages.py b/lib/spack/spack/preferred_packages.py
index 08f9c3cfa8..dc6cb3e921 100644
--- a/lib/spack/spack/preferred_packages.py
+++ b/lib/spack/spack/preferred_packages.py
@@ -154,10 +154,17 @@ def spec_has_preferred_provider(self, pkgname, provider_str):
 
     def spec_preferred_variants(self, pkgname):
         """Return a VariantMap of preferred variants and their values"""
-        variants = self.preferred.get(pkgname, {}).get('variants', '')
+        for pkg in (pkgname, 'all'):
+            variants = self.preferred.get(pkg, {}).get('variants', '')
+            if variants:
+                break
         if not isinstance(variants, basestring):
             variants = " ".join(variants)
-        return spack.spec.Spec("%s %s" % (pkgname, variants)).variants
+        pkg = spack.repo.get(pkgname)
+        spec = spack.spec.Spec("%s %s" % (pkgname, variants))
+        # Only return variants that are actually supported by the package
+        return dict((name, variant) for name, variant in spec.variants.items()
+                    if name in pkg.variants)
 
     def version_compare(self, pkgname, a, b):
         """Return less-than-0, 0, or greater than 0 if version a of pkgname is
-- 
GitLab