From: Denys Dmytriyenko <denis@denix.org>
To: ohnatiuk@cisco.com, Richard Purdie <richard.purdie@linuxfoundation.org>
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
Date: Wed, 17 Jul 2024 22:15:21 -0400 [thread overview]
Message-ID: <20240718021521.GL17572@denix.org> (raw)
In-Reply-To: <17E326C1F13DA2A9.25516@lists.openembedded.org>
On Wed, Jul 17, 2024 at 08:21:31PM -0400, Denys Dmytriyenko wrote:
> 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...
Well, similarly pruning include-fixed with find+rm makes all the builds
succeed. But I haven't tried using the resulting gcc-canadian-cross yet.
Also, just a nitpick - I noticed the 2 new functions are used from
do_compile(), while being added to gcc-configure-common.inc, not
gcc-common.inc
> 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 <ohnatiuk@cisco.com>
> > ---
> > .../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
next prev parent reply other threads:[~2024-07-18 2:15 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-12 11:00 [PATCH] gcc: remove paths to sysroot from configargs.h and checksum-options for gcc-cross-canadian Oleksandr Hnatiuk
2024-07-12 11:17 ` [OE-core] " Alexander Kanavin
2024-07-12 19:22 ` Oleksandr Hnatiuk
2024-07-15 12:30 ` [OE-core] " Alexander Kanavin
2024-07-17 9:56 ` [PATCH v2] " Oleksandr Hnatiuk
2024-07-17 9:59 ` Oleksandr Hnatiuk
2024-07-18 0:21 ` [OE-core] " Denys Dmytriyenko
2024-07-18 7:40 ` Oleksandr Hnatiuk -X (ohnatiuk - GLOBALLOGIC INC at Cisco)
2024-07-18 8:09 ` Richard Purdie
[not found] ` <17E326C1F13DA2A9.25516@lists.openembedded.org>
2024-07-18 2:15 ` Denys Dmytriyenko [this message]
2024-07-18 8:36 ` Richard Purdie
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240718021521.GL17572@denix.org \
--to=denis@denix.org \
--cc=ohnatiuk@cisco.com \
--cc=openembedded-core@lists.openembedded.org \
--cc=richard.purdie@linuxfoundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.