When in --debug mode, make the depgraph call self.digraph.debug_print() to
authorZac Medico <zmedico@gentoo.org>
Fri, 12 Dec 2008 21:25:36 +0000 (21:25 -0000)
committerZac Medico <zmedico@gentoo.org>
Fri, 12 Dec 2008 21:25:36 +0000 (21:25 -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. (trunk r12185)

svn path=/main/branches/2.1.6/; revision=12220

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

index 9a4ad224c83f04eaef6a1993f83ff7411baf652c..559894bc68bdb29e8d10084fd8dc835cdd0afc4c 100644 (file)
@@ -6399,6 +6399,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 3a68ec2f95ea040bf67489f9280e628688456ffe..931947a66df7b85ac9db8469beed287b2d10aab0 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