[Scons-users] Building versioned shared library fails when using MinGW

Ray Speth speth at darkmatter.mit.edu
Mon Nov 28 22:47:35 EST 2016


Bill,

Perhaps I missed it, but I don't think you had previously asked for a 
listing of the libraries in the MinGW installation. In any case, I have 
added a partial listing of the files in my installation to the 
previously-linked Gist [1].

I did not mean to offend by stating that I do not understand how the 
MinGW distribution (which I did provide information on) could be the 
source of the error. The origin of this bug report is in fact from a 
user of an open source project for which I'm a maintainer, so I fully 
understand the value (and costs) of free support, and very much 
appreciate the time you and others have put into SCons development.

If there is any other information I can provide that would help in 
resolving this bug, please let me know.

Regards,
Ray

[1] https://gist.github.com/speth/6f022116c3a1273952afe8167c6388ae

On 11/28/2016 11:26 AM, Bill Deegan wrote:
> Ray,
>
> Since you've not responded with a listing of the libs in your mingw
> install to help see if there is a standard for how to name versioned
> shared libraries under mingw I thought I would have to install it.
>
> Responding with "I'm not sure how the information you've asked for is
> relevant" is not a great way to get help on an issue you are facing.
> Please remember that you are not paying for support, if anyone asks for
> more information on your issue to help you, doesn't it seem reasonable
> to just provide it?
>
> Just because I can reproduce the issue in my environment doesn't mean
> that I know what the proper solution in your (mingw) environment is.
>
> Thanks,
> Bill
>
> On Sun, Nov 27, 2016 at 2:39 PM, Ray Speth <speth at darkmatter.mit.edu
> <mailto:speth at darkmatter.mit.edu>> wrote:
>
>     I'm using MinGW-w64 [1], but not sure how much that has to do with
>     it (given that the error can be triggered without even having MinGW
>     installed).
>
>     The SharedLibrary builder actually works reasonably well with
>     Cygwin. In that case, I end up with:
>
>         cygfoo-2-4-0.dll
>         libfoo.dll.a -> libfoo-2-4-0.dll.a (symlink)
>         libfoo-2-4-0.dll.a
>
>     which can be linked to simply as '-lfoo'.
>
>     Using MSVC, I don't seem to get any files with the version info in
>     the name, but at least it compiles.
>
>     Regards,
>     Ray
>
>     [1] https://sourceforge.net/projects/mingw-w64/
>     <https://sourceforge.net/projects/mingw-w64/>
>
>     On 11/27/2016 3:55 PM, Bill Deegan wrote:
>
>         Yes dylib is because I ran your example on macosx.
>
>         How did you install mingw? via cygwin? other?
>
>         I can try installing on my system, but I'd like to replicate
>         your install.
>
>
>
>         On Sun, Nov 27, 2016 at 11:48 AM, Ray Speth
>         <speth at darkmatter.mit.edu <mailto:speth at darkmatter.mit.edu>
>         <mailto:speth at darkmatter.mit.edu
>         <mailto:speth at darkmatter.mit.edu>>> wrote:
>
>             I'm not entirely sure. I found some info for Autotools [1] that
>             suggests it should create 'libfoo-2.dll', and just looking
>         through
>             my MinGW installation, it looks like there are a fair number of
>             libraries that follow this convention. I thought 'dylib' was
>         just an
>             OS X thing. I've certainly never seen it on Windows.
>
>             One thought I had as to why SCons is complaining about multiple
>             targets is because building a shared library on Windows *does*
>             require generating multiple files -- you need both the DLL
>         and the
>             corresponding "import library" (likely named
>         'libfoo-2.dll.a' when
>             using MinGW) that is used when linking to the DLL.
>
>
>         Nope that's not the issue here.
>
>         The issue seems to be the generated name of the versioned shared
>         library.
>         So either for mingw the SHLIBVERSION should be ignored, or the name
>         format needs to change.
>
>         If you comment out SHLIBVERSION='2.4' it works fine (at least on
>         my mac).
>
>         -Bill
>
>
>
>             Regards,
>             Ray
>
>             [1]
>
>         https://autotools.io/libtool/windows.html#libtool.windows.version <https://autotools.io/libtool/windows.html#libtool.windows.version>
>
>         <https://autotools.io/libtool/windows.html#libtool.windows.version
>         <https://autotools.io/libtool/windows.html#libtool.windows.version>>
>
>             On 11/26/2016 11:07 PM, Bill Deegan wrote:
>
>                 What's the proper naming for a versioned shared library
>         under mingw?
>
>                 Currently for your example it's trying to create :
>         libfoo.dylib.2.4
>
>                 -Bill
>
>                 On Sat, Nov 26, 2016 at 4:34 PM, Ray Speth
>                 <speth at darkmatter.mit.edu
>         <mailto:speth at darkmatter.mit.edu>
>         <mailto:speth at darkmatter.mit.edu <mailto:speth at darkmatter.mit.edu>>
>                 <mailto:speth at darkmatter.mit.edu
>         <mailto:speth at darkmatter.mit.edu>
>                 <mailto:speth at darkmatter.mit.edu
>         <mailto:speth at darkmatter.mit.edu>>>> wrote:
>
>                     If I name the target 'foo.dll', then the error becomes:
>
>                     scons: *** Multiple ways to build the same target
>         were specified
>                     for: foo.dll
>
>                     If I change the name to 'foo.bar' then the error
>         references
>                 the name
>                     'foo.bar'.
>
>                     Adding either '--deub=presub' or '--tree=prune' does not
>                 provide any
>                     additional information. The output from running 'scons
>                     --debug-stacktrace' has been added to the
>         previously-linked
>                 Gist.
>
>                     I would also note that debugging this does not
>         necessarily
>                 require
>                     having MinGW installed. I am able to replicate this
>         bug on
>                 an Ubuntu
>                     system as well, with the exception that in the "working"
>                 case you
>                     end up calling the system GCC with some flags that it
>                 doesn't like
>                     and compilation fails, as expected.
>
>                     Regards,
>                     Ray
>
>                     On 11/24/2016 11:05 PM, Bill Deegan wrote:
>
>                         What happens when you change the target for
>         SharedLibrary to
>                         'foo.dll' ?
>
>                         On Tue, Nov 22, 2016 at 7:57 PM, Ray Speth
>                         <speth at darkmatter.mit.edu
>         <mailto:speth at darkmatter.mit.edu>
>                 <mailto:speth at darkmatter.mit.edu
>         <mailto:speth at darkmatter.mit.edu>>
>                 <mailto:speth at darkmatter.mit.edu
>         <mailto:speth at darkmatter.mit.edu>
>         <mailto:speth at darkmatter.mit.edu <mailto:speth at darkmatter.mit.edu>>>
>                         <mailto:speth at darkmatter.mit.edu
>         <mailto:speth at darkmatter.mit.edu>
>                 <mailto:speth at darkmatter.mit.edu
>         <mailto:speth at darkmatter.mit.edu>>
>                         <mailto:speth at darkmatter.mit.edu
>         <mailto:speth at darkmatter.mit.edu>
>                 <mailto:speth at darkmatter.mit.edu
>         <mailto:speth at darkmatter.mit.edu>>>>> wrote:
>
>                             Bill,
>
>                             Adding the --tree=prune and --deub=presub
>         options don't
>                         change the
>                             output. The value of CCCOM is '$CC -o
>         $TARGET -c $CFLAGS
>                         $CCFLAGS
>                             $_CCCOMCOM $SOURCES'. According to
>         env.subst, this
>                 works out
>                         to 'gcc
>                             -o -c'.
>
>                             The output from adding the
>         --debug=stacktrace option are
>                         posted at
>
>
>
>         https://gist.github.com/speth/6f022116c3a1273952afe8167c6388ae
>         <https://gist.github.com/speth/6f022116c3a1273952afe8167c6388ae>
>
>         <https://gist.github.com/speth/6f022116c3a1273952afe8167c6388ae
>         <https://gist.github.com/speth/6f022116c3a1273952afe8167c6388ae>>
>
>
>         <https://gist.github.com/speth/6f022116c3a1273952afe8167c6388ae
>         <https://gist.github.com/speth/6f022116c3a1273952afe8167c6388ae>
>
>         <https://gist.github.com/speth/6f022116c3a1273952afe8167c6388ae
>         <https://gist.github.com/speth/6f022116c3a1273952afe8167c6388ae>>>
>
>
>
>         <https://gist.github.com/speth/6f022116c3a1273952afe8167c6388ae
>         <https://gist.github.com/speth/6f022116c3a1273952afe8167c6388ae>
>
>         <https://gist.github.com/speth/6f022116c3a1273952afe8167c6388ae
>         <https://gist.github.com/speth/6f022116c3a1273952afe8167c6388ae>>
>
>
>         <https://gist.github.com/speth/6f022116c3a1273952afe8167c6388ae
>         <https://gist.github.com/speth/6f022116c3a1273952afe8167c6388ae>
>
>         <https://gist.github.com/speth/6f022116c3a1273952afe8167c6388ae
>         <https://gist.github.com/speth/6f022116c3a1273952afe8167c6388ae>>>>,
>                             along with the full output of 'print
>         env.Dump()'.
>
>                             Regards,
>                             Ray
>
>                             On 11/20/2016 6:43 PM, Bill Deegan wrote:
>
>                                 Ray,
>
>                                 I don't have mingw installed on a system
>         I have
>                 readily
>                                 available today.
>                                 Can you pastebin the output for the
>         following:
>
>                                 scons --tree=prune
>                                 scons --deub=presub
>
>                                 Add:
>
>                                 print env.Dump('CCCOM')
>
>                                 To you Sconstruct and run scons and copy
>         that
>                 output as
>                         well.
>
>                                 Thanks,
>
>                                 Bill
>
>
>
>                                 On Sat, Nov 19, 2016 at 5:59 PM, Ray Speth
>                                 <speth at darkmatter.mit.edu
>         <mailto:speth at darkmatter.mit.edu>
>                 <mailto:speth at darkmatter.mit.edu
>         <mailto:speth at darkmatter.mit.edu>>
>                         <mailto:speth at darkmatter.mit.edu
>         <mailto:speth at darkmatter.mit.edu>
>                 <mailto:speth at darkmatter.mit.edu
>         <mailto:speth at darkmatter.mit.edu>>>
>                         <mailto:speth at darkmatter.mit.edu
>         <mailto:speth at darkmatter.mit.edu>
>                 <mailto:speth at darkmatter.mit.edu
>         <mailto:speth at darkmatter.mit.edu>>
>                 <mailto:speth at darkmatter.mit.edu
>         <mailto:speth at darkmatter.mit.edu>
>         <mailto:speth at darkmatter.mit.edu
>         <mailto:speth at darkmatter.mit.edu>>>>
>                                 <mailto:speth at darkmatter.mit.edu
>         <mailto:speth at darkmatter.mit.edu>
>                 <mailto:speth at darkmatter.mit.edu
>         <mailto:speth at darkmatter.mit.edu>>
>                         <mailto:speth at darkmatter.mit.edu
>         <mailto:speth at darkmatter.mit.edu>
>                 <mailto:speth at darkmatter.mit.edu
>         <mailto:speth at darkmatter.mit.edu>>>
>                                 <mailto:speth at darkmatter.mit.edu
>         <mailto:speth at darkmatter.mit.edu>
>                 <mailto:speth at darkmatter.mit.edu
>         <mailto:speth at darkmatter.mit.edu>>
>                         <mailto:speth at darkmatter.mit.edu
>         <mailto:speth at darkmatter.mit.edu>
>                 <mailto:speth at darkmatter.mit.edu
>         <mailto:speth at darkmatter.mit.edu>>>>>> wrote:
>
>
>                                     Hi,
>
>                                     I have encountered an apparent bug when
>                 trying to build
>                                     versioned
>
>                                 shared libraries with MinGW. A minimal
>         SConstruct:
>
>
>                                         env = Environment(tools=['mingw'])
>                                         lib = env.SharedLibrary('foo',
>         ['foo.cpp'],
>                                     SHLIBVERSION='2.4')
>                                         env.AlwaysBuild(lib)
>
>                                     generates the following output:
>
>                                         scons: Reading SConscript files ...
>                                         scons: *** A shared library
>         should have
>                 exactly one
>                                     target with the
>                                     suffix: .dll
>                                         File "path\to\SConstruct", line
>         2, in
>                 <module>
>
>                                     I have tested this with SCons 2.4.1,
>         2.5.0, and
>                         2.5.1, with
>                                     the same
>
>                                 results.
>
>
>                                     Regards,
>                                     Ray
>
>         _______________________________________________
>                                     Scons-users mailing list
>                                     Scons-users at scons.org
>         <mailto:Scons-users at scons.org>
>                 <mailto:Scons-users at scons.org
>         <mailto:Scons-users at scons.org>> <mailto:Scons-users at scons.org
>         <mailto:Scons-users at scons.org>
>                 <mailto:Scons-users at scons.org
>         <mailto:Scons-users at scons.org>>>
>                         <mailto:Scons-users at scons.org
>         <mailto:Scons-users at scons.org>
>                 <mailto:Scons-users at scons.org
>         <mailto:Scons-users at scons.org>> <mailto:Scons-users at scons.org
>         <mailto:Scons-users at scons.org>
>                 <mailto:Scons-users at scons.org
>         <mailto:Scons-users at scons.org>>>>
>                                     <mailto:Scons-users at scons.org
>         <mailto:Scons-users at scons.org>
>                 <mailto:Scons-users at scons.org
>         <mailto:Scons-users at scons.org>>
>                         <mailto:Scons-users at scons.org
>         <mailto:Scons-users at scons.org>
>                 <mailto:Scons-users at scons.org
>         <mailto:Scons-users at scons.org>>> <mailto:Scons-users at scons.org
>         <mailto:Scons-users at scons.org>
>                 <mailto:Scons-users at scons.org
>         <mailto:Scons-users at scons.org>>
>                         <mailto:Scons-users at scons.org
>         <mailto:Scons-users at scons.org>
>                 <mailto:Scons-users at scons.org
>         <mailto:Scons-users at scons.org>>>>>
>
>
>         https://pairlist4.pair.net/mailman/listinfo/scons-users
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users>
>                 <https://pairlist4.pair.net/mailman/listinfo/scons-users
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users>>
>
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users>
>                 <https://pairlist4.pair.net/mailman/listinfo/scons-users
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users>>>
>
>
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users>
>                 <https://pairlist4.pair.net/mailman/listinfo/scons-users
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users>>
>
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users>
>                 <https://pairlist4.pair.net/mailman/listinfo/scons-users
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users>>>>
>
>
>
>
>
>         _______________________________________________
>                                 Scons-users mailing list
>                                 Scons-users at scons.org
>         <mailto:Scons-users at scons.org>
>                 <mailto:Scons-users at scons.org
>         <mailto:Scons-users at scons.org>> <mailto:Scons-users at scons.org
>         <mailto:Scons-users at scons.org>
>                 <mailto:Scons-users at scons.org
>         <mailto:Scons-users at scons.org>>>
>                         <mailto:Scons-users at scons.org
>         <mailto:Scons-users at scons.org>
>                 <mailto:Scons-users at scons.org
>         <mailto:Scons-users at scons.org>> <mailto:Scons-users at scons.org
>         <mailto:Scons-users at scons.org>
>                 <mailto:Scons-users at scons.org
>         <mailto:Scons-users at scons.org>>>>
>
>                 https://pairlist4.pair.net/mailman/listinfo/scons-users
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users>
>                 <https://pairlist4.pair.net/mailman/listinfo/scons-users
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users>>
>
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users>
>                 <https://pairlist4.pair.net/mailman/listinfo/scons-users
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users>>>
>
>                 <https://pairlist4.pair.net/mailman/listinfo/scons-users
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users>
>                 <https://pairlist4.pair.net/mailman/listinfo/scons-users
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users>>
>
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users>
>                 <https://pairlist4.pair.net/mailman/listinfo/scons-users
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users>>>>
>
>                             _______________________________________________
>                             Scons-users mailing list
>                             Scons-users at scons.org
>         <mailto:Scons-users at scons.org> <mailto:Scons-users at scons.org
>         <mailto:Scons-users at scons.org>>
>                 <mailto:Scons-users at scons.org
>         <mailto:Scons-users at scons.org> <mailto:Scons-users at scons.org
>         <mailto:Scons-users at scons.org>>>
>                         <mailto:Scons-users at scons.org
>         <mailto:Scons-users at scons.org>
>                 <mailto:Scons-users at scons.org
>         <mailto:Scons-users at scons.org>> <mailto:Scons-users at scons.org
>         <mailto:Scons-users at scons.org>
>                 <mailto:Scons-users at scons.org
>         <mailto:Scons-users at scons.org>>>>
>
>                 https://pairlist4.pair.net/mailman/listinfo/scons-users
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users>
>                 <https://pairlist4.pair.net/mailman/listinfo/scons-users
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users>>
>
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users>
>                 <https://pairlist4.pair.net/mailman/listinfo/scons-users
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users>>>
>
>                 <https://pairlist4.pair.net/mailman/listinfo/scons-users
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users>
>                 <https://pairlist4.pair.net/mailman/listinfo/scons-users
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users>>
>
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users>
>                 <https://pairlist4.pair.net/mailman/listinfo/scons-users
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users>>>>
>
>
>
>
>                         _______________________________________________
>                         Scons-users mailing list
>                         Scons-users at scons.org
>         <mailto:Scons-users at scons.org> <mailto:Scons-users at scons.org
>         <mailto:Scons-users at scons.org>>
>                 <mailto:Scons-users at scons.org
>         <mailto:Scons-users at scons.org> <mailto:Scons-users at scons.org
>         <mailto:Scons-users at scons.org>>>
>
>         https://pairlist4.pair.net/mailman/listinfo/scons-users
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users>
>                 <https://pairlist4.pair.net/mailman/listinfo/scons-users
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users>>
>
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users>
>                 <https://pairlist4.pair.net/mailman/listinfo/scons-users
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users>>>
>
>                     _______________________________________________
>                     Scons-users mailing list
>                     Scons-users at scons.org <mailto:Scons-users at scons.org>
>         <mailto:Scons-users at scons.org <mailto:Scons-users at scons.org>>
>                 <mailto:Scons-users at scons.org
>         <mailto:Scons-users at scons.org> <mailto:Scons-users at scons.org
>         <mailto:Scons-users at scons.org>>>
>
>         https://pairlist4.pair.net/mailman/listinfo/scons-users
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users>
>                 <https://pairlist4.pair.net/mailman/listinfo/scons-users
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users>>
>
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users>
>                 <https://pairlist4.pair.net/mailman/listinfo/scons-users
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users>>>
>
>
>
>
>                 _______________________________________________
>                 Scons-users mailing list
>                 Scons-users at scons.org <mailto:Scons-users at scons.org>
>         <mailto:Scons-users at scons.org <mailto:Scons-users at scons.org>>
>                 https://pairlist4.pair.net/mailman/listinfo/scons-users
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users>
>                 <https://pairlist4.pair.net/mailman/listinfo/scons-users
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users>>
>
>             _______________________________________________
>             Scons-users mailing list
>             Scons-users at scons.org <mailto:Scons-users at scons.org>
>         <mailto:Scons-users at scons.org <mailto:Scons-users at scons.org>>
>             https://pairlist4.pair.net/mailman/listinfo/scons-users
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users>
>             <https://pairlist4.pair.net/mailman/listinfo/scons-users
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users>>
>
>
>
>
>         _______________________________________________
>         Scons-users mailing list
>         Scons-users at scons.org <mailto:Scons-users at scons.org>
>         https://pairlist4.pair.net/mailman/listinfo/scons-users
>         <https://pairlist4.pair.net/mailman/listinfo/scons-users>
>
>     _______________________________________________
>     Scons-users mailing list
>     Scons-users at scons.org <mailto:Scons-users at scons.org>
>     https://pairlist4.pair.net/mailman/listinfo/scons-users
>     <https://pairlist4.pair.net/mailman/listinfo/scons-users>
>
>
>
>
> _______________________________________________
> Scons-users mailing list
> Scons-users at scons.org
> https://pairlist4.pair.net/mailman/listinfo/scons-users
>


More information about the Scons-users mailing list