[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