diff options
author | 2013-02-13 19:40:19 -0800 | |
---|---|---|
committer | 2013-02-13 19:40:19 -0800 | |
commit | 9ea0fe8aabca82b8e8f6d05b0cde417316b635cd (patch) | |
tree | d8ff09771958b152a81dea1559e355f4485d3b98 | |
parent | --complete-graph-if-new-ver: test slot change (diff) | |
download | portage-9ea0fe8aabca82b8e8f6d05b0cde417316b635cd.tar.gz portage-9ea0fe8aabca82b8e8f6d05b0cde417316b635cd.tar.bz2 portage-9ea0fe8aabca82b8e8f6d05b0cde417316b635cd.zip |
_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).
-rw-r--r-- | pym/_emerge/depgraph.py | 11 |
1 files 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: |