diff options
-rw-r--r-- | pym/_emerge/__init__.py | 15 |
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") |