Allow users to supply preferred variants via packages.yaml
This commit is contained in:
parent
07d4c6cf0b
commit
bd91dd9d6d
@ -254,13 +254,18 @@ def concretize_architecture(self, spec):
|
||||
|
||||
def concretize_variants(self, spec):
|
||||
"""If the spec already has variants filled in, return. Otherwise, add
|
||||
the default variants from the package specification.
|
||||
the user preferences from packages.yaml or the default variants from
|
||||
the package specification.
|
||||
"""
|
||||
changed = False
|
||||
preferred_variants = spack.pkgsort.spec_preferred_variants(spec.package_class.name)
|
||||
for name, variant in spec.package_class.variants.items():
|
||||
if name not in spec.variants:
|
||||
spec.variants[name] = spack.spec.VariantSpec(name, variant.default)
|
||||
changed = True
|
||||
if name in preferred_variants:
|
||||
spec.variants[name] = preferred_variants.get(name)
|
||||
else:
|
||||
spec.variants[name] = spack.spec.VariantSpec(name, variant.default)
|
||||
return changed
|
||||
|
||||
|
||||
|
@ -257,7 +257,13 @@
|
||||
'paths': {
|
||||
'type' : 'object',
|
||||
'default' : {},
|
||||
}
|
||||
},
|
||||
'variants': {
|
||||
'oneOf' : [
|
||||
{ 'type' : 'string' },
|
||||
{ 'type' : 'array',
|
||||
'items' : { 'type' : 'string' } },
|
||||
], },
|
||||
},},},},},},
|
||||
|
||||
'modules': {
|
||||
|
@ -158,6 +158,13 @@ def spec_has_preferred_provider(self, pkgname, provider_str):
|
||||
return bool(self._order_for_package(pkgname, 'providers',
|
||||
provider_str, False))
|
||||
|
||||
def spec_preferred_variants(self, pkgname):
|
||||
"""Return a VariantMap of preferred variants and their values"""
|
||||
variants = self.preferred.get(pkgname, {}).get('variants', '')
|
||||
if not isinstance(variants, basestring):
|
||||
variants = "".join(variants)
|
||||
return spack.spec.Spec(pkgname + variants).variants
|
||||
|
||||
def version_compare(self, pkgname, a, b):
|
||||
"""Return less-than-0, 0, or greater than 0 if version a of pkgname is
|
||||
respectively less-than, equal-to, or greater-than version b of
|
||||
|
Loading…
Reference in New Issue
Block a user