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

Paweł Tomulik ptomulik at meil.pw.edu.pl
Tue Aug 11 15:21:38 EDT 2015


W dniu 11.08.2015 o 20:49, William Blevins pisze:
> 
> On Tue, Aug 11, 2015 at 1:08 PM, Paweł Tomulik <ptomulik at meil.pw.edu.pl
> <mailto: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 meant 2.3.4, I haven't got opportunity to work on 2.3.5.


>  
> 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.
>  


Ok, thank you.


> 
> 
> 
>     > On Tue, Aug 11, 2015 at 12:13 PM, William Blevins <wblevins001 at gmail.com <mailto:wblevins001 at gmail.com>
>     > <mailto: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>
>     <mailto: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>>
>     >         > <mailto: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>
>     <mailto: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 <mailto:Scons-users at scons.org>
>     > https://pairlist4.pair.net/mailman/listinfo/scons-users
>     >
> 
> 
>     --
>     Pawel Tomulik
>     _______________________________________________
>     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


More information about the Scons-users mailing list