Re: [OE-core] [PATCH v2] gcc: Update to latest on release/gcc-11 branch
From: Martin Jansa <hidden>
Date: 2021-05-29 13:09:15
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-2914: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). Regards, On Wed, May 26, 2021 at 7:10 PM Martin Jansa via lists.openembedded.org [off-list ref] wrote:
On Wed, May 26, 2021 at 5:43 PM Martin Jansa via lists.openembedded.org [off-list ref] wrotequoted
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.