[Scons-users] Does not copy/link my file target/lib when needed?

edA-qa mort-ora-y eda-qa at disemia.com
Sun Jan 28 03:35:38 EST 2018


Yeah, the check was a remnant for when I wasn't copying the file.

I changed it as you suggested, copy the file, drop the conf, and just
depend on that library. It always copies the the file now.

Thanks.


On 27/01/18 22:59, Bill Deegan wrote:
>
>
> On Sat, Jan 27, 2018 at 1:43 PM, edA-qa mort-ora-y <eda-qa at disemia.com
> <mailto:eda-qa at disemia.com>> wrote:
>
>     The library is built as part of an external build process (LLVM
>     build scripts). I specify the directory to it as part of my scons
>     variables.
>
>     The reason to link it (or copy would be fine), is because I need
>     the linker to create a relative RPATH to the library (there are no
>     flags to configure this on Linux/OSX linkers other than just
>     putting the library beside the other libraries/EXEs).
>
>     I could possibly remove it from the Check step and do my own
>     checking.  Originally I wasn't concerned about RPATH, thus it was
>     setup differently.  I'm not sure why putting in it the check
>     though prevents the other step from updating it.
>
>
> It's not preventing it from checking it, it's that the check will
> happen first and thus not find it where the symlink will put it.
>
> Not sure why you even need to check it.
> User specifies location on command line:
> scons MY_LIB=/home/balh/lib/libabc.so  (or MY_LIB_PATH=/home/blah/lib )
> You have your programs link against
> variant_dir/libs
> You have your symlink or whatever copy/link the file form MY_LIBPATH
> to variant_dir/libs
>
> Then it just works..
> If the file is not there, the build will fail.
>
> What are you trying to achieve by the check other than that the file
> is present and linkable?
>
>  
>
>
>
>
>     On 27/01/18 22:00, Bill Deegan wrote:
>>     Configure contexts are usually evaluated first.
>>
>>     Why are you doing this?
>>
>>     If you're building the library, it's not clear why you need to
>>     have Configure check if the library exists...
>>     Is there some strange possibility that the library you build
>>     cannot be linked against?
>>
>>     -Bill
>>
>>     On Sat, Jan 27, 2018 at 12:36 AM, edA-qa mort-ora-y
>>     <eda-qa at disemia.com <mailto:eda-qa at disemia.com>> wrote:
>>
>>         I'm trying to get a library file linked in a variant_dir
>>         before the
>>         configuration is complete (this is in order to get the rpath
>>         references
>>         correct). It links the file once, but it does not copy it
>>         again if the
>>         destination is deleted.
>>
>>         My SConstruct
>>
>>                 baseEnv = Environment(
>>                     BUILD_DIR='build'
>>                     )
>>                 Export('baseEnv')
>>                 baseEnv.SConscript('src/SConscript',
>>         variant_dir=baseEnv['BUILD_DIR'], duplicate=0)
>>                 Default(baseEnv['BUILD_DIR'])
>>
>>
>>         My src/SConscript
>>
>>             import os
>>
>>             Import('baseEnv')
>>
>>             def SymLink():
>>                 def Impl(target, source, env):
>>                     print( "SymLink" )
>>                     os.symlink(os.path.abspath(str(source[0])),
>>         os.path.abspath(str(target[0])))
>>                     return 0
>>
>>                 return Action(Impl, "linking file to $TARGET from
>>         $SOURCE" )
>>
>>
>>             env = baseEnv.Clone()
>>             env.Append( LIBPATH = './' )
>>
>>             lib_some = 'some'
>>             lib_some_ref = 'libsome.so'
>>
>>             env.Command( lib_some_ref, '../lib/' + lib_some_ref,
>>         SymLink() )
>>
>>             conf = Configure(env)
>>             conf.CheckLib( lib_some )
>>             env = conf.Finish()
>>
>>         You can place any shared library into lib/libsome.so to test. I'm
>>         testing on Linux at the moment.
>>
>>         I've tried env.Requires( '.', ... ) with the Command as well,
>>         but no luck.
>>
>>         It also doesn't appear to be an issue with the Symlink action
>>         since a
>>         Copy action has the same problem:
>>
>>         env.Command( lib_some_ref, '../lib/' + lib_some_ref,
>>         Copy("$TARGET","$SOURCE")
>>
>>         --
>>         edA-qa mort-ora-y
>>         http://mortoray.com/
>>
>>         Leaf - the language we always wanted
>>         http://leaflang.org/
>>
>>         _______________________________________________
>>         Scons-users mailing list
>>         Scons-users at scons.org <mailto:Scons-users at scons.org>
>>         https://pairlist4.pair.net/mailman/listinfo/scons-users
>>         <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
>>     <https://pairlist4.pair.net/mailman/listinfo/scons-users>
>
>
>     -- 
>     edA-qa mort-ora-y 
>     http://mortoray.com/
>
>     Leaf - the language we always wanted
>     http://leaflang.org/
>
>
>     _______________________________________________
>     Scons-users mailing list
>     Scons-users at scons.org <mailto:Scons-users at scons.org>
>     https://pairlist4.pair.net/mailman/listinfo/scons-users
>     <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


-- 
edA-qa mort-ora-y 
http://mortoray.com/

Leaf - the language we always wanted
http://leaflang.org/

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20180128/0db9e1e7/attachment.html>


More information about the Scons-users mailing list