diff options
-rw-r--r-- | QMTest/TestSCons.py | 2 | ||||
-rw-r--r-- | src/CHANGES.txt | 1 | ||||
-rw-r--r-- | src/engine/SCons/Action.py | 3 | ||||
-rw-r--r-- | src/engine/SCons/Tool/__init__.py | 8 | ||||
-rw-r--r-- | test/Libs/SharedLibrary-update-deps.py | 17 | ||||
-rw-r--r-- | test/Libs/bug2903/SConstruct | 13 | ||||
-rw-r--r-- | test/Libs/bug2903/SConstruct-libs (renamed from test/Libs/bug2909/SConstruct-libs) | 0 | ||||
-rw-r--r-- | test/Libs/bug2903/lib.c (renamed from test/Libs/bug2909/lib.c) | 0 | ||||
-rw-r--r-- | test/Libs/bug2903/main.c (renamed from test/Libs/bug2909/main.c) | 0 | ||||
-rw-r--r-- | test/Libs/bug2909/SConstruct | 3 |
10 files changed, 38 insertions, 9 deletions
diff --git a/QMTest/TestSCons.py b/QMTest/TestSCons.py index 84cc60f..bc2f82e 100644 --- a/QMTest/TestSCons.py +++ b/QMTest/TestSCons.py @@ -151,7 +151,7 @@ def deprecated_python_version(version=sys.version_info): if deprecated_python_version(): msg = r""" -scons: warning: Support for pre-2.4 Python (%s) is deprecated. +scons: warning: Support for pre-2.7.0 Python version (%s) is deprecated. If this will cause hardship, contact dev@scons.tigris.org. """ diff --git a/src/CHANGES.txt b/src/CHANGES.txt index b0d2d3c..5bfc0c5 100644 --- a/src/CHANGES.txt +++ b/src/CHANGES.txt @@ -5712,5 +5712,6 @@ A brief overview of important functionality available in release 0.01: - Windows installer available. + __COPYRIGHT__ __FILE__ __REVISION__ __DATE__ __DEVELOPER__ diff --git a/src/engine/SCons/Action.py b/src/engine/SCons/Action.py index 82b8fb9..a6dbb7c 100644 --- a/src/engine/SCons/Action.py +++ b/src/engine/SCons/Action.py @@ -440,7 +440,8 @@ class ActionBase(object): vl = self.get_varlist(target, source, env) if is_String(vl): vl = (vl,) for v in vl: - result.append(env.subst('${'+v+'}')) + # do the subst this way to ignore $(...$) parts: + result.append(env.subst_target_source('${'+v+'}', SCons.Subst.SUBST_SIG, target, source)) return ''.join(result) def __add__(self, other): diff --git a/src/engine/SCons/Tool/__init__.py b/src/engine/SCons/Tool/__init__.py index 7477f75..c09f8e4 100644 --- a/src/engine/SCons/Tool/__init__.py +++ b/src/engine/SCons/Tool/__init__.py @@ -364,8 +364,12 @@ symlinks for the platform we are on""" print "VerShLib: made sym link of %s -> %s" % (linkname, lib_ver) return result -# Fix http://scons.tigris.org/issues/show_bug.cgi?id=2903 : -# varlist=['$SHLINKCOM']: ensure we still depend on SCons.Defaults.ShLinkAction command line which is $SHLINKCOM +# Fix http://scons.tigris.org/issues/show_bug.cgi?id=2903 : +# Ensure we still depend on SCons.Defaults.ShLinkAction command line which is $SHLINKCOM. +# This was tricky because we don't want changing LIBPATH to cause a rebuild, but +# changing other link args should. LIBPATH has $( ... $) around it but until this +# fix, when the varlist was added to the build sig those ignored parts weren't getting +# ignored. ShLibAction = SCons.Action.Action(VersionedSharedLibrary, None, varlist=['SHLINKCOM']) def createSharedLibBuilder(env): diff --git a/test/Libs/SharedLibrary-update-deps.py b/test/Libs/SharedLibrary-update-deps.py index 24c5262..e8ec2ab 100644 --- a/test/Libs/SharedLibrary-update-deps.py +++ b/test/Libs/SharedLibrary-update-deps.py @@ -26,18 +26,20 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" """ Test that SharedLibrary() updates when a different lib is linked, even if it has the same md5. -This is Tigris bug #2909. +This is Tigris bug #2903. """ +import sys import os.path import TestSCons test = TestSCons.TestSCons() -test.dir_fixture( "bug2909" ) +test.dir_fixture( "bug2903" ) # Build the sub-libs (don't care about details of this) test.run(arguments='-f SConstruct-libs') + # This should build the main lib, using libfoo.so test.run(arguments='libname=foo') # This should rebuild the main lib, using libbar.so; @@ -48,6 +50,17 @@ test.must_not_contain_any_line(test.stdout(), ["is up to date"]) test.run(arguments='libname=foo') test.must_not_contain_any_line(test.stdout(), ["is up to date"]) +# Now try changing the link command line (in an innocuous way); should rebuild. +if sys.platform == 'win32': + extraflags='shlinkflags=/DEBUG' +else: + extraflags='shlinkflags=-g' + +test.run(arguments=['libname=foo', extraflags]) +test.must_not_contain_any_line(test.stdout(), ["is up to date"]) +test.run(arguments=['libname=foo', extraflags]) +test.must_contain_all_lines(test.stdout(), ["is up to date"]) + test.pass_test() # Local Variables: diff --git a/test/Libs/bug2903/SConstruct b/test/Libs/bug2903/SConstruct new file mode 100644 index 0000000..f7b66a8 --- /dev/null +++ b/test/Libs/bug2903/SConstruct @@ -0,0 +1,13 @@ +# SConstruct for testing but #2903. +# The test changes the lib name to make sure it rebuilds +# when the name changes, even if the content of the lib is the same. +# Also, the test passes in extra shlinkflags to ensure things rebuild +# when other linker options change, and not when they don't. +# (This doesn't specifically test LIBPATH, but there's a test for +# that already.) +env=Environment() +libname=ARGUMENTS.get('libname', 'foo') +env['SHLINKCOM'] = env['SHLINKCOM'] + ' $EXTRA_SHLINKFLAGS' +shlinkflags=ARGUMENTS.get('shlinkflags', '') +env.SharedLibrary('myshared', ['main.c'], + LIBS=[libname], LIBPATH='.', EXTRA_SHLINKFLAGS=shlinkflags) diff --git a/test/Libs/bug2909/SConstruct-libs b/test/Libs/bug2903/SConstruct-libs index 3f59f9c..3f59f9c 100644 --- a/test/Libs/bug2909/SConstruct-libs +++ b/test/Libs/bug2903/SConstruct-libs diff --git a/test/Libs/bug2909/lib.c b/test/Libs/bug2903/lib.c index 048f715..048f715 100644 --- a/test/Libs/bug2909/lib.c +++ b/test/Libs/bug2903/lib.c diff --git a/test/Libs/bug2909/main.c b/test/Libs/bug2903/main.c index 3fe7d49..3fe7d49 100644 --- a/test/Libs/bug2909/main.c +++ b/test/Libs/bug2903/main.c diff --git a/test/Libs/bug2909/SConstruct b/test/Libs/bug2909/SConstruct deleted file mode 100644 index 2c5440b..0000000 --- a/test/Libs/bug2909/SConstruct +++ /dev/null @@ -1,3 +0,0 @@ -env=Environment() -libname=ARGUMENTS.get('libname', 'foo') -env.SharedLibrary('myshared', ['main.c'], LIBS=[libname], LIBPATH='.')
\ No newline at end of file |