[Scons-dev] Question: VersionedLibrary, Name/Path in Node class...

Dirk Bächle tshortik at gmx.de
Tue Nov 25 17:03:16 EST 2014


On 25.11.2014 22:52, Gary Oberbrunner wrote:
> I'd certainly think those two should stay in sync (name and path).
>
This would then mean that either VersionedSharedLibrary() in 
engine/SCons/Tool/__init__.py, ll. 336 :

     if version:
         # here we need the full pathname so the links end up in the 
right directory
         if Verbose:
             print "VerShLib: target lib is = ", map(str, target)
             print "VerShLib: name is = ", target[0].name
             print "VerShLib: dir is = ", target[0].dir.path
         libname = target[0].path
         linknames = VersionShLibLinkNames(version, libname, env)

or the test in "test/LINK/VersionedLib.py" has to get fixed. At the 
moment, the test only passes because "target[0].path" doesn't contain 
the version number at its end.

Dirk

> On Tue, Nov 25, 2014 at 3:37 PM, Dirk Bächle <tshortik at gmx.de 
> <mailto:tshortik at gmx.de>> wrote:
>
>     Hi fellow devs,
>
>     I'm currently working on my patch for switching the Node class to
>     __slots__, and there is one final test in the suite which doesn't
>     pass and keeps bugging me: test/LINK/VersionedLib.py.
>
>     The basic problem seems to be that the "shlib_emitter" in the
>     "link.py" tool rewrites the name of the target node:
>
>     ===================================================
>
>     def shlib_emitter(target, source, env):
>         Verbose = True
>         platform = env.subst('$PLATFORM')
>         for tgt in target:
>             tgt.attributes.shared = 1
>         try:
>             # target[0] comes in as libtest.so. Add the version extensions
>             version = env.subst('$SHLIBVERSION')
>             if version:
>                 version_names = shlib_emitter_names(target, source, env)
>                 # change the name of the target to include the version
>     number
>                 target[0].name = version_names[0]
>                 for name in version_names:
>                     env.SideEffect(name, target[0])
>                     env.Clean(target[0], name)
>                     if Verbose:
>                         print "shlib_emitter: add side effect - ",name
>         except KeyError:
>             version = None
>         return (target, source)
>
>     ===================================================
>
>     but it doesn't amend the ".path" at the same time, so both entries
>     are actually out of synch in the following:
>
>       name = "libtest.so.2.5.4"
>       path = "libtest.so"
>
>     for the test example.
>
>     My question: Do we allow the name of a Node to be anything, or (as
>     I assumed until now) is the "name" always the trailing part of the
>     "path"?
>
>     Best regards,
>
>     Dirk
>
>     _______________________________________________
>     Scons-dev mailing list
>     Scons-dev at scons.org <mailto:Scons-dev at scons.org>
>     https://pairlist2.pair.net/mailman/listinfo/scons-dev
>
>
>
>
> -- 
> Gary

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist2.pair.net/pipermail/scons-dev/attachments/20141125/8a5247ef/attachment.html>


More information about the Scons-dev mailing list