[Scons-users] Mixing VariantDirs with "in-tree" build

Tobias Herzog pasdVn3 at gmx.de
Tue Jan 29 16:13:14 EST 2019


Hmm, don't know if I understand you correctly, but if A/B/foo is a
regular file (i.e. not a generated file, a build target) everything
works as expected, because scons looks up build/B/foo (which is in fact
not there, because i Use duplicate=0 with the VariantDir) in the
original directory A/B/foo.That is also why the build succeeds, when I
execute the two commands below in reverse order (because I "manually"
build A/B/foo before).
Anyway, I accept the answer that this is intended behavior :)


Am Dienstag, den 29.01.2019, 09:17 -0800 schrieb Bill Deegan:
> Your issue has nothing to do with whether the file foo is generated
> or just a regular file.
> You've created via your variantdir usage (as far as scons is
> concerned) a tree which looks like this:
> 
> 
> +-SConstruct
> 
> +-A
> 
>   +-SConscript
> 
>   +-B
> 
>     +-SConscript
> 
>     +-foo.src
>     +-foo <- to be built
> +-build  <-- this is the directory scons "works in" when evaluating
> the SConscript below
>    +- SConscript
>    +- B <-- you're looking for this which doesn't and won't exist
>       +- foo <-- and this which doesn't and won't exist.
> 
> Does that help?
> 
> 
> 
> 
> 
> On Mon, Jan 28, 2019 at 11:30 PM pasdVn <pasdVn3 at gmx.de> wrote:
> > Thanks for your quick reply!
> > 
> > I thought that SCons is looking up a node via srcnode() and thus in
> > the original location, if it is not found in the current variant
> > dir, but obviously this is not the case here, because A/B/foo is a
> > generate file (i.e. a target), right?
> > 
> > 
> > Am 29. Januar 2019 00:51:33 MEZ schrieb Bill Deegan <
> > bill at baddogconsulting.com>:
> > > See below
> > > 
> > > On Mon, Jan 28, 2019 at 12:33 PM Tobias Herzog <pasdVn3 at gmx.de>
> > > wrote:
> > > > Hi scons users,
> > > > 
> > > > 
> > > > 
> > > > consider the following demo project:
> > > > 
> > > > 
> > > > 
> > > > +-SConsctuct
> > > > 
> > > > +-A
> > > > 
> > > >   +-SConscript
> > > > 
> > > >   +-B
> > > > 
> > > >     +-SConscript
> > > > 
> > > >     +-foo.src
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > With SConstruct:
> > > > 
> > > >         SConscript('A/B/SConscript')
> > > > 
> > > >         SConscript('A/SConscript', variant_dir='build',
> > > > duplicate=0)
> > > > 
> > > > 
> > > > 
> > > > A/SConscript:
> > > > 
> > > >         Command(source='B/foo',
> > > > 
> > > >                 target='bar',
> > > > 
> > > >                 action='cat $SOURCE > $TARGET')
> > > > 
> > > > A/B/SConscript:
> > > > 
> > > >         Command(target='foo',
> > > > 
> > > >                 source='foo.src',
> > > > 
> > > >                 action='cat $SOURCE > $TARGET')
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > No I do:
> > > > 
> > > > > scons -Q --tree=all build/bar
> > > > 
> > > > scons: *** [build/bar] Source `A/B/foo' not found, needed by
> > > > target
> > > > 
> > > > `build/bar'.
> > > > 
> > > > +-build/bar
> > > > 
> > > >   +-A/B/foo
> > > > 
> > > >   +-/bin/cat
> > > > 
> > > > 
> > > > 
> > > > and
> > > > 
> > > > >scons -Q --tree=all A/B/foo
> > > > 
> > > > cat A/B/foo.src > A/B/foo
> > > > 
> > > > +-A/B/foo
> > > > 
> > > >   +-A/B/foo.src
> > > > 
> > > >   +-/bin/cat
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > I know that this is a quite strage project setup, but
> > > > nevertheless I
> > > > 
> > > > would expect scons to detect the depencies correct. Is this a
> > > > bug, or
> > > > 
> > > > am I missing something?
> > > 
> > > You're missing something.By saying:
> > > SConscript('A/SConscript', variant_dir='build', duplicate=0)
> > > This is the same as:VariantDir('build','A',
> > > duplicate=0)SConscript('build/SConscript')
> > > So when you're asking for B/foo from that SConscript, you're
> > > actually asking for build/B/foo.If you changed it to "#/A/B/foo"
> > > it would work, or "../A/B/foo"
> > >  
> > > > If I Return/Export the foo-node and use it in the Command in
> > > > 
> > > > A/SConscript it works as intended.
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > Thanks,
> > > > 
> > > > Tobias
> > > > 
> > > > 
> > > > 
> > > > _______________________________________________
> > > > 
> > > > 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
> listScons-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/20190129/ae6af170/attachment.html>


More information about the Scons-users mailing list