[Scons-users] SCons 2.3.6: SharedLibrary + SHLIBVERSION messes up with dependencies

William Blevins wblevins001 at gmail.com
Tue Aug 11 14:49:08 EDT 2015


On Tue, Aug 11, 2015 at 1:08 PM, Paweł Tomulik <ptomulik at meil.pw.edu.pl>
wrote:

> W dniu 11.08.2015 o 18:19, William Blevins pisze:
> > Did the dependency tree change actually cause a problem or was it just
> > something you noticed?  The output in 2.3.4 and earlier seems a bit
> > strange to me, but it may be expected.
>
>
> I noticed change in dependency tree and I believe this causes the issue.
> There is difference in the node named "main" (the program being build).
> Until now it looked like:
>
>   +-main
>   | +-main.o
>   | | +-main.cpp
>   | | +-foo.hpp
>   | | +-/usr/bin/g++
>   | +-/usr/bin/g++
>   | +-libfoo.so.0.1.2
>   |   +-foo.os
>   |     +-foo.cpp
>   |     +-/usr/bin/g++
>
> but now it looks like
>
>   +-main
>   | +-main.o
>   | | +-main.cpp
>   | | +-foo.hpp
>   | | +-/usr/bin/g++
>   | +-/usr/bin/g++
>
> The missing part is libfoo.so.0.1.2 now. In the project I refer to the
> generated library libfoo.so.0.1.2 by name as follows:
>
> env.Program('main.cpp', LIBS = ['foo'])
>
> It worked perfectly until 2.3.6. Perhaps some node lookup algorithm
> changed and the node can't be found anymore by name, so the expected
> dependency is no longer generated?
>

So you confirmed that it also worked in 2.3.5 or did you mean 2.3.4?

I will try to take a look at it tonight when I have access to the right
machines.  I'm just trying to narrow down the possible commits down as much
as possible.


>
>
> > On Tue, Aug 11, 2015 at 12:13 PM, William Blevins <wblevins001 at gmail.com
> > <mailto:wblevins001 at gmail.com>> wrote:
> >
> >
> >     On Tue, Aug 11, 2015 at 4:52 AM, Paweł Tomulik
> >     <ptomulik at meil.pw.edu.pl <mailto:ptomulik at meil.pw.edu.pl>> wrote:
> >
> >         W dniu 11.08.2015 o 03:47, William Blevins pisze:
> >         > You still haven't provided much info about your
> configuration.  What
> >         > platform are you on, etc...
> >         >
> >
> >         Debian testing
> >         python 2.7.10
> >
> >
> >     I was looking through the commits for 2.3.5 and noticed that there
> >     were changes with shared libs for the Solaris platform, so it
> >     *could* have been a data point.
> >
> >
> >
> >
> >         > On Mon, Aug 10, 2015 at 10:31 AM, Paweł Tomulik <
> ptomulik at meil.pw.edu.pl <mailto:ptomulik at meil.pw.edu.pl>
> >         > <mailto:ptomulik at meil.pw.edu.pl <mailto:
> ptomulik at meil.pw.edu.pl>>> wrote:
> >         >
> >         >     W dniu 10.08.2015 o 11:55, Paweł Tomulik pisze:
> >         >     > After recent upgrade of SCons my projects can't be built
> anymore.
> >         >     >
> >         >     > I use SharedLibrary builder with SHLIBVERSION argument,
> but now
> >         >     (2.3.6)
> >         >     > the softlinks generated by SharedLibrary are not seen as
> dependency.
> >         >     >
> >         >     > I attach a minimal example, that replicates the bug(?).
> The
> >         >     mini-project
> >         >     > builds one shared library (libfoo.so) and one program
> (main) which
> >         >     uses
> >         >     > the library. The Sconstruct is as simple as:
> >         >     >
> >         >     > env = Environment()
> >         >     > env.AppendUnique(CPPPATH = ['.'], LIBPATH = ['.'])
> >         >     > env.Program('main.cpp', LIBS = ['foo'])
> >         >     > env.SharedLibrary('foo', 'foo.cpp', SHLIBVERSION =
> '0.1.2')
> >         >     >
> >         >     >
> >         >     [..]
> >         >
> >         >     Dependency tree generated by 2.3.1 with SHLIBVERSION:
> >         >
> >         >
> >         > If this worked on 2.3.4, then why did you need to go back to
> 2.3.1?
> >         >
> >
> >         It was easier too me, I use apt-get/debian repositories to
> install
> >         packages. Currently available versions are
> >
> >         2.3.6 (Debian testing/Debian unstable)
> >         2.3.1 (Debian stable).
> >         2.1.9 (Debian oldstable)
> >         2.0.0 (Debian oldoldstable)
> >
> >         https://packages.debian.org/search?keywords=scons
> >
> >         2.3.4 is currently unavailable via Debian repositories.
> >
> >         On other PC I managed to keep the 2.3.4, there is the output of
> >         --tree=all for scons 2.3.4
> >
> >         ptomulik at tea:$ scons --tree=all
> >         scons: Reading SConscript files ...
> >         scons: done reading SConscript files.
> >         scons: Building targets ...
> >         g++ -o libfoo.so.0.1.2 -shared -Wl,-Bsymbolic
> >         -Wl,-soname=libfoo.so.0
> >         foo.os -L.
> >         +-.
> >           +-SConstruct
> >           +-foo.cpp
> >           +-foo.hpp
> >           +-foo.os
> >           | +-foo.cpp
> >           | +-/usr/bin/g++
> >           +-libfoo.so.0.1.2
> >           | +-foo.os
> >           |   +-foo.cpp
> >           |   +-/usr/bin/g++
> >           +-libfoo.so.0
> >           | +-libfoo.so.0.1.2
> >           |   +-foo.os
> >           |     +-foo.cpp
> >           |     +-/usr/bin/g++
> >           +-libfoo.so.0.1
> >           | +-libfoo.so.0.1.2
> >           |   +-foo.os
> >           |     +-foo.cpp
> >           |     +-/usr/bin/g++
> >           +-libfoo.so.0.1.2
> >           | +-libfoo.so.0.1.2
> >
> >
> > This dependency here worries me slightly because SCons either thinks
> > that libfoo.so.0.1.2 depends on itself (and should have thrown a cycle
> > detection error) or its a bug with the tree printer and its printing
> > what the link is pointing to rather than the link itself.  I expect that
> > the latter is true.
> >
> >
> >           |   +-foo.os
> >           |     +-foo.cpp
> >           |     +-/usr/bin/g++
> >           +-main
> >           | +-main.o
> >           | | +-main.cpp
> >           | | +-foo.hpp
> >           | | +-/usr/bin/g++
> >           | +-/usr/bin/g++
> >           | +-libfoo.so.0.1.2
> >           |   +-foo.os
> >           |     +-foo.cpp
> >           |     +-/usr/bin/g++
> >           +-main.cpp
> >           +-main.o
> >             +-main.cpp
> >             +-foo.hpp
> >             +-/usr/bin/g++
> >
> >         >
> >         >
> >         >     +-.
> >         > [...]
> >
> >         --
> >         Paweł Tomulik, tel. (22) 234 7925
> >         Instytut Techniki Lotniczej i Mechaniki Stosowanej
> >         Politechnika Warszawska
> >         _______________________________________________
> >         Scons-users mailing list
> >         Scons-users at scons.org <mailto: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
> >
>
>
> --
> Pawel Tomulik
> _______________________________________________
> 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/20150811/83f85e80/attachment.html>


More information about the Scons-users mailing list