From 9ea0fe8aabca82b8e8f6d05b0cde417316b635cd Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Wed, 13 Feb 2013 19:40:19 -0800 Subject: [PATCH] _slot_operator_update_probe: handle slot conflict The "insignificant change" detection from commit 0240b8b754ab5f642c50c863d4bec1dc3636ba29 is only valid when we are not trying to resolve a slot conflict (see bug #457142). --- pym/_emerge/depgraph.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py index 085e6cbe5..e0ea895a7 100644 --- a/pym/_emerge/depgraph.py +++ b/pym/_emerge/depgraph.py @@ -1028,7 +1028,7 @@ class depgraph(object): dep = Dependency(atom=atom, child=other_pkg, parent=parent, root=pkg.root) - if self._slot_operator_update_probe(dep): + if self._slot_operator_update_probe(dep, slot_conflict=True): self._slot_operator_update_backtrack(dep) found_update = True @@ -1154,7 +1154,8 @@ class depgraph(object): self._dynamic_config._need_restart = True - def _slot_operator_update_probe(self, dep, new_child_slot=False): + def _slot_operator_update_probe(self, dep, new_child_slot=False, + slot_conflict=False): """ slot/sub-slot := operators tend to prevent updates from getting pulled in, since installed packages pull in packages with the slot/sub-slot that they @@ -1227,7 +1228,8 @@ class depgraph(object): continue insignificant = False - if selective and \ + if not slot_conflict and \ + selective and \ dep.parent.installed and \ dep.child.installed and \ dep.parent.cpv == replacement_parent.cpv and \ @@ -1235,7 +1237,8 @@ class depgraph(object): # Then can happen if the child's sub-slot changed # without a revision bump. The sub-slot change is # considered insignificant until one of its parent - # packages needs to be rebuilt. + # packages needs to be rebuilt (which may trigger a + # slot conflict). insignificant = True if debug: -- 2.26.2