concretizer: impose()
for concrete specs should use body facts.
The concretizer doesn't get a say in whether constraints from concrete specs are imposed, so use body facts for them.
This commit is contained in:
parent
3866b3e7d3
commit
9c70d51a4f
1 changed files with 3 additions and 3 deletions
|
@ -821,9 +821,9 @@ def condition(self, required_spec, imposed_spec=None, name=None):
|
||||||
|
|
||||||
return condition_id
|
return condition_id
|
||||||
|
|
||||||
def impose(self, condition_id, imposed_spec, node=True, name=None):
|
def impose(self, condition_id, imposed_spec, node=True, name=None, body=False):
|
||||||
imposed_constraints = self.spec_clauses(
|
imposed_constraints = self.spec_clauses(
|
||||||
imposed_spec, body=False, required_from=name)
|
imposed_spec, body=body, required_from=name)
|
||||||
for pred in imposed_constraints:
|
for pred in imposed_constraints:
|
||||||
# imposed "node"-like conditions are no-ops
|
# imposed "node"-like conditions are no-ops
|
||||||
if not node and pred.name in ("node", "virtual_node"):
|
if not node and pred.name in ("node", "virtual_node"):
|
||||||
|
@ -1505,7 +1505,7 @@ def define_installed_packages(self, possible):
|
||||||
self.gen.fact(fn.installed_hash(spec.name, h))
|
self.gen.fact(fn.installed_hash(spec.name, h))
|
||||||
|
|
||||||
# this describes what constraints it imposes on the solve
|
# this describes what constraints it imposes on the solve
|
||||||
self.impose(h, spec)
|
self.impose(h, spec, body=True)
|
||||||
self.gen.newline()
|
self.gen.newline()
|
||||||
|
|
||||||
def setup(self, driver, specs, tests=False, reuse=False):
|
def setup(self, driver, specs, tests=False, reuse=False):
|
||||||
|
|
Loading…
Reference in a new issue