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

Dirk Bächle tshortik at gmx.de
Tue Nov 25 15:37:46 EST 2014


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



More information about the Scons-dev mailing list