From 7241a58f0fa75a8d767149ca68c4d9bd4014d9e2 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Sat, 7 Nov 2009 01:10:58 +0000 Subject: 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 --- pym/_emerge/depgraph.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py index 70541417a..0537f9cfe 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]) -- cgit v1.2.3-1-g7c22