summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Node/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/SCons/Node/__init__.py')
-rw-r--r--src/engine/SCons/Node/__init__.py52
1 files changed, 18 insertions, 34 deletions
diff --git a/src/engine/SCons/Node/__init__.py b/src/engine/SCons/Node/__init__.py
index 82dfd7e..ca6e8eb 100644
--- a/src/engine/SCons/Node/__init__.py
+++ b/src/engine/SCons/Node/__init__.py
@@ -46,13 +46,10 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
-import string
-import types
import copy
-import sys
-import SCons.Sig
+import types
-from SCons.Errors import BuildError, UserError
+import SCons.Sig
import SCons.Util
# Node states
@@ -110,38 +107,25 @@ class Node:
def generate_build_env(self):
return self.env.Override(self.overrides)
- def get_actions(self):
- """Fetch the action list to build."""
- return self.builder.get_actions()
-
def build(self):
- """Actually build the node. Return the status from the build."""
- # This method is called from multiple threads in a parallel build,
- # so only do thread safe stuff here. Do thread unsafe stuff in built().
+ """Actually build the node.
+
+ This method is called from multiple threads in a parallel build,
+ so only do thread safe stuff here. Do thread unsafe stuff in
+ built().
+ """
if not self.builder:
return None
- try:
- # If this Builder instance has already been called,
- # there will already be an associated status.
- stat = self.builder.status
- except AttributeError:
- try:
- stat = self.builder.execute(self, self.sources, self.generate_build_env())
- except KeyboardInterrupt:
- raise
- except UserError:
- raise
- except BuildError:
- raise
- except:
- raise BuildError(self, "Exception",
- sys.exc_type,
- sys.exc_value,
- sys.exc_traceback)
- if stat:
- raise BuildError(node = self, errstr = "Error %d" % stat)
-
- return stat
+ action_list = self.builder.get_actions()
+ if not action_list:
+ return
+ targets = self.builder.targets(self)
+ env = self.generate_build_env()
+ for action in action_list:
+ stat = action.execute(targets, self.sources, env)
+ if stat:
+ raise SCons.Errors.BuildError(node = self,
+ errstr = "Error %d" % stat)
def built(self):
"""Called just after this node is sucessfully built."""