- Allow Aliases to have actions that will be executed whenever
any of the expanded Alias targets are out of date.
+ - Fix expansion of env.Command() overrides within target and
+ source file names.
+
From Wayne Lee:
- Avoid "maximum recursion limit" errors when removing $(-$) pairs
source files using the supplied action. Action may
be any type that the Builder constructor will accept
for an action."""
- nkw = self.subst_kw(kw)
- nkw['action'] = action
- nkw['source_factory'] = self.fs.Entry
- bld = apply(SCons.Builder.Builder, (), nkw)
- return bld(self, target, source)
+ bld = SCons.Builder.Builder(action = action,
+ source_factory = self.fs.Entry)
+ return apply(bld, (self, target, source), kw)
def Depends(self, target, dependency):
"""Explicity specify that 'target's depend on 'dependency'."""
t.build()
assert x[0] == 'magic word', x
+ t = env.Command(target='${X}.out', source='${X}.in',
+ action = 'foo',
+ X = 'xxx')[0]
+ assert str(t) == 'xxx.out', str(t)
+ assert 'xxx.in' in map(lambda x: x.path, t.sources)
+
def test_Configure(self):
"""Test the Configure() method"""
# Configure() will write to a local temporary file.
action = r"%(python)s build.py $TARGET $SOURCE")
env.Command(target = 'f9.out', source = 'f9.in',
action = r"$EXPAND")
+env.Command(target = '${F10}.out', source = '${F10}.in',
+ action = r"%(python)s build.py $TARGET $SOURCE",
+ F10 = 'f10')
""" % {'python': python})
test.write('f1.in', "f1.in\n")
test.write('f7.in', "f7.in\n")
test.write('f8.in', "f8.in\n")
test.write('f9.in', "f9.in\n")
+test.write('f10.in', "f10.in\n")
test.run(arguments = '.')
test.must_match('f7.out', "f7.in\n")
test.must_match('f8.out', "f8.in\n")
test.must_match('f9.out', "f9.in\n")
+test.must_match('f10.out', "f10.in\n")
test.pass_test()