Re: Mixing VariantDirs with "in-tree" build

Bill Deegan <[email protected]>
Newsgroups gmane.comp.programming.tools.scons.user
Message-ID <CAEyG4CHJ+OPNE4+ru_EV2D+2GXc+Q4H6Jaf82qDi-QPi3OAdOw@mail.gmail.com>
so if you swap the order it works?


        SConscript('A/SConscript', variant_dir='build', duplicate=0)
        SConscript('A/B/SConscript')


On Tue, Jan 29, 2019 at 1:13 PM Tobias Herzog <[email protected]> wrote:

> 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 <[email protected]> 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 <
> [email protected]>:
>
> See below
>
> On Mon, Jan 28, 2019 at 12:33 PM Tobias Herzog <[email protected]> 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
> [email protected]
> https://pairlist4.pair.net/mailman/listinfo/scons-users
>
> _______________________________________________
> Scons-users mailing list
> [email protected]
> https://pairlist4.pair.net/mailman/listinfo/scons-users
>
> _______________________________________________
>
> Scons-users mailing list
>
> [email protected]
>
> https://pairlist4.pair.net/mailman/listinfo/scons-users
>
>
> _______________________________________________
> Scons-users mailing list
> [email protected]
> https://pairlist4.pair.net/mailman/listinfo/scons-users
>

_______________________________________________
Scons-users mailing list
[email protected]
https://pairlist4.pair.net/mailman/listinfo/scons-users
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.