summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2002-04-11 19:13:45 (GMT)
committerSteven Knight <knight@baldmt.com>2002-04-11 19:13:45 (GMT)
commit651aa3558b6192f7eb3f77c8f2102c1e0e824707 (patch)
tree2804c3ec78c1d48080fe83dbe3d766c63a2926fa /src
parent0bf9bbc298b57b985bb84f8c60bbc70eca71bbaa (diff)
downloadSCons-651aa3558b6192f7eb3f77c8f2102c1e0e824707.zip
SCons-651aa3558b6192f7eb3f77c8f2102c1e0e824707.tar.gz
SCons-651aa3558b6192f7eb3f77c8f2102c1e0e824707.tar.bz2
Make .sconsign files get written even if the build fails or is terminated. (Anthony Roach)
Diffstat (limited to 'src')
-rw-r--r--src/CHANGES.txt3
-rw-r--r--src/engine/SCons/Node/__init__.py2
-rw-r--r--src/engine/SCons/Script/__init__.py8
-rw-r--r--src/engine/SCons/Taskmaster.py1
4 files changed, 10 insertions, 4 deletions
diff --git a/src/CHANGES.txt b/src/CHANGES.txt
index f7de1c8..2207f3a 100644
--- a/src/CHANGES.txt
+++ b/src/CHANGES.txt
@@ -46,6 +46,9 @@ RELEASE 0.07 -
- Added $SOURCE variable as a synonym for $SOURCES[0].
+ - Write out .sconsign files on error or interrupt so intermediate
+ build results are saved.
+
RELEASE 0.06 - Thu, 28 Mar 2002 01:24:29 -0600
diff --git a/src/engine/SCons/Node/__init__.py b/src/engine/SCons/Node/__init__.py
index cbaed7b..c8d5b2c 100644
--- a/src/engine/SCons/Node/__init__.py
+++ b/src/engine/SCons/Node/__init__.py
@@ -114,6 +114,8 @@ class Node:
def built(self):
"""Called just after this node is sucessfully built."""
+ self.store_bsig()
+
# Clear out the implicit dependency caches:
# XXX this really should somehow be made more general and put
# under the control of the scanners.
diff --git a/src/engine/SCons/Script/__init__.py b/src/engine/SCons/Script/__init__.py
index 308552d..813c363 100644
--- a/src/engine/SCons/Script/__init__.py
+++ b/src/engine/SCons/Script/__init__.py
@@ -827,10 +827,12 @@ def _main():
taskmaster = SCons.Taskmaster.Taskmaster(nodes, task_class, calc)
jobs = SCons.Job.Jobs(num_jobs, taskmaster)
- jobs.start()
- jobs.wait()
- SCons.Sig.write()
+ try:
+ jobs.start()
+ jobs.wait()
+ finally:
+ SCons.Sig.write()
def main():
try:
diff --git a/src/engine/SCons/Taskmaster.py b/src/engine/SCons/Taskmaster.py
index 7985b2e..3fe96da 100644
--- a/src/engine/SCons/Taskmaster.py
+++ b/src/engine/SCons/Taskmaster.py
@@ -90,7 +90,6 @@ class Task:
if self.targets[0].get_state() == SCons.Node.executing:
self.set_tstates(SCons.Node.executed)
for t in self.targets:
- t.store_bsig()
t.built()
self.tm.executed(self.node)