summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2001-09-11 13:15:57 (GMT)
committerSteven Knight <knight@baldmt.com>2001-09-11 13:15:57 (GMT)
commit1be774d4845c05bacaecf93eec506ceb038ad8d8 (patch)
tree49d41cf9613314abf68ae9bf65ea272cfc76fb51 /src
parent41a56f7c2d2faac0b6a084e591de3faa1a3e79ff (diff)
downloadSCons-1be774d4845c05bacaecf93eec506ceb038ad8d8.zip
SCons-1be774d4845c05bacaecf93eec506ceb038ad8d8.tar.gz
SCons-1be774d4845c05bacaecf93eec506ceb038ad8d8.tar.bz2
Refactor the Builder binding so the calling Environment gets passed in.
Diffstat (limited to 'src')
-rw-r--r--src/scons/Builder.py3
-rw-r--r--src/scons/Environment.py19
-rw-r--r--src/scons/Node/__init__.py3
3 files changed, 23 insertions, 2 deletions
diff --git a/src/scons/Builder.py b/src/scons/Builder.py
index ba489ec..c11c9f3 100644
--- a/src/scons/Builder.py
+++ b/src/scons/Builder.py
@@ -37,9 +37,10 @@ class Builder:
def __cmp__(self, other):
return cmp(self.__dict__, other.__dict__)
- def __call__(self, target = None, source = None):
+ def __call__(self, env, target = None, source = None):
node = lookup(self.node_class, target)
node.builder_set(self)
+ node.env_set(self)
node.sources = source # XXX REACHING INTO ANOTHER OBJECT
return node
diff --git a/src/scons/Environment.py b/src/scons/Environment.py
index da71ba1..9b050d1 100644
--- a/src/scons/Environment.py
+++ b/src/scons/Environment.py
@@ -62,8 +62,25 @@ class Environment:
import scons.Defaults
kw['BUILDERS'] = scons.Defaults.Builders[:]
self.Dictionary.update(copy.deepcopy(kw))
+
+ class BuilderWrapper:
+ """Wrapper class that allows an environment to
+ be associated with a Builder at instantiation.
+ """
+ def __init__(self, env, builder):
+ self.env = env
+ self.builder = builder
+
+ def __call__(self, target = None, source = None):
+ return self.builder(self.env, target, source)
+
+ def execute(self, **kw):
+ apply(self.builder.execute, (), kw)
+
for b in kw['BUILDERS']:
- setattr(self, b.name, b)
+ setattr(self, b.name, BuilderWrapper(self, b))
+
+
def __cmp__(self, other):
return cmp(self.Dictionary, other.Dictionary)
diff --git a/src/scons/Node/__init__.py b/src/scons/Node/__init__.py
index 767f297..e4eb45a 100644
--- a/src/scons/Node/__init__.py
+++ b/src/scons/Node/__init__.py
@@ -17,3 +17,6 @@ class Node:
def builder_set(self, builder):
self.builder = builder
+
+ def env_set(self, env):
+ self.env = env