summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Action.py
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2004-09-15 01:19:55 (GMT)
committerSteven Knight <knight@baldmt.com>2004-09-15 01:19:55 (GMT)
commit7fef06f597626b9ee3faa0aa716819258e583812 (patch)
treec43c6b210684e12eb7c33ddc82ef5325be21feb4 /src/engine/SCons/Action.py
parentdecb5aded9c3103e52a31cd75fed2391e7bf29c5 (diff)
downloadSCons-7fef06f597626b9ee3faa0aa716819258e583812.zip
SCons-7fef06f597626b9ee3faa0aa716819258e583812.tar.gz
SCons-7fef06f597626b9ee3faa0aa716819258e583812.tar.bz2
Handle exceptions in FunctionActions. (Steve Christensen)
Diffstat (limited to 'src/engine/SCons/Action.py')
-rw-r--r--src/engine/SCons/Action.py7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/engine/SCons/Action.py b/src/engine/SCons/Action.py
index 63d8c98..e110d60 100644
--- a/src/engine/SCons/Action.py
+++ b/src/engine/SCons/Action.py
@@ -497,7 +497,12 @@ class FunctionAction(ActionBase):
def execute(self, target, source, env):
rsources = map(rfile, source)
- return self.execfunction(target=target, source=rsources, env=env)
+ try:
+ result = self.execfunction(target=target, source=rsources, env=env)
+ except EnvironmentError, e:
+ # If an IOError/OSError happens, raise a BuildError.
+ raise SCons.Errors.BuildError(node=target, errstr=e.strerror)
+ return result
def get_contents(self, target, source, env, dict=None):
"""Return the signature contents of this callable action.