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

Paweł Tomulik ptomulik at meil.pw.edu.pl
Tue Aug 11 13:08:25 EDT 2015


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?


> 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


More information about the Scons-users mailing list