summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-11-07 01:10:58 +0000
committerZac Medico <zmedico@gentoo.org>2009-11-07 01:10:58 +0000
commit7241a58f0fa75a8d767149ca68c4d9bd4014d9e2 (patch)
treef0ffe1c40d8383a17d78736f7a8db038079fc992
parentUse writemsg instead of print, to send debug messages to stderr. (trunk r14779) (diff)
downloadportage-multirepo-7241a58f0fa75a8d767149ca68c4d9bd4014d9e2.tar.gz
portage-multirepo-7241a58f0fa75a8d767149ca68c4d9bd4014d9e2.tar.bz2
portage-multirepo-7241a58f0fa75a8d767149ca68c4d9bd4014d9e2.zip
Bug #291142 - Fix some cases when a 'missed update' message might not be
displayed. (trunk r14780) svn path=/main/branches/2.1.7/; revision=14793
-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 70541417..0537f9cf 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])