diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/CHANGES.txt | 3 | ||||
-rw-r--r-- | src/engine/SCons/Builder.py | 6 | ||||
-rw-r--r-- | src/engine/SCons/BuilderTests.py | 6 |
3 files changed, 14 insertions, 1 deletions
diff --git a/src/CHANGES.txt b/src/CHANGES.txt index 0c608da..c297718 100644 --- a/src/CHANGES.txt +++ b/src/CHANGES.txt @@ -34,6 +34,9 @@ RELEASE 0.10 - XXX - Significant performance improvement from using a more efficient check, throughout the code, for whether a Node has a Builder. + - Fix specifying only the source file to MultiStepBuilders such as + the Program Builder. (Bug reported by Dean Bair.) + From Steve Leblanc: - Add a Clean() method to support removing user-specified targets diff --git a/src/engine/SCons/Builder.py b/src/engine/SCons/Builder.py index 15358c1..2c45855 100644 --- a/src/engine/SCons/Builder.py +++ b/src/engine/SCons/Builder.py @@ -425,7 +425,11 @@ class MultiStepBuilder(BuilderBase): self.sdict = {} self.cached_src_suffixes = {} # source suffixes keyed on id(env) - def __call__(self, env, target = None, source = None, **kw): + def __call__(self, env, target = None, source = _null, **kw): + if source is _null: + source = target + target = None + slist = SCons.Node.arg2nodes(source, self.source_factory) final_sources = [] diff --git a/src/engine/SCons/BuilderTests.py b/src/engine/SCons/BuilderTests.py index 9905eb9..57069df 100644 --- a/src/engine/SCons/BuilderTests.py +++ b/src/engine/SCons/BuilderTests.py @@ -420,6 +420,12 @@ class BuilderTestCase(unittest.TestCase): assert str(tgt.sources[1]) == 'test2.foo', str(tgt.sources[1]) assert str(tgt.sources[2]) == 'test3.txt', str(tgt.sources[2]) + tgt = builder2(env, 'aaa.bar') + assert str(tgt) == 'aaa', str(tgt) + assert str(tgt.sources[0]) == 'aaa.foo', str(tgt.sources[0]) + assert str(tgt.sources[0].sources[0]) == 'aaa.bar', \ + str(tgt.sources[0].sources[0]) + builder3 = SCons.Builder.MultiStepBuilder(name = "builder3", action = 'foo', src_builder = 'xyzzy', |