[Scons-users] scons-local-2.5.1 build and clean shows random failure

Hua Yanghao huayanghao at gmail.com
Wed Jul 26 15:49:13 EDT 2017


Bill, I am still not 100% sure scons is fully bug free in this case.
Remember this failure is only failing about 10%-40% of the runs.

e.g. I keep doing scons -c and 3 out of 10 clean will fail.

Scons is known for reliable builds shouldn't it always fail
and always detect the cyclic dependency? And remember the
error is saying "scons internal error", dependency not found
for a cyclic dependency. scons really detected that something
goes wrong internally ;-)

On Wed, Jul 26, 2017 at 5:15 PM, Bill Deegan <bill at baddogconsulting.com> wrote:
> There is not general issue with VariantDir(), just the way you used it
> created a dependency cycle.
>
>
> output/a was created from .
> Then next run
> output/a/output/a was created from . into output/a
> Now output/a/output/a depends on output/a... see the loop?
>
> On Wed, Jul 26, 2017 at 4:53 AM, Hua Yanghao <huayanghao at gmail.com> wrote:
>>
>> Bill, it works now!
>>
>> I overlooked one thing the SConscript variant_dir should point to
>> its specific output dir not the global one for all SConscript file.
>>
>> +        variant_dir = os.path.join(output, folder)
>> +        lib, objs, objs_all = ENV.SConscript(true_scons_file,
>> variant_dir=variant_dir)
>>
>> This this change I am able to build successfully. The other changes
>> that required is
>> for the include path you need to specific the "true include" path not
>> the one that is
>> going to be copied into the output/linux64_full folder. With this two
>> changes everything
>> works fine with 100 build clean -j8 not a single time reproduced any
>> issue.
>>
>> Even though I think I still don't fully understood the reason why
>> VariantDir() caused
>> the issue. should VariantDir() be removed/deprecated or should it be
>> changed in a way
>> that it has the same behavior of variant_dir parameter to
>> env.SConscript()?
>>
>> Thanks a lot for your help.
>>
>> On Wed, Jul 26, 2017 at 12:22 PM, Hua Yanghao <huayanghao at gmail.com>
>> wrote:
>> > I tried first with the SConscript variant_dir parameter but seems it
>> > doesn't work:
>> >
>> > +        lib, objs, objs_all = ENV.SConscript(true_scons_file,
>> > variant_dir=output)
>> >
>> > And the result is:
>> > hua at grass:~/git/usw $ configs/linux64_full.py
>> > Running : ./tools/scons config=linux64_full.py
>> > scons: Reading SConscript files ...
>> > output dir: output/linux64_full
>> > output dir: output/linux64_full
>> >
>> > scons: *** 'output/linux64_full' already has a source directory:
>> > 'arch/linux64_full'.
>> > File "/home/hua/git/usw/site_scons/common.py", line 61, in BuildObjList
>> > hua at grass:~/git/usw $
>> >
>> > I found that if I want the the build to happen in the
>> > output/linux64_full folder
>> > I have to call SConscript file from e.g.
>> > output/linux64_full/src/SConscript instead of
>> > the top level true SConscript file (src/SConscript).
>> >
>> > Did I use it wrong?
>> >
>> > On Wed, Jul 26, 2017 at 12:39 AM, Bill Deegan
>> > <bill at baddogconsulting.com> wrote:
>> >> Yes.. You created dependency cycle..
>> >> But only after a build.
>> >> Thus why it's showing up only on clean...
>> >>
>> >> Once you build you have output/linux64_build
>> >> Then you say map . to output/linux_64build  which ends up with a
>> >> virtual
>> >> subdirectory via variantdir of output/linux64_build/output/linux_64...
>> >>
>> >> see the issue.
>> >>
>> >> Variantdirs should never have parent/child relationships.
>> >>
>> >> I'd advice instead of using VariantDir(), use variant_dir in your
>> >> SConscript
>> >> call to map like this:
>> >>
>> >> SConscript('src/SConscript',variant_dir='output/linux64_build/src')
>> >> etc..
>> >>
>> >> See if doing that resolves the issue?
>> >>
>> >> On Tue, Jul 25, 2017 at 1:03 PM, Hua Yanghao <huayanghao at gmail.com>
>> >> wrote:
>> >>>
>> >>> Yes, that's exactly how I used VariantDir. Any problem seen?
>> >>>
>> >>> On Tue, Jul 25, 2017 at 6:32 PM, Bill Deegan
>> >>> <bill at baddogconsulting.com>
>> >>> wrote:
>> >>> > Can you paste just the usage of VariantDir() from your build?
>> >>> >
>> >>> > Are you doing
>> >>> >
>> >>> > VariantDir('output/linux64_full','.') in your SConstruct?
>> >>> >
>> >>> >
>> >>> > On Tue, Jul 25, 2017 at 8:47 AM, Hua Yanghao <huayanghao at gmail.com>
>> >>> > wrote:
>> >>> >>
>> >>> >> I think I am in, can you see my message there? Got no response.
>> >>> >>
>> >>> >> On Tue, Jul 25, 2017 at 5:45 PM, Bill Deegan
>> >>> >> <bill at baddogconsulting.com>
>> >>> >> wrote:
>> >>> >> > goto:
>> >>> >> > http://webchat.freenode.net/
>> >>> >> >
>> >>> >> > pick any nickname
>> >>> >> > channel is "#scons"
>> >>> >> >
>> >>> >> > On Tue, Jul 25, 2017 at 8:43 AM, Hua Yanghao
>> >>> >> > <huayanghao at gmail.com>
>> >>> >> > wrote:
>> >>> >> >>
>> >>> >> >> On Tue, Jul 25, 2017 at 5:42 PM, Bill Deegan
>> >>> >> >> <bill at baddogconsulting.com>
>> >>> >> >> wrote:
>> >>> >> >> > so you see this most often when:
>> >>> >> >> >
>> >>> >> >> > scons -j <SOME NUMBER> -c ?
>> >>> >> >>
>> >>> >> >> Exactly, it fails most often with scons -j8 -c, very rare with
>> >>> >> >> scons
>> >>> >> >> -j8.
>> >>> >> >>
>> >>> >> >> > Any chance you can hop on the IRC channel?
>> >>> >> >> >
>> >>> >> >>
>> >>> >> >> If you give me an instruction for howto ... I could try, never
>> >>> >> >> really
>> >>> >> >> used
>> >>> >> >> IRC.
>> >>> >> >> _______________________________________________
>> >>> >> >> 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
>> >>> >
>> >>> >
>> >>> >
>> >>> > _______________________________________________
>> >>> > 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
>> >>
>> _______________________________________________
>> 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
>


More information about the Scons-users mailing list