summaryrefslogtreecommitdiffstats
path: root/pym
diff options
context:
space:
mode:
Diffstat (limited to 'pym')
-rw-r--r--pym/_emerge/__init__.py15
1 files changed, 12 insertions, 3 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py
index ba0c8a165..e3f8df792 100644
--- a/pym/_emerge/__init__.py
+++ b/pym/_emerge/__init__.py
@@ -1621,16 +1621,25 @@ class depgraph(object):
for parent in parents:
if isinstance(parent, DependencyArg):
pruned_list.append(parent)
- if len(pruned_list) == max_parents:
- break
+ # Prefer Packages instances that themselves have been
+ # pulled into collision slots.
+ for parent in parents:
+ if isinstance(parent, Package) and \
+ (parent.slot_atom, parent.root) \
+ in self._slot_collision_info:
+ pruned_list.append(parent)
for parent in parents:
if not isinstance(parent, DependencyArg):
pruned_list.append(parent)
- if len(pruned_list) == max_parents:
+ if len(pruned_list) >= max_parents:
break
parents = pruned_list
msg.append(" pulled in by\n")
+ shown_parents = set()
for parent in parents:
+ if parent in shown_parents:
+ continue
+ shown_parents.add(parent)
msg.append(2*indent)
msg.append(str(parent))
msg.append("\n")