[Scons-users] Caching and variant_dir

Glen Gibb glen at barefootnetworks.com
Fri Nov 20 13:58:29 EST 2015


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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20151120/5937ce2d/attachment.html>


More information about the Scons-users mailing list