From a2662ce3d7256ba3800d724eb847dc579c512b69 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Mon, 19 Feb 2007 00:45:57 +0000 Subject: [PATCH] For bug #166564, make a circular dependency panic more user friendly by displaying the USE flags that are enabled on nodes that are part of dependency cycles and display a note hinting that circular dependencies can often be avoided by temporarily disabling USE flags. svn path=/main/trunk/; revision=6006 --- pym/emerge/__init__.py | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/pym/emerge/__init__.py b/pym/emerge/__init__.py index 002e7f9dd..4db666700 100644 --- a/pym/emerge/__init__.py +++ b/pym/emerge/__init__.py @@ -2076,14 +2076,10 @@ class depgraph: selected_nodes = [blocker_deps.pop()] if not selected_nodes: - if reversed: - """The circular deps ouput should have less noise when - altlist is not in reversed mode.""" - self.altlist() - print "!!! Error: circular dependencies:" - print - # Reduce the noise level to a minimum via elimination of root - # nodes. + # No leaf nodes are available, so we have a circular + # dependency panic situation. Reduce the noise level to a + # minimum via repeated elimination of root nodes since they + # have no parents and thus can not be part of a cycle. while True: root_nodes = mygraph.root_nodes( ignore_priority=DepPriority.SOFT) @@ -2091,7 +2087,18 @@ class depgraph: break for node in root_nodes: mygraph.remove(node) + # Display the USE flags that are enabled on nodes that are part + # of dependency cycles in case that helps the user decide to + # disable some of them. + self.myopts.pop("--quiet", None) + self.myopts.pop("--verbose", None) + self.display([list(node) for node in mygraph.order]) + print "!!! Error: circular dependencies:" + print mygraph.debug_print() + print + print "!!! Note that circular dependencies can often be avoided by temporarily" + print "!!! disabling USE flags that trigger optional dependencies." sys.exit(1) for node in selected_nodes: -- 2.26.2