Fix race condition with --debug=tree and -j
authorstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Sun, 30 Dec 2001 00:21:33 +0000 (00:21 +0000)
committerstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Sun, 30 Dec 2001 00:21:33 +0000 (00:21 +0000)
git-svn-id: http://scons.tigris.org/svn/scons/trunk@180 fdb21ef1-2011-0410-befe-b5e4ea1792b1

src/engine/SCons/Script/__init__.py

index 3b5a79d1f3d17ed58363b7df1ab4feed6b6add9b..9b5430fad841d36034bd36e2dd25ce0edc9605ca 100644 (file)
@@ -71,19 +71,22 @@ class BuildTask(SCons.Taskmaster.Task):
         if self.target.get_state() == SCons.Node.up_to_date:
             if self.top:
                 print 'scons: "%s" is up to date.' % str(self.target)
-                if print_tree:
-                    print
-                    print SCons.Util.render_tree(self.target, get_children)
         else:
             try:
                 self.target.build()
-                if self.top and print_tree:
-                    print
-                    print SCons.Util.render_tree(self.target, get_children)
             except BuildError, e:
                 sys.stderr.write("scons: *** [%s] Error %s\n" % (e.node, str(e.stat)))
                 raise
 
+    def executed(self):
+        SCons.Taskmaster.Task.executed(self)
+        # print the tree here instead of in execute() because
+        # this method is serialized, but execute isn't:
+        if print_tree and self.top:
+            print
+            print SCons.Util.render_tree(self.target, get_children)
+
+
     def failed(self):
         global ignore_errors
         if ignore_errors: