summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-11-06 03:52:36 +0000
committerZac Medico <zmedico@gentoo.org>2009-11-06 03:52:36 +0000
commitcbeaa12f06d3dd62fea17cf95092c4beb9338756 (patch)
tree6cd8aa4c1912c1827bb9b00cf1bed3d7b54a5ac8
parent883f1ba5971f6b62b66ac3e06caff47c10b0b786 (diff)
downloadportage-cbeaa12f06d3dd62fea17cf95092c4beb9338756.tar.gz
portage-cbeaa12f06d3dd62fea17cf95092c4beb9338756.tar.bz2
portage-cbeaa12f06d3dd62fea17cf95092c4beb9338756.zip
Bug #291142 - Fix some cases when a 'missed update' message might not be
displayed. svn path=/main/trunk/; revision=14780
-rw-r--r--pym/_emerge/depgraph.py15
1 files changed, 14 insertions, 1 deletions
diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py
index b78726258..2ff345da6 100644
--- a/pym/_emerge/depgraph.py
+++ b/pym/_emerge/depgraph.py
@@ -940,7 +940,9 @@ class depgraph(object):
parent_atoms = \
self._dynamic_config._parent_atoms.get(pkg, set())
if parent_atoms:
- parent_atoms = self._dynamic_config._slot_conflict_parent_atoms.intersection(parent_atoms)
+ conflict_atoms = self._dynamic_config._slot_conflict_parent_atoms.intersection(parent_atoms)
+ if conflict_atoms:
+ parent_atoms = conflict_atoms
if pkg >= existing_node:
# We only care about the parent atoms
# when they trigger a downgrade.
@@ -1337,7 +1339,18 @@ class depgraph(object):
if eliminate_pkg:
atom_pkg_graph.remove(pkg)
+ # Yield < and <= atoms first, since those are more likely to
+ # cause a slot conflicts, and we want those atoms to be displayed
+ # in the resulting slot conflict message (see bug #291142).
+ less_than = []
+ not_less_than = []
for atom in cp_atoms:
+ if atom.operator in ('<', '<='):
+ less_than.append(atom)
+ else:
+ not_less_than.append(atom)
+
+ for atom in chain(less_than, not_less_than):
child_pkgs = atom_pkg_graph.child_nodes(atom)
yield (atom, child_pkgs[0])