From 24120957308e294e6152a1aadc5d1db9666c3db4 Mon Sep 17 00:00:00 2001 From: William Deegan Date: Tue, 9 Mar 2021 10:17:32 -0800 Subject: Fix Isssue #3035 by disabling versioned library symlinks --- CHANGES.txt | 4 ++++ SCons/Tool/linkCommon/SharedLibrary.py | 2 +- SCons/Tool/mingw.py | 5 +++++ test/MinGW/MinGWSharedLibrary.py | 8 +++++++- 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 1f985b6..ed5ece8 100755 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -13,6 +13,10 @@ RELEASE VERSION/DATE TO BE FILLED IN LATER It will now allow callables with expected args, and any extra args as long as they have default arguments. Additionally functions with no defaults for extra arguments as long as they are set using functools.partial to create a new callable which set them. + - Fix Issue #3035 - mingw with SHLIBVERSION set fails with either not a dll error or + "Multiple ways to build the same target were specified for:". Now mingw will disable + creating the symlinks (and adding version string to ) dlls. It sets SHLIBNOVERSIONSYMLINKS, + IMPLIBNOVERSIONSYMLINKS and LDMODULENOVERSIONSYMLINKS to True. From Daniel Moody: - Update CacheDir to use uuid for tmpfile uniqueness instead of pid. diff --git a/SCons/Tool/linkCommon/SharedLibrary.py b/SCons/Tool/linkCommon/SharedLibrary.py index e28addc..5c6250d 100644 --- a/SCons/Tool/linkCommon/SharedLibrary.py +++ b/SCons/Tool/linkCommon/SharedLibrary.py @@ -28,7 +28,7 @@ from . import lib_emitter, EmitLibSymlinks, StringizeLibSymlinks def shlib_symlink_emitter(target, source, env, **kw): - verbose = False + verbose = True if "variable_prefix" in kw: var_prefix = kw["variable_prefix"] diff --git a/SCons/Tool/mingw.py b/SCons/Tool/mingw.py index f72c64d..90c41d0 100644 --- a/SCons/Tool/mingw.py +++ b/SCons/Tool/mingw.py @@ -198,6 +198,11 @@ def generate(env): env['_SHLIBSUFFIX'] = '$SHLIBSUFFIX' env["SHLIBPREFIX"] = "" + # Disable creating symlinks for versioned shared library. + env['SHLIBNOVERSIONSYMLINKS'] = True + env['LDMODULENOVERSIONSYMLINKS'] = True + env['IMPLIBNOVERSIONSYMLINKS'] = True + def exists(env): diff --git a/test/MinGW/MinGWSharedLibrary.py b/test/MinGW/MinGWSharedLibrary.py index f563909..9ce4eb3 100644 --- a/test/MinGW/MinGWSharedLibrary.py +++ b/test/MinGW/MinGWSharedLibrary.py @@ -58,7 +58,13 @@ test.write('SConstruct', """ DefaultEnvironment(tools=[]) env = Environment(tools=['mingw','link','g++']) #env.Tool('mingw') -env.SharedLibrary('foobar', 'foobar.cc') +foobar_obj = env.SharedObject('foobar.cc') +env.SharedLibrary('foobar', foobar_obj) + +# Now verify versioned shared library doesn't fail +env.SharedLibrary('foobar_ver', foobar_obj, SHLIBVERSION='2.4') + + """ % locals()) test.run(arguments = ".") -- cgit v0.12