When in --debug mode, make the depgraph call self.digraph.debug_print() to
authorZac Medico <zmedico@gentoo.org>
Tue, 9 Dec 2008 17:29:07 +0000 (17:29 -0000)
committerZac Medico <zmedico@gentoo.org>
Tue, 9 Dec 2008 17:29:07 +0000 (17:29 -0000)
display the final digraph state. This should help when troubleshooting
problems with blockers that don't resolve automatically, by making it easier
to see what pulled in unwanted packages.

svn path=/main/trunk/; revision=12185

pym/_emerge/__init__.py
pym/portage/__init__.py

index c9b7113af3ebeab1dd9b84dcc9091e63c8002376..fc320ad7516373eb89b874332525a722454974dc 100644 (file)
@@ -6415,6 +6415,12 @@ class depgraph(object):
                        self._process_slot_conflicts()
 
        def _serialize_tasks(self):
+
+               if "--debug" in self.myopts:
+                       writemsg("\ndigraph:\n\n", noiselevel=-1)
+                       self.digraph.debug_print()
+                       writemsg("\n", noiselevel=-1)
+
                scheduler_graph = self.digraph.copy()
                mygraph=self.digraph.copy()
                # Prune "nomerge" root nodes if nothing depends on them, since
index 2a559f3af56a5ba9cdd545de73fc4cc2009d87ab..59ddfd5d89103ddc6754e1fa4606b55860144005 100644 (file)
@@ -536,15 +536,17 @@ class digraph(object):
                        len(self.order)
 
        def debug_print(self):
+               def output(s):
+                       writemsg(s, noiselevel=-1)
                for node in self.nodes:
-                       print node,
+                       output("%s " % (node,))
                        if self.nodes[node][0]:
-                               print "depends on"
+                               output("depends on\n")
                        else:
-                               print "(no children)"
+                               output("(no children)\n")
                        for child in self.nodes[node][0]:
-                               print "  ",child,
-                               print "(%s)" % self.nodes[node][0][child]
+                               output("  %s (%s)\n" % \
+                                       (child, self.nodes[node][0][child],))
 
 #parse /etc/env.d and generate /etc/profile.env