From cbeaa12f06d3dd62fea17cf95092c4beb9338756 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Fri, 6 Nov 2009 03:52:36 +0000 Subject: Bug #291142 - Fix some cases when a 'missed update' message might not be displayed. svn path=/main/trunk/; revision=14780 --- pym/_emerge/depgraph.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'pym') 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]) -- cgit v1.2.3-1-g7c22