[Scons-users] Scons none-deterministic behavior for incremental build

Bill Deegan bill at baddogconsulting.com
Tue Dec 4 16:15:30 EST 2018


Is "build/configs/qemu_arm_vexpress/arm3/config/config.h" a generated file?
Or checked in?

It's very unlikely to be set ordering. set's should only be used for
membership checks not iteration in the SCons codebase.

We're actively debugging similar issue.

-Bill

On Tue, Dec 4, 2018 at 3:23 PM Hua Yanghao <huayanghao at gmail.com> wrote:

> I does that a lot ... but a quick try to make sure no
> LIBS/LIBPATH/CPPPATH etc. is touched after Object() is being called,
> still shows the same 50~70% rebuild of the entire project.
> I am not using any parallel build, and somehow scons is having a very
> none-deterministic behavior.
>
> Actually I fixed partially the issue (e.g. in simpler build the
> incremental builds now works fine), due to python set() is having a
> random order for every run. I am thinking maybe scons is somehow also
> depends on the ordering of a set()? And when it happens to be the same
> order then no rebuild?
> On Tue, Dec 4, 2018 at 9:00 PM Oscar Anson <oscar at solidangle.com> wrote:
> >
> > Hi,
> >
> > Not sure if this could be related, but a similar issue happened to me
> where I get a relink of a shared library without changing anything in the
> project. It happened that I was setting the environment LIBS and LIBPATH
> after calling the builder of the library.
> >
> > El mar., 4 dic. 2018 20:55, Hua Yanghao <huayanghao at gmail.com> escribió:
> >>
> >> Dear Scons Experts,
> >> I recently hit on a very strange problem where scons incremental
> >> builds sometimes OK, sometimes the entire project is re-built.
> >>
> >> scons: 3.0.1
> >> python: 3.6.7
> >>
> >> --debug=explain gives below example trace:
> >> scons: rebuilding
> >> `build/configs/qemu_arm_vexpress/arm3/config/config.h' because
> >> AlwaysBuild() is specified
> >> __CONFIG build/configs/qemu_arm_vexpress/arm3/config/config.h
> >> scons: rebuilding
> >> `build/configs/qemu_arm_vexpress/arm3/firmware/arch/armv7/arch_init.o'
> >> because:
> >>            `firmware/arch/armv7/arch_init.c' is no longer a dependency
> >>            `firmware/arch/armv7/arch_init.c' is a new dependency
> >>
> >> It seems some how the C file itself is removed and re-added as the
> >> Object() dependency, and causes rebuild. However this is *NOT*
> >> *always* the case. Sometime the rebuild doesn't happen.
> >>
> >> I failed to create a minimal example that can show this issue so far,
> >> but in the production environment it is about 50% full-rebuild and 50%
> >> incremental re-build.
> >>
> >> Any thoughts or hints?
> >>
> >> Thanks,
> >> Yanghao
> >> _______________________________________________
> >> 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/20181204/1870b8e5/attachment-0001.html>


More information about the Scons-users mailing list