[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