diff options
author | Steven Knight <knight@baldmt.com> | 2004-12-07 23:21:53 (GMT) |
---|---|---|
committer | Steven Knight <knight@baldmt.com> | 2004-12-07 23:21:53 (GMT) |
commit | 3953f0e69aae524012d80ea6b1c86bf4393d8cf9 (patch) | |
tree | fd243ce2671b1b67746fe425135f3cf77fe6a707 /src/engine/SCons/Action.py | |
parent | 3df74590f61e6de1271fc57df1a478f99ab28819 (diff) | |
download | SCons-3953f0e69aae524012d80ea6b1c86bf4393d8cf9.zip SCons-3953f0e69aae524012d80ea6b1c86bf4393d8cf9.tar.gz SCons-3953f0e69aae524012d80ea6b1c86bf4393d8cf9.tar.bz2 |
ActionFactory action functions should take an env argument, too.
Diffstat (limited to 'src/engine/SCons/Action.py')
-rw-r--r-- | src/engine/SCons/Action.py | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/engine/SCons/Action.py b/src/engine/SCons/Action.py index 545bd61..6db1e6a 100644 --- a/src/engine/SCons/Action.py +++ b/src/engine/SCons/Action.py @@ -665,14 +665,22 @@ class ActionCaller: # or something like that. Do the best we can. contents = str(actfunc) return contents + def subst(self, s, target, source, env): + # Special-case hack: Let a custom function wrapped in an + # ActionCaller get at the environment through which the action + # was called by using this hard-coded value as a special return. + if s == '$__env__': + return env + else: + return env.subst(s, 0, target, source) def subst_args(self, target, source, env): - return map(lambda x, e=env, t=target, s=source: - e.subst(x, 0, t, s), + return map(lambda x, self=self, t=target, s=source, e=env: + self.subst(x, t, s, e), self.args) def subst_kw(self, target, source, env): kw = {} for key in self.kw.keys(): - kw[key] = env.subst(self.kw[key], 0, target, source) + kw[key] = self.subst(self.kw[key], target, source, env) return kw def __call__(self, target, source, env): args = self.subst_args(target, source, env) |