On 5/29/21 6:09 AM, Martin Jansa wrote:
It's not directly caused by this upgrade, but it revealed interesting issue in incremental builds.

This is just to document some reproducible cases of "random build issues which magically disappeared after -c clean".

Building in the same TMPDIR with this gcc upgrade resulted in syslinux and libvpx failing with couple errors like:

make[4]: Leaving directory '/OE/build/luneos-honister/webos-ports/tmp-glibc/work/core2-64-webos-linux/syslinux/6.04-pre2-r1/syslinux-6.04-pre2/bios/com32/tools' make[4]: *** No rule to make target '/OE/build/luneos-honister/webos-ports/tmp-glibc/work/core2-64-webos-linux/syslinux/6.04-pre2-r1/recipe-sysroot-native/usr/lib/x86_64-webos-linux/gcc/x86_64-webos-linux/11.1.0/include/stdarg.h', needed by 'zlib/adler32.o'.  Stop.
make[4]: *** Waiting for unfinished jobs....
make[4]: Leaving directory '/OE/build/luneos-honister/webos-ports/tmp-glibc/work/core2-64-webos-linux/syslinux/6.04-pre2-r1/syslinux-6.04-pre2/bios/com32/lib' make[3]: *** [/OE/build/luneos-honister/webos-ports/tmp-glibc/work/core2-64-webos-linux/syslinux/6.04-pre2-r1/syslinux-6.04-pre2/com32/Makefile:7: lib] Error 2 make[3]: Leaving directory '/OE/build/luneos-honister/webos-ports/tmp-glibc/work/core2-64-webos-linux/syslinux/6.04-pre2-r1/syslinux-6.04-pre2/bios/com32' make[2]: *** [/OE/build/luneos-honister/webos-ports/tmp-glibc/work/core2-64-webos-linux/syslinux/6.04-pre2-r1/syslinux-6.04-pre2/Makefile:347: install] Error 2 make[2]: Leaving directory '/OE/build/luneos-honister/webos-ports/tmp-glibc/work/core2-64-webos-linux/syslinux/6.04-pre2-r1/syslinux-6.04-pre2/bios' make[1]: *** [/OE/build/luneos-honister/webos-ports/tmp-glibc/work/core2-64-webos-linux/syslinux/6.04-pre2-r1/syslinux-6.04-pre2/Makefile:257: bios] Error 2 make[1]: Leaving directory '/OE/build/luneos-honister/webos-ports/tmp-glibc/work/core2-64-webos-linux/syslinux/6.04-pre2-r1/syslinux-6.04-pre2'
make: *** [Makefile:102: install] Error 2
ERROR: oe_runmake failed

Rebuilding from scratch fixes the issue and the 11.1.0 directory was referenced in many *.o.d files:

--- 6.04-pre2-r1-broken/syslinux-6.04-pre2/bios/com32/libupload/.upload_srec.o.d        2021-05-24 09:56:57.390268171 +0200 +++ 6.04-pre2-r1/syslinux-6.04-pre2/bios/com32/libupload/.upload_srec.o.d     2021-05-29 14:12:45.670506782 +0200
@@ -7,7 +7,7 @@
/OE/build/luneos-honister/webos-ports/tmp-glibc/work/core2-64-webos-linux/syslinux/6.04-pre2-r1/syslinux-6.04-pre2/com32/include/bitsize32/stddef.h \ /OE/build/luneos-honister/webos-ports/tmp-glibc/work/core2-64-webos-linux/syslinux/6.04-pre2-r1/syslinux-6.04-pre2/com32/include/stdio.h \ /OE/build/luneos-honister/webos-ports/tmp-glibc/work/core2-64-webos-linux/syslinux/6.04-pre2-r1/syslinux-6.04-pre2/com32/include/stdarg.h \ - /OE/build/luneos-honister/webos-ports/tmp-glibc/work/core2-64-webos-linux/syslinux/6.04-pre2-r1/recipe-sysroot-native/usr/lib/x86_64-webos-linux/gcc/x86_64-webos-linux/11.1.0/include/stdarg.h \ + /OE/build/luneos-honister/webos-ports/tmp-glibc/work/core2-64-webos-linux/syslinux/6.04-pre2-r1/recipe-sysroot-native/usr/lib/x86_64-webos-linux/gcc/x86_64-webos-linux/11.1.1/include/stdarg.h \ /OE/build/luneos-honister/webos-ports/tmp-glibc/work/core2-64-webos-linux/syslinux/6.04-pre2-r1/syslinux-6.04-pre2/com32/include/inttypes.h \ /OE/build/luneos-honister/webos-ports/tmp-glibc/work/core2-64-webos-linux/syslinux/6.04-pre2-r1/syslinux-6.04-pre2/com32/include/stdint.h \ /OE/build/luneos-honister/webos-ports/tmp-glibc/work/core2-64-webos-linux/syslinux/6.04-pre2-r1/syslinux-6.04-pre2/com32/include/bitsize/stdint.h \

I don't see any easy way how to force them to be regenerated when gcc was upgraded.

syslinux uses plain Makefiles and do_configure tries to clean with;
oe_runmake firmware="bios" clean

Similarly libvpx doesn't use autotools bbclass, but calls configure/make manually so also doesn't take advantage of separate B directory and removing it before re-executing do_configure.

-- 1.8.2-r0-broken/git/vpx_scale/generic/vpx_scale.c.d 2021-05-24 09:29:44.916405487 +0200 +++ 1.8.2-r0/git/vpx_scale/generic/vpx_scale.c.d        2021-05-29 14:12:39.234539166 +0200
@@ -10,7 +10,7 @@
/OE/build/luneos-honister/webos-ports/tmp-glibc/work/core2-64-webos-linux/libvpx/1.8.2-r0/recipe-sysroot/usr/include/bits/long-double-64.h \ /OE/build/luneos-honister/webos-ports/tmp-glibc/work/core2-64-webos-linux/libvpx/1.8.2-r0/recipe-sysroot/usr/include/gnu/stubs.h \ /OE/build/luneos-honister/webos-ports/tmp-glibc/work/core2-64-webos-linux/libvpx/1.8.2-r0/recipe-sysroot/usr/include/gnu/stubs-64.h \ - /OE/build/luneos-honister/webos-ports/tmp-glibc/work/core2-64-webos-linux/libvpx/1.8.2-r0/recipe-sysroot-native/usr/lib/x86_64-webos-linux/gcc/x86_64-webos-linux/11.1.0/include/stddef.h \ + /OE/build/luneos-honister/webos-ports/tmp-glibc/work/core2-64-webos-linux/libvpx/1.8.2-r0/recipe-sysroot-native/usr/lib/x86_64-webos-linux/gcc/x86_64-webos-linux/11.1.1/include/stddef.h \ /OE/build/luneos-honister/webos-ports/tmp-glibc/work/core2-64-webos-linux/libvpx/1.8.2-r0/recipe-sysroot/usr/include/bits/waitflags.h \ /OE/build/luneos-honister/webos-ports/tmp-glibc/work/core2-64-webos-linux/libvpx/1.8.2-r0/recipe-sysroot/usr/include/bits/waitstatus.h \ /OE/build/luneos-honister/webos-ports/tmp-glibc/work/core2-64-webos-linux/libvpx/1.8.2-r0/recipe-sysroot/usr/include/bits/floatn.h \
@@ -49,7 +49,7 @@
/OE/build/luneos-honister/webos-ports/tmp-glibc/work/core2-64-webos-linux/libvpx/1.8.2-r0/recipe-sysroot/usr/include/bits/stdlib-float.h \
   vpx/vpx_integer.h \
/OE/build/luneos-honister/webos-ports/tmp-glibc/work/core2-64-webos-linux/libvpx/1.8.2-r0/recipe-sysroot/usr/include/inttypes.h \ - /OE/build/luneos-honister/webos-ports/tmp-glibc/work/core2-64-webos-linux/libvpx/1.8.2-r0/recipe-sysroot-native/usr/lib/x86_64-webos-linux/gcc/x86_64-webos-linux/11.1.0/include/stdint.h \ + /OE/build/luneos-honister/webos-ports/tmp-glibc/work/core2-64-webos-linux/libvpx/1.8.2-r0/recipe-sysroot-native/usr/lib/x86_64-webos-linux/gcc/x86_64-webos-linux/11.1.1/include/stdint.h \ /OE/build/luneos-honister/webos-ports/tmp-glibc/work/core2-64-webos-linux/libvpx/1.8.2-r0/recipe-sysroot/usr/include/stdint.h \ /OE/build/luneos-honister/webos-ports/tmp-glibc/work/core2-64-webos-linux/libvpx/1.8.2-r0/recipe-sysroot/usr/include/bits/wchar.h \ /OE/build/luneos-honister/webos-ports/tmp-glibc/work/core2-64-webos-linux/libvpx/1.8.2-r0/recipe-sysroot/usr/include/bits/stdint-uintn.h \

Any ideas how to detect and prevent this kind of issues in some generic way so that we don't need to explicitly fix the recipes? Bumping tmp-glibc/abi_version on every minor gcc upgrade also seems a bit overkill (as gcc upgrades might not be the only source of these kind of issues anyway).

This is in the packages which try to generate and use dependency tracking. This kind of automatic dependency tracking relies on compiler to compute this information but only after compile has happened so it slows down the build too. autotools has it tooled during configure if --enable-dependency-tracking is passed then it will check and update these dependencies in incremental compile, So for one set of recipes which use autotools we can enable this option, although it has build time penalty, how much I don't know.

for other build systems also there must be similar tools

Although, I would say that having a knob to trigger world rebuilds is perhaps a fine approach for such changes, since we will spend time everytime otherwise.


Regards,

On Wed, May 26, 2021 at 7:10 PM Martin Jansa via lists.openembedded.org <http://lists.openembedded.org> <[email protected] <mailto:[email protected]>> wrote:

    On Wed, May 26, 2021 at 5:43 PM Martin Jansa via
    lists.openembedded.org <http://lists.openembedded.org>
    <[email protected]
    <mailto:[email protected]>> wrote

        I'm seeing different error with gcc-sanitizers and this new
        revision:

        
work-shared/gcc-11.1.0-r0/gcc-11.1.0/libsanitizer/lsan/lsan_common_linux.cpp:164:25:
        error: invalid conversion from 'void (*)(void*)' to 'void*
        (*)(void*)' [-fpermissive]

        will double-check if it was introduced by this upgrade or
        something else in oe-core master update today and also if there
        is a fix in even newer gcc already.


    Sorry for noise, this line of code comes from our local patch and
    the upgrade just started triggering this issue in it.

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#152420): 
https://lists.openembedded.org/g/openembedded-core/message/152420
Mute This Topic: https://lists.openembedded.org/mt/83053748/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to