On Wed, 2024-07-17 at 02:56 -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 <[email protected]>
> ---
>  .../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
>  }

I think this also causes a reproducibility issue. In testing this patch seemed 
to cause:

https://autobuilder.yoctoproject.org/typhoon/#/builders/117/builds/5079/steps/13/logs/stdio

which leads to:

http://autobuilder.yocto.io/pub/repro-fail/oe-reproducible-20240717-49lmc_9g/packages/diff-html/

which is a difference in EXPORTED_CONST·unsigned·char·executable_checksum[16].

Cheers,

Richard

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

Reply via email to