summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2013-02-13 19:40:19 -0800
committerZac Medico <zmedico@gentoo.org>2013-02-13 19:40:19 -0800
commit9ea0fe8aabca82b8e8f6d05b0cde417316b635cd (patch)
treed8ff09771958b152a81dea1559e355f4485d3b98
parent--complete-graph-if-new-ver: test slot change (diff)
downloadportage-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.py11
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: