summaryrefslogtreecommitdiffstats
path: root/src/engine
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2004-12-15 12:30:56 (GMT)
committerSteven Knight <knight@baldmt.com>2004-12-15 12:30:56 (GMT)
commit34825bfd664eacf14ca95f8e9335e2dcd440bb48 (patch)
tree45d63fe33ad55ccf59c97153126dc7bd70b974ee /src/engine
parent6069f3ce2807d9915f74f5d5bcca7300ed7616fd (diff)
downloadSCons-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.py17
-rw-r--r--src/engine/SCons/Node/FSTests.py1
-rw-r--r--src/engine/SCons/Node/__init__.py1
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