diff options
-rw-r--r-- | pym/_emerge/depgraph.py | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py index dff0d9a79..038ae6fca 100644 --- a/pym/_emerge/depgraph.py +++ b/pym/_emerge/depgraph.py @@ -3775,16 +3775,12 @@ class depgraph(object): # it serves as an indicator that blocking packages # will be temporarily installed simultaneously. for blocker in solved_blockers: - blocker.satisfied = True retlist.append(blocker) unsolvable_blockers = set(self._dynamic_config._unsolvable_blockers.leaf_nodes()) for node in myblocker_uninstalls.root_nodes(): unsolvable_blockers.add(node) - for blocker in unsolvable_blockers: - retlist.append(blocker) - # If any Uninstall tasks need to be executed in order # to avoid a conflict, complete the graph with any # dependencies that may have been initially @@ -3796,6 +3792,16 @@ class depgraph(object): self._dynamic_config.myparams["complete"] = True raise self._serialize_tasks_retry("") + # Set satisfied state on blockers, but not before the + # above retry path, since we don't want to modify the + # state in that case. + for node in retlist: + if isinstance(node, Blocker): + node.satisfied = True + + for blocker in unsolvable_blockers: + retlist.append(blocker) + if unsolvable_blockers and \ not self._accept_blocker_conflicts(): self._dynamic_config._unsatisfied_blockers_for_display = unsolvable_blockers |