summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Deegan <bill@baddogconsulting.com>2013-10-27 19:04:46 -0700
committerWilliam Deegan <bill@baddogconsulting.com>2013-10-27 19:04:46 -0700
commitf6df22b414bca8bbf18ddc1aff2e11f9cf15df03 (patch)
treeb4c4c18fc7249a689038b699a9bf18c1eec8c770
parent06ad926fe7445a11ffa446c84533eb551b3112be (diff)
parent434d78a8709833bf354d63172c8347c763ce5f63 (diff)
downloadscons-f6df22b414bca8bbf18ddc1aff2e11f9cf15df03.tar.gz
Merged in dirkbaechle/scons (pull request #92)
Fix: now counting instances only when requested via --debug=count (#2922)
-rw-r--r--QMTest/TestSCons.py2
-rw-r--r--src/CHANGES.txt1
-rw-r--r--src/engine/SCons/Action.py3
-rw-r--r--src/engine/SCons/Tool/__init__.py8
-rw-r--r--test/Libs/SharedLibrary-update-deps.py17
-rw-r--r--test/Libs/bug2903/SConstruct13
-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/SConstruct3
10 files changed, 38 insertions, 9 deletions
diff --git a/QMTest/TestSCons.py b/QMTest/TestSCons.py
index 84cc60f0..bc2f82ed 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 b0d2d3c0..5bfc0c57 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 82b8fb95..a6dbb7c6 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 7477f752..c09f8e48 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 24c5262d..e8ec2abb 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 00000000..f7b66a84
--- /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 3f59f9c5..3f59f9c5 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 048f715b..048f715b 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 3fe7d491..3fe7d491 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 2c5440b9..00000000
--- 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