All of lore.kernel.org
 help / color / mirror / Atom feed
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 20:21:31 -0400	[thread overview]
Message-ID: <20240718002131.GK17572@denix.org> (raw)
In-Reply-To: <20240717095606.3572072-1-ohnatiuk@cisco.com>

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 <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


  parent reply	other threads:[~2024-07-18  0:21 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     ` Denys Dmytriyenko [this message]
2024-07-18  7:40       ` [OE-core] " 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
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=20240718002131.GK17572@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.