concretizer: handle version preferences from packages.yaml
This commit is contained in:
parent
9c23ed6484
commit
1b115e200b
@ -1031,6 +1031,17 @@ def preferred_targets(self, pkg_name):
|
|||||||
str(preferred.architecture.target), pkg_name, -10
|
str(preferred.architecture.target), pkg_name, -10
|
||||||
))
|
))
|
||||||
|
|
||||||
|
def preferred_versions(self, pkg_name):
|
||||||
|
packages_yaml = spack.config.get('packages')
|
||||||
|
versions = packages_yaml.get(pkg_name, {}).get('version', [])
|
||||||
|
if not versions:
|
||||||
|
return
|
||||||
|
|
||||||
|
for idx, version in enumerate(reversed(versions)):
|
||||||
|
self.gen.fact(
|
||||||
|
fn.preferred_version_declared(pkg_name, version, -(idx + 1))
|
||||||
|
)
|
||||||
|
|
||||||
def flag_defaults(self):
|
def flag_defaults(self):
|
||||||
self.gen.h2("Compiler flag defaults")
|
self.gen.h2("Compiler flag defaults")
|
||||||
|
|
||||||
@ -1404,10 +1415,12 @@ def setup(self, driver, specs):
|
|||||||
|
|
||||||
self.gen.h1('Package Constraints')
|
self.gen.h1('Package Constraints')
|
||||||
for pkg in sorted(pkgs):
|
for pkg in sorted(pkgs):
|
||||||
self.gen.h2('Package: %s' % pkg)
|
self.gen.h2('Package rules: %s' % pkg)
|
||||||
self.pkg_rules(pkg)
|
self.pkg_rules(pkg)
|
||||||
|
self.gen.h2('Package preferences: %s' % pkg)
|
||||||
self.preferred_variants(pkg)
|
self.preferred_variants(pkg)
|
||||||
self.preferred_targets(pkg)
|
self.preferred_targets(pkg)
|
||||||
|
self.preferred_versions(pkg)
|
||||||
|
|
||||||
self.gen.h1('Spec Constraints')
|
self.gen.h1('Spec Constraints')
|
||||||
for spec in sorted(specs):
|
for spec in sorted(specs):
|
||||||
|
@ -15,9 +15,14 @@ version_declared(Package, Version) :- version_declared(Package, Version, _).
|
|||||||
:- node(Package).
|
:- node(Package).
|
||||||
|
|
||||||
version_weight(Package, Weight)
|
version_weight(Package, Weight)
|
||||||
:- version(Package, Version), version_declared(Package, Version, Weight).
|
:- version(Package, Version), version_declared(Package, Version, Weight),
|
||||||
|
not preferred_version_declared(Package, Version, _).
|
||||||
|
|
||||||
|
version_weight(Package, Weight)
|
||||||
|
:- version(Package, Version), preferred_version_declared(Package, Version, Weight).
|
||||||
|
|
||||||
#defined version_conflict/2.
|
#defined version_conflict/2.
|
||||||
|
#defined preferred_version_declared/3.
|
||||||
|
|
||||||
%-----------------------------------------------------------------------------
|
%-----------------------------------------------------------------------------
|
||||||
% Dependency semantics
|
% Dependency semantics
|
||||||
@ -243,6 +248,8 @@ target_weight(Target, Package, Weight)
|
|||||||
not derive_target_from_parent(_, Package),
|
not derive_target_from_parent(_, Package),
|
||||||
not package_target_weight(Target, Package, _).
|
not package_target_weight(Target, Package, _).
|
||||||
|
|
||||||
|
% TODO: Need to account for the case of more than one parent
|
||||||
|
% TODO: each of which sets different targets
|
||||||
target_weight(Target, Dependency, Weight)
|
target_weight(Target, Dependency, Weight)
|
||||||
:- depends_on(Package, Dependency),
|
:- depends_on(Package, Dependency),
|
||||||
derive_target_from_parent(Package, Dependency),
|
derive_target_from_parent(Package, Dependency),
|
||||||
|
Loading…
Reference in New Issue
Block a user