summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--etc/TestSCons.py2
-rw-r--r--src/CHANGES.txt3
-rw-r--r--src/engine/SCons/Script/__init__.py1
-rw-r--r--test/sconsign.py4
4 files changed, 7 insertions, 3 deletions
diff --git a/etc/TestSCons.py b/etc/TestSCons.py
index c97fd48..4b392d4 100644
--- a/etc/TestSCons.py
+++ b/etc/TestSCons.py
@@ -34,7 +34,7 @@ if os.name == 'posix':
def _failed(self, status = 0):
if self.status is None:
return None
- if os.WIFSIGNALED(status):
+ if os.WIFSIGNALED(self.status):
return None
return _status(self) != status
def _status(self):
diff --git a/src/CHANGES.txt b/src/CHANGES.txt
index b9c6324..7cb4eb9 100644
--- a/src/CHANGES.txt
+++ b/src/CHANGES.txt
@@ -28,6 +28,9 @@ RELEASE 0.10 - XXX
- Don't create duplicate source files in a BuildDir when the -n
option is used.
+ - Fix SCons not exiting with the appropriate status on build errors
+ (and probably in other situations).
+
From Steve Leblanc:
- Add a Clean() method to support removing user-specified targets
diff --git a/src/engine/SCons/Script/__init__.py b/src/engine/SCons/Script/__init__.py
index 093b82c..93f4795 100644
--- a/src/engine/SCons/Script/__init__.py
+++ b/src/engine/SCons/Script/__init__.py
@@ -88,6 +88,7 @@ class BuildTask(SCons.Taskmaster.Task):
print "Command execution time: %f seconds"%(finish_time-start_time)
def do_failed(self):
+ global exit_status
if ignore_errors:
SCons.Taskmaster.Task.executed(self)
elif keep_going_on_error:
diff --git a/test/sconsign.py b/test/sconsign.py
index 6d88f79..3841ff5 100644
--- a/test/sconsign.py
+++ b/test/sconsign.py
@@ -90,10 +90,10 @@ scons: warning: Ignoring corrupt .sconsign file: sub1..sconsign
stdout = test.wrap_stdout('build1\("sub1/foo.out", "foo.in"\)\n')
test.write(sub1__sconsign, 'not:a:sconsign:file')
-test.run(arguments = '.', stderr=stderr, stdout=stdout, status=2)
+test.run(arguments = '.', stderr=stderr, stdout=stdout)
test.write(sub1__sconsign, '\0\0\0\0\0\0\0\0\0\0\0\0\0\0')
-test.run(arguments = '.', stderr=stderr, stdout=stdout, status=2)
+test.run(arguments = '.', stderr=stderr, stdout=stdout)
test.pass_test()