diff options
| author | Steven Knight <knight@baldmt.com> | 2008-09-14 16:16:12 (GMT) |
|---|---|---|
| committer | Steven Knight <knight@baldmt.com> | 2008-09-14 16:16:12 (GMT) |
| commit | df1eb6e4b45b70ebf88105a880e2a166f3f04ff4 (patch) | |
| tree | 3ff280008b6f7365ac0be26e737f087deb110cf4 /src/engine/SCons | |
| parent | cebf02ff2330cc6927db8fe0bb71429153db70d9 (diff) | |
| download | SCons-df1eb6e4b45b70ebf88105a880e2a166f3f04ff4.zip SCons-df1eb6e4b45b70ebf88105a880e2a166f3f04ff4.tar.gz SCons-df1eb6e4b45b70ebf88105a880e2a166f3f04ff4.tar.bz2 | |
Issue 1693: make the subdirectory in which the .sconsign file will
appear (if it doesn't already exist. (Damyan Pepper, Jim Randall)
Diffstat (limited to 'src/engine/SCons')
| -rw-r--r-- | src/engine/SCons/Environment.py | 5 | ||||
| -rw-r--r-- | src/engine/SCons/EnvironmentTests.py | 1 | ||||
| -rw-r--r-- | src/engine/SCons/Node/FS.py | 7 | ||||
| -rw-r--r-- | src/engine/SCons/Script/Main.py | 1 |
4 files changed, 12 insertions, 2 deletions
diff --git a/src/engine/SCons/Environment.py b/src/engine/SCons/Environment.py index 9377610..40c92c7 100644 --- a/src/engine/SCons/Environment.py +++ b/src/engine/SCons/Environment.py @@ -1910,6 +1910,11 @@ class Base(SubstitutionEnvironment): name = self.subst(name) if not os.path.isabs(name): name = os.path.join(str(self.fs.SConstruct_dir), name) + if name: + name = os.path.normpath(name) + sconsign_dir = os.path.dirname(name) + if sconsign_dir and not os.path.exists(sconsign_dir): + self.Execute(SCons.Defaults.Mkdir(sconsign_dir)) SCons.SConsign.File(name, dbm_module) def SideEffect(self, side_effect, target): diff --git a/src/engine/SCons/EnvironmentTests.py b/src/engine/SCons/EnvironmentTests.py index 01e7e06..ecc7252 100644 --- a/src/engine/SCons/EnvironmentTests.py +++ b/src/engine/SCons/EnvironmentTests.py @@ -3022,6 +3022,7 @@ def generate(env): env = self.TestEnvironment(FOO = 'SConsign', BAR = os.path.join(os.sep, 'File')) env.fs = MyFS() + env.Execute = lambda action: None try: fnames = [] diff --git a/src/engine/SCons/Node/FS.py b/src/engine/SCons/Node/FS.py index 8d11e4e..b8762dc 100644 --- a/src/engine/SCons/Node/FS.py +++ b/src/engine/SCons/Node/FS.py @@ -59,6 +59,8 @@ import SCons.Warnings from SCons.Debug import Trace +do_store_info = True + # The max_drift value: by default, use a cached signature value for # any file that's been untouched for more than two days. default_max_drift = 2*24*60*60 @@ -2269,7 +2271,8 @@ class File(Base): # This accomodates "chained builds" where a file that's a target # in one build (SConstruct file) is a source in a different build. # See test/chained-build.py for the use case. - self.dir.sconsign().store_info(self.name, self) + if do_store_info: + self.dir.sconsign().store_info(self.name, self) convert_copy_attrs = [ 'bsources', @@ -2395,7 +2398,7 @@ class File(Base): try: sconsign_entry = self.dir.sconsign().get_entry(self.name) - except (KeyError, OSError): + except (KeyError, EnvironmentError): import SCons.SConsign sconsign_entry = SCons.SConsign.SConsignEntry() sconsign_entry.binfo = self.new_binfo() diff --git a/src/engine/SCons/Script/Main.py b/src/engine/SCons/Script/Main.py index 12e7fba..76b94e0 100644 --- a/src/engine/SCons/Script/Main.py +++ b/src/engine/SCons/Script/Main.py @@ -988,6 +988,7 @@ def _build_targets(fs, options, targets, target_top): display.set_mode(not options.silent) SCons.Action.print_actions = not options.silent SCons.Action.execute_actions = not options.no_exec + SCons.Node.FS.do_store_info = not options.no_exec SCons.SConf.dryrun = options.no_exec if options.diskcheck: |
