diff options
author | Russel Winder <russel@winder.org.uk> | 2016-02-02 11:09:18 (GMT) |
---|---|---|
committer | Russel Winder <russel@winder.org.uk> | 2016-02-02 11:09:18 (GMT) |
commit | de84af3f318501b8a776cbc0b93e9aec5c85f819 (patch) | |
tree | 1eaecbea1cc33ae0b13772342925475d25df6bc2 | |
parent | 6a42327dfce9dba97ad9643b519e5c93907a45be (diff) | |
parent | b7bf26899595e90e1cc6937fb18fd5702bec8d8d (diff) | |
download | SCons-de84af3f318501b8a776cbc0b93e9aec5c85f819.zip SCons-de84af3f318501b8a776cbc0b93e9aec5c85f819.tar.gz SCons-de84af3f318501b8a776cbc0b93e9aec5c85f819.tar.bz2 |
Commit merge from default.
-rw-r--r-- | src/CHANGES.txt | 4 | ||||
-rw-r--r-- | src/engine/SCons/Executor.py | 4 | ||||
-rw-r--r-- | test/Batch/SConstruct_changed_sources_alwaysBuild | 8 | ||||
-rw-r--r-- | test/Batch/changed_sources_alwaysbuild.py | 54 | ||||
-rw-r--r-- | test/Batch/changed_sources_main.cpp | 7 |
5 files changed, 76 insertions, 1 deletions
diff --git a/src/CHANGES.txt b/src/CHANGES.txt index c05682c..93bf387 100644 --- a/src/CHANGES.txt +++ b/src/CHANGES.txt @@ -22,6 +22,10 @@ RELEASE VERSION/DATE TO BE FILLED IN LATER From William Deegan: - Add better messaging when two environments have different actions for the same target (Bug #2024) + - Fix issue only with MSVC and Always build where targets + marked AlwaysBuild wouldn't make it into CHANGED_SOURCES + and thus yield an empty compile command line. (Bug #2622) + From Jakub Pola: - Intel Compiler 2016 (Linux/Mac) update for tool directories. diff --git a/src/engine/SCons/Executor.py b/src/engine/SCons/Executor.py index eace84a..7107fde 100644 --- a/src/engine/SCons/Executor.py +++ b/src/engine/SCons/Executor.py @@ -217,7 +217,9 @@ class Executor(object): us = [] ut = [] for b in self.batches: - if b.targets[0].is_up_to_date(): + # don't add targets marked always build to unchanged lists + # add to changed list as they always need to build + if not b.targets[0].always_build and b.targets[0].is_up_to_date(): us.extend(list(map(rfile, b.sources))) ut.extend(b.targets) else: diff --git a/test/Batch/SConstruct_changed_sources_alwaysBuild b/test/Batch/SConstruct_changed_sources_alwaysBuild new file mode 100644 index 0000000..c260316 --- /dev/null +++ b/test/Batch/SConstruct_changed_sources_alwaysBuild @@ -0,0 +1,8 @@ +# Testcase for tigris bug 2622 + +object = Object('changed_sources_main.cpp') +AlwaysBuild(object) + +program = Program('test', source = [object]) + +Default(program) diff --git a/test/Batch/changed_sources_alwaysbuild.py b/test/Batch/changed_sources_alwaysbuild.py new file mode 100644 index 0000000..ba947d6 --- /dev/null +++ b/test/Batch/changed_sources_alwaysbuild.py @@ -0,0 +1,54 @@ +#!/usr/bin/env python +# +# __COPYRIGHT__ +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +""" +Verify that files marked AlwaysBuild also get put into CHANGED_SOURCES. +Tigris bug 2622 +""" + +import TestSCons + +test = TestSCons.TestSCons() +test.file_fixture('SConstruct_changed_sources_alwaysBuild','SConstruct') +test.file_fixture('changed_sources_main.cpp') +# always works on first run +test.run() + +# On second run prior to fix the file hasn't changed and so never +# makes it into CHANGED_SOURCES. +# Compile is triggered because SCons knows it needs to build it. +# This tests that on second run the source file is in the scons +# output. Also prior to fix the compile would fail because +# it would produce a compile command line lacking a source file. +test.run() +test.must_contain_all_lines(test.stdout(),['changed_sources_main.cpp']) +test.pass_test() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/test/Batch/changed_sources_main.cpp b/test/Batch/changed_sources_main.cpp new file mode 100644 index 0000000..038fea3 --- /dev/null +++ b/test/Batch/changed_sources_main.cpp @@ -0,0 +1,7 @@ +
+#include <iostream>
+
+int main()
+{
+ std::cout << "Hello, world!\n";
+}
|