summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Taskmaster.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/SCons/Taskmaster.py')
-rw-r--r--src/engine/SCons/Taskmaster.py29
1 files changed, 20 insertions, 9 deletions
diff --git a/src/engine/SCons/Taskmaster.py b/src/engine/SCons/Taskmaster.py
index 043ce7d..eec50bf 100644
--- a/src/engine/SCons/Taskmaster.py
+++ b/src/engine/SCons/Taskmaster.py
@@ -29,13 +29,12 @@ Generic Taskmaster.
__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
-
-
+import copy
+import string
+import sys
import SCons.Node
-import string
import SCons.Errors
-import copy
class Task:
"""Default SCons build engine task.
@@ -71,12 +70,24 @@ class Task:
def execute(self):
"""Called to execute the task.
-
- This methods is called from multiple threads in
- a parallel build, so only do thread safe stuff here.
- Do thread unsafe stuff in prepare(), executed() or failed()."""
- if self.targets[0].get_state() != SCons.Node.up_to_date:
+
+ This method is called from multiple threads in a parallel build,
+ so only do thread safe stuff here. Do thread unsafe stuff in
+ prepare(), executed() or failed()."""
+ try:
self.targets[0].build()
+ except KeyboardInterrupt:
+ raise
+ except SCons.Errors.UserError:
+ raise
+ except SCons.Errors.BuildError:
+ raise
+ except:
+ raise SCons.Errors.BuildError(self.targets[0],
+ "Exception",
+ sys.exc_type,
+ sys.exc_value,
+ sys.exc_traceback)
def get_target(self):
"""Fetch the target being built or updated by this task.