summaryrefslogtreecommitdiffstats
path: root/pym/_emerge/resolver/circular_dependency.py
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2010-08-28 14:21:06 -0700
committerZac Medico <zmedico@gentoo.org>2010-08-28 14:21:06 -0700
commit3b05d2eb59106413a923bbee0bfff5429548f722 (patch)
tree1477e435fd40bbf0cf85ec04cb1ce20faff0fcb0 /pym/_emerge/resolver/circular_dependency.py
parent988416d6a172458d49a787f053b8e44a22830857 (diff)
downloadportage-3b05d2eb59106413a923bbee0bfff5429548f722.tar.gz
portage-3b05d2eb59106413a923bbee0bfff5429548f722.tar.bz2
portage-3b05d2eb59106413a923bbee0bfff5429548f722.zip
If there are circular dependencies, and circular_dependency_handler
doesn't have a message, eliminate root nodes before calling digraph.debug_print(). If --debug is enabled then do this even if circular_dependency_handler has a message.
Diffstat (limited to 'pym/_emerge/resolver/circular_dependency.py')
-rw-r--r--pym/_emerge/resolver/circular_dependency.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/pym/_emerge/resolver/circular_dependency.py b/pym/_emerge/resolver/circular_dependency.py
index dbb1adf49..0ecdbbe8c 100644
--- a/pym/_emerge/resolver/circular_dependency.py
+++ b/pym/_emerge/resolver/circular_dependency.py
@@ -244,3 +244,18 @@ class circular_dependency_handler(object):
final_solutions.setdefault(pkg, set()).add(solution)
return final_solutions, suggestions
+
+ def debug_print(self):
+ """
+ Create a copy of the digraph, prune all root nodes,
+ and call the debug_print() method.
+ """
+ graph = self.graph.copy()
+ while True:
+ root_nodes = graph.root_nodes(
+ ignore_priority=DepPrioritySatisfiedRange.ignore_medium_soft)
+ if not root_nodes:
+ break
+ graph.difference_update(root_nodes)
+
+ graph.debug_print()