diff options
author | Steven Knight <knight@baldmt.com> | 2004-12-15 12:30:56 (GMT) |
---|---|---|
committer | Steven Knight <knight@baldmt.com> | 2004-12-15 12:30:56 (GMT) |
commit | 34825bfd664eacf14ca95f8e9335e2dcd440bb48 (patch) | |
tree | 45d63fe33ad55ccf59c97153126dc7bd70b974ee /src/engine | |
parent | 6069f3ce2807d9915f74f5d5bcca7300ed7616fd (diff) | |
download | SCons-34825bfd664eacf14ca95f8e9335e2dcd440bb48.zip SCons-34825bfd664eacf14ca95f8e9335e2dcd440bb48.tar.gz SCons-34825bfd664eacf14ca95f8e9335e2dcd440bb48.tar.bz2 |
Apply build overrides once up front. (Kevin Quick)
Diffstat (limited to 'src/engine')
-rw-r--r-- | src/engine/SCons/Builder.py | 17 | ||||
-rw-r--r-- | src/engine/SCons/Node/FSTests.py | 1 | ||||
-rw-r--r-- | src/engine/SCons/Node/__init__.py | 1 |
3 files changed, 10 insertions, 9 deletions
diff --git a/src/engine/SCons/Builder.py b/src/engine/SCons/Builder.py index 04dd1e5..ed070c4 100644 --- a/src/engine/SCons/Builder.py +++ b/src/engine/SCons/Builder.py @@ -298,9 +298,6 @@ def _init_nodes(builder, env, overrides, executor_kw, tlist, slist): else: raise UserError, "Two environments with different actions were specified for the same target: %s"%str(t) - elif t.overrides != overrides: - raise UserError, "Two different sets of overrides were specified for the same target: %s"%str(t) - if builder.multi: if t.builder != builder: if isinstance(t.builder, ListBuilder) and isinstance(builder, ListBuilder) and t.builder.builder == builder.builder: @@ -332,14 +329,13 @@ def _init_nodes(builder, env, overrides, executor_kw, tlist, slist): raise UserError, "Builder %s must have an action to build %s."%(builder.get_name(env or builder.env), map(str,tlist)) executor = SCons.Executor.Executor(builder.action, env or builder.env, - [builder.overrides, overrides], + [], # env already has overrides tlist, slist, executor_kw) # Now set up the relevant information in the target Nodes themselves. for t in tlist: - t.overrides = overrides t.cwd = SCons.Node.FS.default_fs.getcwd() t.builder_set(builder) t.env_set(env) @@ -491,8 +487,6 @@ class BuilderBase: overwarn.warn() - env = env.Override(overwarn.data) - src_suf = self.get_src_suffix(env) source = _adjustixes(source, None, src_suf) @@ -572,6 +566,15 @@ class BuilderBase: else: ekw = self.executor_kw.copy() ekw['chdir'] = chdir + if kw: + if self.overrides: + env_kw = self.overrides.copy() + env_kw.update(kw) + else: + env_kw = kw + else: + env_kw = self.overrides + env = env.Override(env_kw) return self._execute(env, target, source, OverrideWarner(kw), ekw) def adjust_suffix(self, suff): diff --git a/src/engine/SCons/Node/FSTests.py b/src/engine/SCons/Node/FSTests.py index 5ed377c..c829f22 100644 --- a/src/engine/SCons/Node/FSTests.py +++ b/src/engine/SCons/Node/FSTests.py @@ -137,7 +137,6 @@ class BuildDirTestCase(unittest.TestCase): fs.BuildDir('../var2', 'src') f1 = fs.File('../var1/test1') f2 = fs.File('../var2/test1') - assert hasattr(f1, 'overrides') assert f1.srcnode().path == os.path.normpath('src/test1'), f1.srcnode().path assert f2.srcnode().path == os.path.normpath('src/test1'), f2.srcnode().path diff --git a/src/engine/SCons/Node/__init__.py b/src/engine/SCons/Node/__init__.py index 24ea2a9..767b9e3 100644 --- a/src/engine/SCons/Node/__init__.py +++ b/src/engine/SCons/Node/__init__.py @@ -126,7 +126,6 @@ class Node: self.always_build = None self.found_includes = {} self.includes = None - self.overrides = {} # construction variable overrides for building this node self.attributes = self.Attrs() # Generic place to stick information about the Node. self.side_effect = 0 # true iff this node is a side effect self.side_effects = [] # the side effects of building this target |