summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Script/__init__.py
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2002-12-17 14:01:28 (GMT)
committerSteven Knight <knight@baldmt.com>2002-12-17 14:01:28 (GMT)
commit72d46ff0afa7d688a2029a74b0a0084dcf439ba5 (patch)
tree82bd4d7ac5f2ad43b3624e4bd51755cf2bd85e4c /src/engine/SCons/Script/__init__.py
parent1f839d9933b456ba4ebb5098ce1f9ab01f398a94 (diff)
downloadSCons-72d46ff0afa7d688a2029a74b0a0084dcf439ba5.zip
SCons-72d46ff0afa7d688a2029a74b0a0084dcf439ba5.tar.gz
SCons-72d46ff0afa7d688a2029a74b0a0084dcf439ba5.tar.bz2
Refactor action execution so it's controlled by the interface-specific Taskmaster.Task class, not Node.build().
Diffstat (limited to 'src/engine/SCons/Script/__init__.py')
-rw-r--r--src/engine/SCons/Script/__init__.py32
1 files changed, 26 insertions, 6 deletions
diff --git a/src/engine/SCons/Script/__init__.py b/src/engine/SCons/Script/__init__.py
index ad1a641..add52e4 100644
--- a/src/engine/SCons/Script/__init__.py
+++ b/src/engine/SCons/Script/__init__.py
@@ -73,14 +73,34 @@ from SCons.Optik import OptionParser, SUPPRESS_HELP, OptionValueError
class BuildTask(SCons.Taskmaster.Task):
"""An SCons build task."""
def execute(self):
- t = self.targets[0]
- if t.get_state() == SCons.Node.up_to_date:
- if self.top and t.builder:
- display('scons: "%s" is up to date.' % str(self.targets[0]))
- else:
+ target = self.targets[0]
+ if target.get_state() == SCons.Node.up_to_date:
+ if self.top and target.builder:
+ display('scons: "%s" is up to date.' % str(target))
+ elif target.builder and not hasattr(target.builder, 'status'):
+ action_list = target.get_actions()
+ if not action_list:
+ return
+ env = target.generate_build_env()
if print_time:
start_time = time.time()
- self.targets[0].build()
+ try:
+ for action in action_list:
+ stat = action.execute(self.targets, target.sources, env)
+ if stat:
+ raise BuildError(node = target,
+ errstr = "Error %d" % stat)
+ except KeyboardInterrupt:
+ raise
+ except UserError:
+ raise
+ except BuildError:
+ raise
+ except:
+ raise BuildError(target, "Exception",
+ sys.exc_type,
+ sys.exc_value,
+ sys.exc_traceback)
if print_time:
finish_time = time.time()
global command_time