summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Action.py
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2004-12-07 23:21:53 (GMT)
committerSteven Knight <knight@baldmt.com>2004-12-07 23:21:53 (GMT)
commit3953f0e69aae524012d80ea6b1c86bf4393d8cf9 (patch)
treefd243ce2671b1b67746fe425135f3cf77fe6a707 /src/engine/SCons/Action.py
parent3df74590f61e6de1271fc57df1a478f99ab28819 (diff)
downloadSCons-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.py14
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)