From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id F1061C3DA5D for ; Thu, 18 Jul 2024 00:21:46 +0000 (UTC) Received: from mailout4.zoneedit.com (mailout4.zoneedit.com [64.68.198.64]) by mx.groups.io with SMTP id smtpd.web10.4748.1721262095999838036 for ; Wed, 17 Jul 2024 17:21:36 -0700 Authentication-Results: mx.groups.io; dkim=none (message not signed); spf=pass (domain: denix.org, ip: 64.68.198.64, mailfrom: denis@denix.org) Received: from localhost (localhost [127.0.0.1]) by mailout4.zoneedit.com (Postfix) with ESMTP id EBC2D40C83; Thu, 18 Jul 2024 00:21:34 +0000 (UTC) Received: from mailout4.zoneedit.com ([127.0.0.1]) by localhost (zmo14-pco.easydns.vpn [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id d1r_z-lsHYEH; Thu, 18 Jul 2024 00:21:34 +0000 (UTC) Received: from mail.denix.org (pool-100-15-87-159.washdc.fios.verizon.net [100.15.87.159]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mailout4.zoneedit.com (Postfix) with ESMTPSA id B226F40C21; Thu, 18 Jul 2024 00:21:32 +0000 (UTC) Received: by mail.denix.org (Postfix, from userid 1000) id BE13D163FFB; Wed, 17 Jul 2024 20:21:31 -0400 (EDT) Date: Wed, 17 Jul 2024 20:21:31 -0400 From: Denys Dmytriyenko To: ohnatiuk@cisco.com, Richard Purdie Cc: openembedded-core@lists.openembedded.org Subject: Re: [OE-core] [PATCH v2] gcc: remove paths to sysroot from configargs.h and checksum-options for gcc-cross-canadian Message-ID: <20240718002131.GK17572@denix.org> References: <20240717095606.3572072-1-ohnatiuk@cisco.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240717095606.3572072-1-ohnatiuk@cisco.com> User-Agent: Mutt/1.5.20 (2009-06-14) List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Thu, 18 Jul 2024 00:21:46 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/202181 FWIW, I'm testing master-next now with your patch applied and I'm also seeing the same buildpaths QA error in .../include-fixed/pthread.h ERROR: gcc-cross-canadian-aarch64-14.1.0-r0 do_package_qa: QA Issue: File /usr/local/oe-sdk-hardcoded-buildpath/sysroots/x86_64-pokysdk-linux/usr/lib/aarch64-poky-linux/gcc/aarch64-poky-linux/14.1.0/include-fixed/pthread.h in package gcc-cross-canadian-aarch64 contains reference to TMPDIR [buildpaths] ERROR: gcc-cross-canadian-aarch64-14.1.0-r0 do_package_qa: Fatal QA errors were found, failing task. ERROR: Logfile of failure stored in: /OE/poky-master/build/tmp/work/x86_64-nativesdk-pokysdk-linux/gcc-cross-canadian-aarch64/14.1.0/temp/log.do_package_qa.820539 ERROR: Task (/OE/poky-master/meta/recipes-devtools/gcc/gcc-cross-canadian_14.1.bb:do_package_qa) failed with exit code '1' The header file contains this: /* DO NOT EDIT THIS FILE. It has been auto-edited by fixincludes from: "/OE/poky-master/build/tmp/work/x86_64-nativesdk-pokysdk-linux/gcc-cross-canadian-aarch64/14.1.0/recipe-sysroot/usr/include/pthread.h" This had to be done to correct non-standard usages in the original, manufacturer supplied header file. */ Both gcc-target and gcc-cross end up removing this header file: https://git.openembedded.org/openembedded-core/commit/?id=e0af4b2c8f8e29ac6f8eccef401c7c004355359d https://git.openembedded.org/openembedded-core/commit/?id=f0fcaa88b7b2977c2cb35b060747442ee9ff3dcd I'm not sure if we should do the same for gcc-cross-canadian as well - I'm trying it locally now... On Wed, Jul 17, 2024 at 02:56:06AM -0700, Oleksandr Hnatiuk via lists.openembedded.org wrote: > Apply fixes from gcc-cross (84a78f46d594 and 0ead8cbdfb96) to gcc-cross-canadian. > This will improve (but not fix) reproducibility of gcc-cross-canadian. > Also move this code to functions to avoid code duplication. > > Signed-off-by: Oleksandr Hnatiuk > --- > .../gcc/gcc-configure-common.inc | 19 +++++++++++++++++++ > .../gcc/gcc-cross-canadian.inc | 3 +++ > meta/recipes-devtools/gcc/gcc-cross.inc | 15 ++------------- > meta/recipes-devtools/gcc/gcc-target.inc | 16 ++-------------- > 4 files changed, 26 insertions(+), 27 deletions(-) > > diff --git a/meta/recipes-devtools/gcc/gcc-configure-common.inc b/meta/recipes-devtools/gcc/gcc-configure-common.inc > index d77b2ec3d1de..c936d1a9bd7b 100644 > --- a/meta/recipes-devtools/gcc/gcc-configure-common.inc > +++ b/meta/recipes-devtools/gcc/gcc-configure-common.inc > @@ -120,3 +120,22 @@ do_configure () { > oe_runconf > } > > +remove_sysroot_paths_from_configargs () { > + # Prevent sysroot path from being used in configargs.h header, as it will > + # be rewritten when used by other sysroots preventing support for gcc > + # plugins. Additionally the path is embeddeded into the output binary, this > + # prevents building a reproducible binary. > + oe_runmake configure-gcc > + sed -i 's@${STAGING_DIR_TARGET}@/host@g' ${B}/gcc/configargs.h > + sed -i 's@${STAGING_DIR_HOST}@/host@g' ${B}/gcc/configargs.h > +} > + > +remove_sysroot_paths_from_checksum_options () { > + # Prevent sysroot/workdir paths from being used in checksum-options. > + # checksum-options is used to generate a checksum which is embedded into > + # the output binary. > + oe_runmake TARGET-gcc=checksum-options all-gcc > + sed -i 's@${DEBUG_PREFIX_MAP}@@g' ${B}/gcc/checksum-options > + sed -i 's@${1}@/host@g' ${B}/gcc/checksum-options > +} > + > diff --git a/meta/recipes-devtools/gcc/gcc-cross-canadian.inc b/meta/recipes-devtools/gcc/gcc-cross-canadian.inc > index 7c4233c21157..9528b71272dd 100644 > --- a/meta/recipes-devtools/gcc/gcc-cross-canadian.inc > +++ b/meta/recipes-devtools/gcc/gcc-cross-canadian.inc > @@ -64,6 +64,9 @@ do_configure () { > } > > do_compile () { > + remove_sysroot_paths_from_configargs > + remove_sysroot_paths_from_checksum_options '${STAGING_DIR_HOST}' > + > oe_runmake all-host configure-target-libgcc > (cd ${B}/${TARGET_SYS}/libgcc; oe_runmake enable-execute-stack.c unwind.h md-unwind-support.h sfp-machine.h gthr-default.h) > } > diff --git a/meta/recipes-devtools/gcc/gcc-cross.inc b/meta/recipes-devtools/gcc/gcc-cross.inc > index 5b0ca15d4762..f8a7730cf322 100644 > --- a/meta/recipes-devtools/gcc/gcc-cross.inc > +++ b/meta/recipes-devtools/gcc/gcc-cross.inc > @@ -62,19 +62,8 @@ do_compile () { > export CXXFLAGS_FOR_TARGET="${TARGET_CXXFLAGS}" > export LDFLAGS_FOR_TARGET="${TARGET_LDFLAGS}" > > - # Prevent native/host sysroot path from being used in configargs.h header, > - # as it will be rewritten when used by other sysroots preventing support > - # for gcc plugins > - oe_runmake configure-gcc > - sed -i 's@${STAGING_DIR_TARGET}@/host@g' ${B}/gcc/configargs.h > - sed -i 's@${STAGING_DIR_HOST}@/host@g' ${B}/gcc/configargs.h > - > - # Prevent sysroot/workdir paths from being used in checksum-options. > - # checksum-options is used to generate a checksum which is embedded into > - # the output binary. > - oe_runmake TARGET-gcc=checksum-options all-gcc > - sed -i 's@${DEBUG_PREFIX_MAP}@@g' ${B}/gcc/checksum-options > - sed -i 's@${STAGING_DIR_HOST}@/host@g' ${B}/gcc/checksum-options > + remove_sysroot_paths_from_configargs > + remove_sysroot_paths_from_checksum_options '${STAGING_DIR_HOST}' > > oe_runmake all-host configure-target-libgcc > (cd ${B}/${TARGET_SYS}/libgcc; oe_runmake enable-execute-stack.c unwind.h md-unwind-support.h sfp-machine.h gthr-default.h) > diff --git a/meta/recipes-devtools/gcc/gcc-target.inc b/meta/recipes-devtools/gcc/gcc-target.inc > index e9187fc444b9..bd7506fe3a55 100644 > --- a/meta/recipes-devtools/gcc/gcc-target.inc > +++ b/meta/recipes-devtools/gcc/gcc-target.inc > @@ -132,20 +132,8 @@ FILES:${PN}-doc = "\ > " > > do_compile () { > - # Prevent full target sysroot path from being used in configargs.h header, > - # as it will be rewritten when used by other sysroots preventing support > - # for gcc plugins. Additionally the path is embeddeded into the output > - # binary, this prevents building a reproducible binary. > - oe_runmake configure-gcc > - sed -i 's@${STAGING_DIR_TARGET}@/@g' ${B}/gcc/configargs.h > - sed -i 's@${STAGING_DIR_HOST}@/@g' ${B}/gcc/configargs.h > - > - # Prevent sysroot/workdir paths from being used in checksum-options. > - # checksum-options is used to generate a checksum which is embedded into > - # the output binary. > - oe_runmake TARGET-gcc=checksum-options all-gcc > - sed -i 's@${DEBUG_PREFIX_MAP}@@g' ${B}/gcc/checksum-options > - sed -i 's@${STAGING_DIR_TARGET}@/@g' ${B}/gcc/checksum-options > + remove_sysroot_paths_from_configargs > + remove_sysroot_paths_from_checksum_options '${STAGING_DIR_TARGET}' > > oe_runmake all-host > } > -- > 2.35.6