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