summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2009-01-29 15:07:32 (GMT)
committerSteven Knight <knight@baldmt.com>2009-01-29 15:07:32 (GMT)
commitf2124c8cac9879ed1631ebafdbd85fd4b5a307a0 (patch)
treefb8db1cd1b4ddbd11c2d9282be3ef5702ebe6821 /src
parent5d502b93b7554b0b16d9ca70bb1a7a74ac012a89 (diff)
downloadSCons-f2124c8cac9879ed1631ebafdbd85fd4b5a307a0.zip
SCons-f2124c8cac9879ed1631ebafdbd85fd4b5a307a0.tar.gz
SCons-f2124c8cac9879ed1631ebafdbd85fd4b5a307a0.tar.bz2
Fix use of $CHANGED_SOURCES with the --config=force option so that
.sconsign build state stays consistent.
Diffstat (limited to 'src')
-rw-r--r--src/CHANGES.txt2
-rw-r--r--src/engine/SCons/SConf.py11
2 files changed, 13 insertions, 0 deletions
diff --git a/src/CHANGES.txt b/src/CHANGES.txt
index 85b3fde..57eb348 100644
--- a/src/CHANGES.txt
+++ b/src/CHANGES.txt
@@ -20,6 +20,8 @@ RELEASE X.X.X - XXX
- Detect implicit dependencies on commands even when the command is
quoted.
+ - Fix interaction of $CHANGED_SOURCES with the --config=force option.
+
From Robert P. J. Day:
- User's Guide updates.
diff --git a/src/engine/SCons/SConf.py b/src/engine/SCons/SConf.py
index 6461dda..fbf193a 100644
--- a/src/engine/SCons/SConf.py
+++ b/src/engine/SCons/SConf.py
@@ -314,6 +314,17 @@ class SConfBuildTask(SCons.Taskmaster.AlwaysTask):
s = sys.stdout = sys.stderr = Streamer(sys.stdout)
try:
env = self.targets[0].get_build_env()
+ if cache_mode == FORCE:
+ # Set up the Decider() to force rebuilds by saying
+ # that every source has changed. Note that we still
+ # call the environment's underlying source decider so
+ # that the correct .sconsign info will get calculated
+ # and keep the build state consistent.
+ def force_build(dependency, target, prev_ni,
+ env_decider=env.decide_source):
+ env_decider(dependency, target, prev_ni)
+ return True
+ env.Decider(force_build)
env['PSTDOUT'] = env['PSTDERR'] = s
try:
sconf.cached = 0