diff options
| author | Steven Knight <knight@baldmt.com> | 2002-12-17 14:01:28 (GMT) |
|---|---|---|
| committer | Steven Knight <knight@baldmt.com> | 2002-12-17 14:01:28 (GMT) |
| commit | 72d46ff0afa7d688a2029a74b0a0084dcf439ba5 (patch) | |
| tree | 82bd4d7ac5f2ad43b3624e4bd51755cf2bd85e4c /src/engine/SCons/Script | |
| parent | 1f839d9933b456ba4ebb5098ce1f9ab01f398a94 (diff) | |
| download | SCons-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')
| -rw-r--r-- | src/engine/SCons/Script/__init__.py | 32 |
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 |
