diff options
author | Steven Knight <knight@baldmt.com> | 2001-09-11 13:15:57 (GMT) |
---|---|---|
committer | Steven Knight <knight@baldmt.com> | 2001-09-11 13:15:57 (GMT) |
commit | 1be774d4845c05bacaecf93eec506ceb038ad8d8 (patch) | |
tree | 49d41cf9613314abf68ae9bf65ea272cfc76fb51 /src | |
parent | 41a56f7c2d2faac0b6a084e591de3faa1a3e79ff (diff) | |
download | SCons-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.py | 3 | ||||
-rw-r--r-- | src/scons/Environment.py | 19 | ||||
-rw-r--r-- | src/scons/Node/__init__.py | 3 |
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 |