diff --git a/lib/spack/spack/solver/asp.py b/lib/spack/spack/solver/asp.py index 0e60e94d7de..cccadf40fea 100644 --- a/lib/spack/spack/solver/asp.py +++ b/lib/spack/spack/solver/asp.py @@ -614,7 +614,7 @@ def multiple_values_error(self, attribute, pkg): def no_value_error(self, attribute, pkg): return f'Cannot select a single "{attribute}" for package "{pkg}"' - def _get_cause_tree(self, cause, conditions, condition_causes, literals, indent=""): + def _get_cause_tree(self, cause, conditions, condition_causes, literals, indent=" "): parents = [c for e, c in condition_causes if e == cause] local = "required because %s " % conditions[cause] @@ -626,9 +626,9 @@ def _get_cause_tree(self, cause, conditions, condition_causes, literals, indent= ) ] - def get_cause_tree(self, result, best_model, cause): - conditions = dict(extract_args(best_model, "condition")) - condition_causes = list(extract_args(best_model, "condition_cause")) + def get_cause_tree(self, cause): + conditions = dict(extract_args(self.model, "condition")) + condition_causes = list(extract_args(self.model, "condition_cause")) return self._get_cause_tree(cause, conditions, condition_causes, []) def handle_error(self, msg, *args): diff --git a/lib/spack/spack/solver/causation.lp b/lib/spack/spack/solver/causation.lp index 9324f0d4587..626bfcf8f03 100644 --- a/lib/spack/spack/solver/causation.lp +++ b/lib/spack/spack/solver/causation.lp @@ -64,9 +64,9 @@ error(0, "Version '{0}' of {1} does not satisfy '@{2}'", Version, Virtual, Const % More specific error message if the version cannot satisfy some constraint % Otherwise covered by `no_version_error` and `versions_conflict_error`. -error(0, "No valid version for '{0}' satisfies '@{1}'", Package, Constraint, startcauses, ConstraintCause) +error(0, "Cannot satisfy '{0}@{1}'", Package, Constraint, startcauses, ConstraintCause) :- attr("node_version_satisfies", Package, Constraint), imposed_constraint(ConstraintCause, "node_version_satisfies", Package, Constraint), condition_holds(ConstraintCause), - C = #count{ Version : attr("version", Package, Version), version_satisfies(Package, Constraint, Version)}, - C < 1. + attr("version", Package, Version), + not version_satisfies(Package, Constraint, Version).