concretizer: handle dependencies conditional on other dependencies
This commit is contained in:
parent
e7208b1598
commit
e226523aeb
@ -918,13 +918,12 @@ def package_dependencies_rules(self, pkg, tests):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
|
clauses = self.spec_traverse_clauses(named_cond)
|
||||||
|
|
||||||
self.gen.rule(
|
self.gen.rule(
|
||||||
fn.declared_dependency(
|
fn.declared_dependency(
|
||||||
dep.pkg.name, dep.spec.name, t
|
dep.pkg.name, dep.spec.name, t
|
||||||
),
|
), self.gen._and(*clauses)
|
||||||
self.gen._and(
|
|
||||||
*self.spec_clauses(named_cond, body=True)
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# add constraints on the dependency from dep spec.
|
# add constraints on the dependency from dep spec.
|
||||||
@ -945,11 +944,17 @@ def package_dependencies_rules(self, pkg, tests):
|
|||||||
clause,
|
clause,
|
||||||
self.gen._and(
|
self.gen._and(
|
||||||
fn.depends_on(dep.pkg.name, dep.spec.name),
|
fn.depends_on(dep.pkg.name, dep.spec.name),
|
||||||
*self.spec_clauses(named_cond, body=True)
|
*self.spec_traverse_clauses(named_cond)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
self.gen.newline()
|
self.gen.newline()
|
||||||
|
|
||||||
|
def spec_traverse_clauses(self, named_cond):
|
||||||
|
clauses = []
|
||||||
|
for d in named_cond.traverse():
|
||||||
|
clauses.extend(self.spec_clauses(d, body=True))
|
||||||
|
return clauses
|
||||||
|
|
||||||
def virtual_preferences(self, pkg_name, func):
|
def virtual_preferences(self, pkg_name, func):
|
||||||
"""Call func(vspec, provider, i) for each of pkg's provider prefs."""
|
"""Call func(vspec, provider, i) for each of pkg's provider prefs."""
|
||||||
config = spack.config.get("packages")
|
config = spack.config.get("packages")
|
||||||
|
Loading…
Reference in New Issue
Block a user