[Scons-users] Building versioned shared library fails when using MinGW
Bill Deegan
bill at baddogconsulting.com
Tue Nov 29 12:02:36 EST 2016
Ray,
On Mon, Nov 28, 2016 at 7:47 PM, Ray Speth <speth at darkmatter.mit.edu> wrote:
> 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.
>
I've never meant to imply that the mingw distribution would be the error.
Just how SCons creates the name for the versioned shared libraries. We aim
to match whatever each environments versioned shared library naming
standards are. And that is the basis for my query.
-Bill
>
> 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.v
>> ersion
>> <https://autotools.io/libtool/windows.html#libtool.windows.v
>> ersion>>
>>
>> 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
>>
>> _______________________________________________
> Scons-users mailing list
> Scons-users at scons.org
> https://pairlist4.pair.net/mailman/listinfo/scons-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20161129/e89e4b83/attachment-0001.html>
More information about the Scons-users
mailing list