[Scons-users] Caching and variant_dir

William Blevins wblevins001 at gmail.com
Fri Nov 20 14:20:24 EST 2015


Here is feedback from one of the project managers for a related questions:
http://stackoverflow.com/questions/10209961/source-code-compiled-from-a-repository-is-not-put-in-the-variant-dir-for-a-hie

If that link doesn't help your case, I may have to defer this question to
one of the project managers.  I am not as familiar with repository and
variantdir configurations as other pieces of the core SConstruct model.

V/R,
William

On Fri, Nov 20, 2015 at 6:58 PM, Glen Gibb <glen at barefootnetworks.com>
wrote:

> Thanks William,
>
> I played with a variant that moved the SConstruct file up a level of
> hierarchy.
>
> E.g.,
> /home/example/SConstruct:
> SConscript('src/sconscript', variant_dir='build')
>
> This does work as expected if all source files are in the src directory
> with the SConscript file.
>
> Unfortunately my build is a little more complicated complicated than my
> initial example. It pulls in files from an external repository, in addition
> to files sitting in the source directory. Here's a simplified version:
>
> CacheDir('/my_cache')
> Repository('/external/src')
> env = Environment()
> env.SharedLibrary('mylib', ['mylib.cpp', '#external_file.cpp'])
>
> The problem with this version is that external_file.os is generated in
> /home/example/src, rather than /home/example/build where I would expect to
> find it.
>
> Any idea how to make sure all output goes to the variant_dir, rather than
> the source dir?
>
> Thanks,
> Glen
>
>
> On Thu, Nov 19, 2015 at 11:51 PM, William Blevins <wblevins001 at gmail.com>
> wrote:
>
>> I think that this happens because the Node in question exists outside the
>> SConstruct directory tree.
>>
>> On Fri, Nov 20, 2015 at 4:28 AM, Glen Gibb <glen at barefootnetworks.com>
>> wrote:
>>
>>> Hi all,
>>>
>>> Caching does not behave as I expect when the variant_dir starts with
>>> '..' (i.e., pointing up a directory). In this case, caching uses the
>>> absolute path to the files, rather than the relative path I had hoped it
>>> would store.
>>>
>>> To illustrate, assume my source directory is /home/example/src. My
>>> sconsript file is:
>>>
>>> CacheDir('/my_cache')
>>> env = Environment()
>>> env.SharedLibrary('mylib', ['mylib.cpp'])
>>>
>>>
>>> The following SConscript line line:
>>>      SConscript('sconscript', variant_dir='build')
>>> results in caching storing a path beginning with build as I expect:
>>> 'build/mylib.so'
>>>
>>> However, the SConstruct line:
>>>      SConscript('sconscript', variant_dir='../build')
>>> results in caching storing the full path: '/home/example/build/mylib.so'
>>>
>>>
>>> Is there a way to stop scons from resolving the .. in my variant_dir to
>>> an absolute directory?
>>>
>>> Regards,
>>> Glen
>>>
>>> _______________________________________________
>>> Scons-users mailing list
>>> 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
>>
>>
>
> _______________________________________________
> Scons-users mailing list
> Scons-users at scons.org
> https://pairlist4.pair.net/mailman/listinfo/scons-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20151120/dfcc7df5/attachment-0001.html>


More information about the Scons-users mailing list