All of lore.kernel.org
 help / color / mirror / Atom feed
* [master][PATCH 0/4] Reproducible LTO builds
@ 2021-07-27 13:34 Tony Battersby
  2021-08-05  0:13 ` [OE-core] " Randy MacLeod
  0 siblings, 1 reply; 14+ messages in thread
From: Tony Battersby @ 2021-07-27 13:34 UTC (permalink / raw)
  To: openembedded-core, openembedded-devel; +Cc: randy.macleod

Currently, enabling Link Time Optimization via:

require conf/distro/include/lto.inc
DISTRO_FEATURES_append = " lto"

makes the build non-reproducible (as in
https://reproducible-builds.org/).  This patch set fixes some of the
problems, but is not yet a complete solution.

This patch set addresses the following bugs:
https://bugzilla.yoctoproject.org/show_bug.cgi?id=14481
https://bugzilla.yoctoproject.org/show_bug.cgi?id=14490

openembedded-core patches
1/4: lto.inc: disable LTO for grub
2/4: gcc: Backport patch to make LTO builds more reproducible
3/4: bitbake.conf: add DEBUG_PREFIX_MAP to TARGET_LDFLAGS

openembedded-devel patches
4/4: net-snmp: fix QA Issue after LDFLAGS change

Patch 3 adds DEBUG_PREFIX_MAP to TARGET_LDFLAGS (it was already in
TARGET_CFLAGS).  This could possibly be done differently, such as by
removing it from TARGET_CFLAGS and adding it to TOOLCHAIN_OPTIONS,
TARGET_CC_ARCH, or TUNE_CCARGS, but I haven't tested those.  Let me know
if there is a better/preferred way to do it.

The TARGET_LDFLAGS change broke net-snmp from meta-networking, so I have
included a patch to fix that.  Other packages might have been broken as
well, although I haven't found any others.

With all these patches, there are still many shared libraries in /lib
and /usr/lib that are still not reproducible with LTO enabled because
x86_64-poky-linux-libtool filters out the -f*-prefix-map flags added by
patch 3 when linking shared libraries.  /usr/lib/libbz2.so.1.0.6 from
the libbz2 package from the bzip2 recipe is a good example.  I do not
have a patch for that problem.  I will leave that to someone else.

So this is what we need to achieve reproducible LTO builds:
*) This patch set
*) A fix for libtool
*) Add LTO to reproducible builds testing if appropriate (e.g.
meta/lib/oeqa/selftest/cases/reproducible.py, CI on Autobuilder)
*) Fixes for individual packages, if needed
*) Once everything works, update the documentation again (I previously
requested a documentation change for this bug, which will eventually
show up at
http://docs.yoctoproject.org/test-manual/reproducible-builds.html).

Tony Battersby
Cybernetics


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [OE-core] [master][PATCH 0/4] Reproducible LTO builds
  2021-07-27 13:34 [master][PATCH 0/4] Reproducible LTO builds Tony Battersby
@ 2021-08-05  0:13 ` Randy MacLeod
  2021-08-05 10:21   ` Richard Purdie
  0 siblings, 1 reply; 14+ messages in thread
From: Randy MacLeod @ 2021-08-05  0:13 UTC (permalink / raw)
  To: Tony Battersby, openembedded-core, openembedded-devel, Khem Raj,
	Richard Purdie

On 2021-07-27 9:34 a.m., Tony Battersby wrote:
> Currently, enabling Link Time Optimization via:
> 
> require conf/distro/include/lto.inc
> DISTRO_FEATURES_append = " lto"
> 
> makes the build non-reproducible (as in
> https://reproducible-builds.org/).  This patch set fixes some of the
> problems, but is not yet a complete solution.
> 
> This patch set addresses the following bugs:
> https://bugzilla.yoctoproject.org/show_bug.cgi?id=14481
> https://bugzilla.yoctoproject.org/show_bug.cgi?id=14490
> 
> openembedded-core patches
> 1/4: lto.inc: disable LTO for grub
> 2/4: gcc: Backport patch to make LTO builds more reproducible
> 3/4: bitbake.conf: add DEBUG_PREFIX_MAP to TARGET_LDFLAGS
> 
> openembedded-devel patches
> 4/4: net-snmp: fix QA Issue after LDFLAGS change
> 
> Patch 3 adds DEBUG_PREFIX_MAP to TARGET_LDFLAGS (it was already in
> TARGET_CFLAGS).  This could possibly be done differently, such as by
> removing it from TARGET_CFLAGS and adding it to TOOLCHAIN_OPTIONS,
> TARGET_CC_ARCH, or TUNE_CCARGS, but I haven't tested those.  Let me know
> if there is a better/preferred way to do it.
> 
> The TARGET_LDFLAGS change broke net-snmp from meta-networking, so I have
> included a patch to fix that.  Other packages might have been broken as
> well, although I haven't found any others.
> 
> With all these patches, there are still many shared libraries in /lib
> and /usr/lib that are still not reproducible with LTO enabled because
> x86_64-poky-linux-libtool filters out the -f*-prefix-map flags added by
> patch 3 when linking shared libraries.  /usr/lib/libbz2.so.1.0.6 from
> the libbz2 package from the bzip2 recipe is a good example.  I do not
> have a patch for that problem.  I will leave that to someone else.
> 
> So this is what we need to achieve reproducible LTO builds:
> *) This patch set
> *) A fix for libtool
> *) Add LTO to reproducible builds testing if appropriate (e.g.
> meta/lib/oeqa/selftest/cases/reproducible.py, CI on Autobuilder)
> *) Fixes for individual packages, if needed
> *) Once everything works, update the documentation again (I previously
> requested a documentation change for this bug, which will eventually
> show up at
> http://docs.yoctoproject.org/test-manual/reproducible-builds.html).

This is certainly a few steps in the right direction with a good outline
of what's next.

I suspect that Richard has been busy with other things like overrides
and the update to glibc-2.34.

Do you have any suggestions or questions about what we should do
with this patch series Richard?

../Randy


> 
> Tony Battersby
> Cybernetics
> 
> 
> 
> 
> 


-- 
# Randy MacLeod
# Wind River Linux

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [OE-core] [master][PATCH 0/4] Reproducible LTO builds
  2021-08-05  0:13 ` [OE-core] " Randy MacLeod
@ 2021-08-05 10:21   ` Richard Purdie
  2021-08-05 21:54     ` Tony Battersby
  0 siblings, 1 reply; 14+ messages in thread
From: Richard Purdie @ 2021-08-05 10:21 UTC (permalink / raw)
  To: Randy MacLeod, Tony Battersby, openembedded-core,
	openembedded-devel, Khem Raj

On Wed, 2021-08-04 at 20:13 -0400, Randy MacLeod wrote:
> On 2021-07-27 9:34 a.m., Tony Battersby wrote:
> > Currently, enabling Link Time Optimization via:
> > 
> > require conf/distro/include/lto.inc
> > DISTRO_FEATURES_append = " lto"
> > 
> > makes the build non-reproducible (as in
> > https://reproducible-builds.org/).  This patch set fixes some of the
> > problems, but is not yet a complete solution.
> > 
> > This patch set addresses the following bugs:
> > https://bugzilla.yoctoproject.org/show_bug.cgi?id=14481
> > https://bugzilla.yoctoproject.org/show_bug.cgi?id=14490
> > 
> > openembedded-core patches
> > 1/4: lto.inc: disable LTO for grub
> > 2/4: gcc: Backport patch to make LTO builds more reproducible
> > 3/4: bitbake.conf: add DEBUG_PREFIX_MAP to TARGET_LDFLAGS
> > 
> > openembedded-devel patches
> > 4/4: net-snmp: fix QA Issue after LDFLAGS change
> > 
> > Patch 3 adds DEBUG_PREFIX_MAP to TARGET_LDFLAGS (it was already in
> > TARGET_CFLAGS).  This could possibly be done differently, such as by
> > removing it from TARGET_CFLAGS and adding it to TOOLCHAIN_OPTIONS,
> > TARGET_CC_ARCH, or TUNE_CCARGS, but I haven't tested those.  Let me know
> > if there is a better/preferred way to do it.
> > 
> > The TARGET_LDFLAGS change broke net-snmp from meta-networking, so I have
> > included a patch to fix that.  Other packages might have been broken as
> > well, although I haven't found any others.
> > 
> > With all these patches, there are still many shared libraries in /lib
> > and /usr/lib that are still not reproducible with LTO enabled because
> > x86_64-poky-linux-libtool filters out the -f*-prefix-map flags added by
> > patch 3 when linking shared libraries.  /usr/lib/libbz2.so.1.0.6 from
> > the libbz2 package from the bzip2 recipe is a good example.  I do not
> > have a patch for that problem.  I will leave that to someone else.
> > 
> > So this is what we need to achieve reproducible LTO builds:
> > *) This patch set
> > *) A fix for libtool
> > *) Add LTO to reproducible builds testing if appropriate (e.g.
> > meta/lib/oeqa/selftest/cases/reproducible.py, CI on Autobuilder)
> > *) Fixes for individual packages, if needed
> > *) Once everything works, update the documentation again (I previously
> > requested a documentation change for this bug, which will eventually
> > show up at
> > http://docs.yoctoproject.org/test-manual/reproducible-builds.html).
> 
> This is certainly a few steps in the right direction with a good outline
> of what's next.
> 
> I suspect that Richard has been busy with other things like overrides
> and the update to glibc-2.34.
> 
> Do you have any suggestions or questions about what we should do
> with this patch series Richard?

Thanks for the reminder, I've been meaning to queue/test this which I will
do. The gcc version has been bumped but I ported the patch forward to it
and the patches are in master-next for testing. It is great to see this
support moving forward.

Much as it pains me to admit having any libtool knowledge, I may be able to
help with that bit. There is an untested patch below which may address that
issue, or at least give a good hint on how to do it if it doesn't work. I
don't have an environment to test easily right now.

Cheers,

Richard


From 7681b0a1461f22034e1f70328a060db34474c60f Mon Sep 17 00:00:00 2001
From: Richard Purdie <richard.purdie@linuxfoundation.org>
Date: Thu, 5 Aug 2021 11:18:20 +0100
Subject: libtool: Fix lto option passing?

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
---
 meta/recipes-devtools/libtool/libtool-2.4.6.inc        |  1 +
 meta/recipes-devtools/libtool/libtool/lto-prefix.patch | 16 ++++++++++++++++
 2 files changed, 17 insertions(+)
 create mode 100644 meta/recipes-devtools/libtool/libtool/lto-prefix.patch

diff --git a/meta/recipes-devtools/libtool/libtool-2.4.6.inc b/meta/recipes-devtools/libtool/libtool-2.4.6.inc
index c1cbceb51f..6748d7468e 100644
--- a/meta/recipes-devtools/libtool/libtool-2.4.6.inc
+++ b/meta/recipes-devtools/libtool/libtool-2.4.6.inc
@@ -23,6 +23,7 @@ SRC_URI = "${GNU_MIRROR}/libtool/libtool-${PV}.tar.gz \
            file://0001-libtool-Check-for-static-libs-for-internal-compiler-.patch \
            file://0001-Makefile.am-make-sure-autoheader-run-before-autoconf.patch \
            file://0001-Makefile.am-make-sure-autoheader-run-before-automake.patch \
+           file://lto-prefix.patch \
           "
 
 SRC_URI[md5sum] = "addf44b646ddb4e3919805aa88fa7c5e"
diff --git a/meta/recipes-devtools/libtool/libtool/lto-prefix.patch b/meta/recipes-
devtools/libtool/libtool/lto-prefix.patch
new file mode 100644
index 0000000000..f788b3fc27
--- /dev/null
+++ b/meta/recipes-devtools/libtool/libtool/lto-prefix.patch
@@ -0,0 +1,16 @@
+Index: libtool-2.4.6/build-aux/ltmain.in
+===================================================================
+--- libtool-2.4.6.orig/build-aux/ltmain.in
++++ libtool-2.4.6/build-aux/ltmain.in
+@@ -5424,9 +5424,10 @@ func_mode_link ()
+       # --sysroot=*          for sysroot support
+       # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
+       # -stdlib=*            select c++ std lib with clang
++      # -f*-prefix-map*      needed for lto linking
+       -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
+       -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
+-      -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*)
++      -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*|-f*-prefix-map*)
+         func_quote_for_eval "$arg"
+ 	arg=$func_quote_for_eval_result
+         func_append compile_command " $arg"




^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [OE-core] [master][PATCH 0/4] Reproducible LTO builds
  2021-08-05 10:21   ` Richard Purdie
@ 2021-08-05 21:54     ` Tony Battersby
  2021-08-06  5:33       ` Richard Purdie
  0 siblings, 1 reply; 14+ messages in thread
From: Tony Battersby @ 2021-08-05 21:54 UTC (permalink / raw)
  To: Richard Purdie, Randy MacLeod, openembedded-core,
	openembedded-devel, Khem Raj

On 8/5/21 6:21 AM, Richard Purdie wrote:
> On Wed, 2021-08-04 at 20:13 -0400, Randy MacLeod wrote:
>> On 2021-07-27 9:34 a.m., Tony Battersby wrote:
>>> Currently, enabling Link Time Optimization via:
>>>
>>> require conf/distro/include/lto.inc
>>> DISTRO_FEATURES_append = " lto"
>>>
>>> makes the build non-reproducible (as in
>>> https://reproducible-builds.org/).  This patch set fixes some of the
>>> problems, but is not yet a complete solution.
>>>
>>> This patch set addresses the following bugs:
>>> https://bugzilla.yoctoproject.org/show_bug.cgi?id=14481
>>> https://bugzilla.yoctoproject.org/show_bug.cgi?id=14490
>>>
>>> openembedded-core patches
>>> 1/4: lto.inc: disable LTO for grub
>>> 2/4: gcc: Backport patch to make LTO builds more reproducible
>>> 3/4: bitbake.conf: add DEBUG_PREFIX_MAP to TARGET_LDFLAGS
>>>
>>> openembedded-devel patches
>>> 4/4: net-snmp: fix QA Issue after LDFLAGS change
>>>
>>> Patch 3 adds DEBUG_PREFIX_MAP to TARGET_LDFLAGS (it was already in
>>> TARGET_CFLAGS).  This could possibly be done differently, such as by
>>> removing it from TARGET_CFLAGS and adding it to TOOLCHAIN_OPTIONS,
>>> TARGET_CC_ARCH, or TUNE_CCARGS, but I haven't tested those.  Let me know
>>> if there is a better/preferred way to do it.
>>>
>>> The TARGET_LDFLAGS change broke net-snmp from meta-networking, so I have
>>> included a patch to fix that.  Other packages might have been broken as
>>> well, although I haven't found any others.
>>>
>>> With all these patches, there are still many shared libraries in /lib
>>> and /usr/lib that are still not reproducible with LTO enabled because
>>> x86_64-poky-linux-libtool filters out the -f*-prefix-map flags added by
>>> patch 3 when linking shared libraries.  /usr/lib/libbz2.so.1.0.6 from
>>> the libbz2 package from the bzip2 recipe is a good example.  I do not
>>> have a patch for that problem.  I will leave that to someone else.
>>>
>>> So this is what we need to achieve reproducible LTO builds:
>>> *) This patch set
>>> *) A fix for libtool
>>> *) Add LTO to reproducible builds testing if appropriate (e.g.
>>> meta/lib/oeqa/selftest/cases/reproducible.py, CI on Autobuilder)
>>> *) Fixes for individual packages, if needed
>>> *) Once everything works, update the documentation again (I previously
>>> requested a documentation change for this bug, which will eventually
>>> show up at
>>> http://docs.yoctoproject.org/test-manual/reproducible-builds.html).
>> This is certainly a few steps in the right direction with a good outline
>> of what's next.
>>
>> I suspect that Richard has been busy with other things like overrides
>> and the update to glibc-2.34.
>>
>> Do you have any suggestions or questions about what we should do
>> with this patch series Richard?
> Thanks for the reminder, I've been meaning to queue/test this which I will
> do. The gcc version has been bumped but I ported the patch forward to it
> and the patches are in master-next for testing. It is great to see this
> support moving forward.
>
> Much as it pains me to admit having any libtool knowledge, I may be able to
> help with that bit. There is an untested patch below which may address that
> issue, or at least give a good hint on how to do it if it doesn't work. I
> don't have an environment to test easily right now.
>
> Cheers,
>
> Richard

I tested your libtool patch in master-next with the bzip2 recipe.  It
works as intended; libbz2.so.1.0.6 and all the other output files are
now reproducible with LTO enabled.  I also verified that libtool is
passing the -f*-prefix-map flags to the link command in log.do_compile
as intended.

I also verified that core-image-minimal builds successfully with the
libtool patch.

Tony Battersby


>
> >From 7681b0a1461f22034e1f70328a060db34474c60f Mon Sep 17 00:00:00 2001
> From: Richard Purdie <richard.purdie@linuxfoundation.org>
> Date: Thu, 5 Aug 2021 11:18:20 +0100
> Subject: libtool: Fix lto option passing?
>
> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
> ---
>  meta/recipes-devtools/libtool/libtool-2.4.6.inc        |  1 +
>  meta/recipes-devtools/libtool/libtool/lto-prefix.patch | 16 ++++++++++++++++
>  2 files changed, 17 insertions(+)
>  create mode 100644 meta/recipes-devtools/libtool/libtool/lto-prefix.patch
>
> diff --git a/meta/recipes-devtools/libtool/libtool-2.4.6.inc b/meta/recipes-devtools/libtool/libtool-2.4.6.inc
> index c1cbceb51f..6748d7468e 100644
> --- a/meta/recipes-devtools/libtool/libtool-2.4.6.inc
> +++ b/meta/recipes-devtools/libtool/libtool-2.4.6.inc
> @@ -23,6 +23,7 @@ SRC_URI = "${GNU_MIRROR}/libtool/libtool-${PV}.tar.gz \
>             file://0001-libtool-Check-for-static-libs-for-internal-compiler-.patch \
>             file://0001-Makefile.am-make-sure-autoheader-run-before-autoconf.patch \
>             file://0001-Makefile.am-make-sure-autoheader-run-before-automake.patch \
> +           file://lto-prefix.patch \
>            "
>  
>  SRC_URI[md5sum] = "addf44b646ddb4e3919805aa88fa7c5e"
> diff --git a/meta/recipes-devtools/libtool/libtool/lto-prefix.patch b/meta/recipes-
> devtools/libtool/libtool/lto-prefix.patch
> new file mode 100644
> index 0000000000..f788b3fc27
> --- /dev/null
> +++ b/meta/recipes-devtools/libtool/libtool/lto-prefix.patch
> @@ -0,0 +1,16 @@
> +Index: libtool-2.4.6/build-aux/ltmain.in
> +===================================================================
> +--- libtool-2.4.6.orig/build-aux/ltmain.in
> ++++ libtool-2.4.6/build-aux/ltmain.in
> +@@ -5424,9 +5424,10 @@ func_mode_link ()
> +       # --sysroot=*          for sysroot support
> +       # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
> +       # -stdlib=*            select c++ std lib with clang
> ++      # -f*-prefix-map*      needed for lto linking
> +       -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
> +       -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
> +-      -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*)
> ++      -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*|-f*-prefix-map*)
> +         func_quote_for_eval "$arg"
> + 	arg=$func_quote_for_eval_result
> +         func_append compile_command " $arg"
>
>
>


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [OE-core] [master][PATCH 0/4] Reproducible LTO builds
  2021-08-05 21:54     ` Tony Battersby
@ 2021-08-06  5:33       ` Richard Purdie
  2021-08-06 16:44         ` Tony Battersby
  0 siblings, 1 reply; 14+ messages in thread
From: Richard Purdie @ 2021-08-06  5:33 UTC (permalink / raw)
  To: Tony Battersby, Randy MacLeod, openembedded-core,
	openembedded-devel, Khem Raj

On Thu, 2021-08-05 at 17:54 -0400, Tony Battersby wrote:
> On 8/5/21 6:21 AM, Richard Purdie wrote:
> > On Wed, 2021-08-04 at 20:13 -0400, Randy MacLeod wrote:
> > > On 2021-07-27 9:34 a.m., Tony Battersby wrote:
> > > > Currently, enabling Link Time Optimization via:
> > > > 
> > > > require conf/distro/include/lto.inc
> > > > DISTRO_FEATURES_append = " lto"
> > > > 
> > > > makes the build non-reproducible (as in
> > > > https://reproducible-builds.org/).  This patch set fixes some of the
> > > > problems, but is not yet a complete solution.
> > > > 
> > > > This patch set addresses the following bugs:
> > > > https://bugzilla.yoctoproject.org/show_bug.cgi?id=14481
> > > > https://bugzilla.yoctoproject.org/show_bug.cgi?id=14490
> > > > 
> > > > openembedded-core patches
> > > > 1/4: lto.inc: disable LTO for grub
> > > > 2/4: gcc: Backport patch to make LTO builds more reproducible
> > > > 3/4: bitbake.conf: add DEBUG_PREFIX_MAP to TARGET_LDFLAGS
> > > > 
> > > > openembedded-devel patches
> > > > 4/4: net-snmp: fix QA Issue after LDFLAGS change
> > > > 
> > > > Patch 3 adds DEBUG_PREFIX_MAP to TARGET_LDFLAGS (it was already in
> > > > TARGET_CFLAGS).  This could possibly be done differently, such as by
> > > > removing it from TARGET_CFLAGS and adding it to TOOLCHAIN_OPTIONS,
> > > > TARGET_CC_ARCH, or TUNE_CCARGS, but I haven't tested those.  Let me know
> > > > if there is a better/preferred way to do it.
> > > > 
> > > > The TARGET_LDFLAGS change broke net-snmp from meta-networking, so I have
> > > > included a patch to fix that.  Other packages might have been broken as
> > > > well, although I haven't found any others.
> > > > 
> > > > With all these patches, there are still many shared libraries in /lib
> > > > and /usr/lib that are still not reproducible with LTO enabled because
> > > > x86_64-poky-linux-libtool filters out the -f*-prefix-map flags added by
> > > > patch 3 when linking shared libraries.  /usr/lib/libbz2.so.1.0.6 from
> > > > the libbz2 package from the bzip2 recipe is a good example.  I do not
> > > > have a patch for that problem.  I will leave that to someone else.
> > > > 
> > > > So this is what we need to achieve reproducible LTO builds:
> > > > *) This patch set
> > > > *) A fix for libtool
> > > > *) Add LTO to reproducible builds testing if appropriate (e.g.
> > > > meta/lib/oeqa/selftest/cases/reproducible.py, CI on Autobuilder)
> > > > *) Fixes for individual packages, if needed
> > > > *) Once everything works, update the documentation again (I previously
> > > > requested a documentation change for this bug, which will eventually
> > > > show up at
> > > > http://docs.yoctoproject.org/test-manual/reproducible-builds.html).
> > > This is certainly a few steps in the right direction with a good outline
> > > of what's next.
> > > 
> > > I suspect that Richard has been busy with other things like overrides
> > > and the update to glibc-2.34.
> > > 
> > > Do you have any suggestions or questions about what we should do
> > > with this patch series Richard?
> > Thanks for the reminder, I've been meaning to queue/test this which I will
> > do. The gcc version has been bumped but I ported the patch forward to it
> > and the patches are in master-next for testing. It is great to see this
> > support moving forward.
> > 
> > Much as it pains me to admit having any libtool knowledge, I may be able to
> > help with that bit. There is an untested patch below which may address that
> > issue, or at least give a good hint on how to do it if it doesn't work. I
> > don't have an environment to test easily right now.
> > 
> > Cheers,
> > 
> > Richard
> 
> I tested your libtool patch in master-next with the bzip2 recipe.  It
> works as intended; libbz2.so.1.0.6 and all the other output files are
> now reproducible with LTO enabled.  I also verified that libtool is
> passing the -f*-prefix-map flags to the link command in log.do_compile
> as intended.
> 
> I also verified that core-image-minimal builds successfully with the
> libtool patch.

Thanks for testing that, sounds like it helps that issue. I'll queue that patch.

Unfortunately even with the ruby fix I queued, we still see reproduciblity
issues with the LDFLAGS change in curl-dev, gettext-ptest, ruby and ruby-dbg 
packages:

https://autobuilder.yoctoproject.org/typhoon/#/builders/115/builds/515/steps/12/logs/stdio

We'll need to resolve those before I can merge the flags change.

Diffoscope output:

https://autobuilder.yocto.io/pub/repro-fail/oe-reproducible-20210805-8jfd55ki/packages/diff-html/

Basically LDFLAGS get encoded into a couple of scripts and the ruby binary.

Cheers,

Richard


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [OE-core] [master][PATCH 0/4] Reproducible LTO builds
  2021-08-06  5:33       ` Richard Purdie
@ 2021-08-06 16:44         ` Tony Battersby
  2021-08-06 21:04           ` Tony Battersby
  0 siblings, 1 reply; 14+ messages in thread
From: Tony Battersby @ 2021-08-06 16:44 UTC (permalink / raw)
  To: Richard Purdie, Randy MacLeod, openembedded-core,
	openembedded-devel, Khem Raj

On 8/6/21 1:33 AM, Richard Purdie wrote:
> On Thu, 2021-08-05 at 17:54 -0400, Tony Battersby wrote:
>> On 8/5/21 6:21 AM, Richard Purdie wrote:
>>> On Wed, 2021-08-04 at 20:13 -0400, Randy MacLeod wrote:
>>>> On 2021-07-27 9:34 a.m., Tony Battersby wrote:
>>>>> Currently, enabling Link Time Optimization via:
>>>>>
>>>>> require conf/distro/include/lto.inc
>>>>> DISTRO_FEATURES_append = " lto"
>>>>>
>>>>> makes the build non-reproducible (as in
>>>>> https://reproducible-builds.org/).  This patch set fixes some of the
>>>>> problems, but is not yet a complete solution.
>>>>>
>>>>> This patch set addresses the following bugs:
>>>>> https://bugzilla.yoctoproject.org/show_bug.cgi?id=14481
>>>>> https://bugzilla.yoctoproject.org/show_bug.cgi?id=14490
>>>>>
>>>>> openembedded-core patches
>>>>> 1/4: lto.inc: disable LTO for grub
>>>>> 2/4: gcc: Backport patch to make LTO builds more reproducible
>>>>> 3/4: bitbake.conf: add DEBUG_PREFIX_MAP to TARGET_LDFLAGS
>>>>>
>>>>> openembedded-devel patches
>>>>> 4/4: net-snmp: fix QA Issue after LDFLAGS change
>>>>>
>>>>> Patch 3 adds DEBUG_PREFIX_MAP to TARGET_LDFLAGS (it was already in
>>>>> TARGET_CFLAGS).  This could possibly be done differently, such as by
>>>>> removing it from TARGET_CFLAGS and adding it to TOOLCHAIN_OPTIONS,
>>>>> TARGET_CC_ARCH, or TUNE_CCARGS, but I haven't tested those.  Let me know
>>>>> if there is a better/preferred way to do it.
>>>>>
>>>>> The TARGET_LDFLAGS change broke net-snmp from meta-networking, so I have
>>>>> included a patch to fix that.  Other packages might have been broken as
>>>>> well, although I haven't found any others.
>>>>>
>>>>> With all these patches, there are still many shared libraries in /lib
>>>>> and /usr/lib that are still not reproducible with LTO enabled because
>>>>> x86_64-poky-linux-libtool filters out the -f*-prefix-map flags added by
>>>>> patch 3 when linking shared libraries.  /usr/lib/libbz2.so.1.0.6 from
>>>>> the libbz2 package from the bzip2 recipe is a good example.  I do not
>>>>> have a patch for that problem.  I will leave that to someone else.
>>>>>
>>>>> So this is what we need to achieve reproducible LTO builds:
>>>>> *) This patch set
>>>>> *) A fix for libtool
>>>>> *) Add LTO to reproducible builds testing if appropriate (e.g.
>>>>> meta/lib/oeqa/selftest/cases/reproducible.py, CI on Autobuilder)
>>>>> *) Fixes for individual packages, if needed
>>>>> *) Once everything works, update the documentation again (I previously
>>>>> requested a documentation change for this bug, which will eventually
>>>>> show up at
>>>>> http://docs.yoctoproject.org/test-manual/reproducible-builds.html).
>>>> This is certainly a few steps in the right direction with a good outline
>>>> of what's next.
>>>>
>>>> I suspect that Richard has been busy with other things like overrides
>>>> and the update to glibc-2.34.
>>>>
>>>> Do you have any suggestions or questions about what we should do
>>>> with this patch series Richard?
>>> Thanks for the reminder, I've been meaning to queue/test this which I will
>>> do. The gcc version has been bumped but I ported the patch forward to it
>>> and the patches are in master-next for testing. It is great to see this
>>> support moving forward.
>>>
>>> Much as it pains me to admit having any libtool knowledge, I may be able to
>>> help with that bit. There is an untested patch below which may address that
>>> issue, or at least give a good hint on how to do it if it doesn't work. I
>>> don't have an environment to test easily right now.
>>>
>>> Cheers,
>>>
>>> Richard
>> I tested your libtool patch in master-next with the bzip2 recipe.  It
>> works as intended; libbz2.so.1.0.6 and all the other output files are
>> now reproducible with LTO enabled.  I also verified that libtool is
>> passing the -f*-prefix-map flags to the link command in log.do_compile
>> as intended.
>>
>> I also verified that core-image-minimal builds successfully with the
>> libtool patch.
> Thanks for testing that, sounds like it helps that issue. I'll queue that patch.
>
> Unfortunately even with the ruby fix I queued, we still see reproduciblity
> issues with the LDFLAGS change in curl-dev, gettext-ptest, ruby and ruby-dbg 
> packages:
>
> https://autobuilder.yoctoproject.org/typhoon/#/builders/115/builds/515/steps/12/logs/stdio
>
> We'll need to resolve those before I can merge the flags change.
>
> Diffoscope output:
>
> https://autobuilder.yocto.io/pub/repro-fail/oe-reproducible-20210805-8jfd55ki/packages/diff-html/
>
> Basically LDFLAGS get encoded into a couple of scripts and the ruby binary.
>
> Cheers,
>
> Richard
>
It looks like the ruby problem is being caused by MJIT_DLDFLAGS in
build/tmp/work/core2-64-poky-linux/ruby/3.0.2-r0/build/mjit_config.h. 
There is already a patch
poky/meta/recipes-devtools/ruby/ruby/0001-template-Makefile.in-do-not-write-host-cross-cc-item.patch
that removes some of these items for the sake of reproducibiltiy.  But I
do not know ruby, so I do not know the implications of doing the same
thing for MJIT_DLDFLAGS.

Tony Battersby




^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [OE-core] [master][PATCH 0/4] Reproducible LTO builds
  2021-08-06 16:44         ` Tony Battersby
@ 2021-08-06 21:04           ` Tony Battersby
  2021-08-07  2:19             ` Khem Raj
  0 siblings, 1 reply; 14+ messages in thread
From: Tony Battersby @ 2021-08-06 21:04 UTC (permalink / raw)
  To: Richard Purdie, Randy MacLeod, openembedded-core,
	openembedded-devel, Khem Raj

On 8/6/21 12:44 PM, Tony Battersby wrote:
> On 8/6/21 1:33 AM, Richard Purdie wrote:
>> On Thu, 2021-08-05 at 17:54 -0400, Tony Battersby wrote:
>>> On 8/5/21 6:21 AM, Richard Purdie wrote:
>>>> On Wed, 2021-08-04 at 20:13 -0400, Randy MacLeod wrote:
>>>>> On 2021-07-27 9:34 a.m., Tony Battersby wrote:
>>>>>> Currently, enabling Link Time Optimization via:
>>>>>>
>>>>>> require conf/distro/include/lto.inc
>>>>>> DISTRO_FEATURES_append = " lto"
>>>>>>
>>>>>> makes the build non-reproducible (as in
>>>>>> https://reproducible-builds.org/).  This patch set fixes some of the
>>>>>> problems, but is not yet a complete solution.
>>>>>>
>>>>>> This patch set addresses the following bugs:
>>>>>> https://bugzilla.yoctoproject.org/show_bug.cgi?id=14481
>>>>>> https://bugzilla.yoctoproject.org/show_bug.cgi?id=14490
>>>>>>
>>>>>> openembedded-core patches
>>>>>> 1/4: lto.inc: disable LTO for grub
>>>>>> 2/4: gcc: Backport patch to make LTO builds more reproducible
>>>>>> 3/4: bitbake.conf: add DEBUG_PREFIX_MAP to TARGET_LDFLAGS
>>>>>>
>>>>>> openembedded-devel patches
>>>>>> 4/4: net-snmp: fix QA Issue after LDFLAGS change
>>>>>>
>>>>>> Patch 3 adds DEBUG_PREFIX_MAP to TARGET_LDFLAGS (it was already in
>>>>>> TARGET_CFLAGS).  This could possibly be done differently, such as by
>>>>>> removing it from TARGET_CFLAGS and adding it to TOOLCHAIN_OPTIONS,
>>>>>> TARGET_CC_ARCH, or TUNE_CCARGS, but I haven't tested those.  Let me know
>>>>>> if there is a better/preferred way to do it.
>>>>>>
>>>>>> The TARGET_LDFLAGS change broke net-snmp from meta-networking, so I have
>>>>>> included a patch to fix that.  Other packages might have been broken as
>>>>>> well, although I haven't found any others.
>>>>>>
>>>>>> With all these patches, there are still many shared libraries in /lib
>>>>>> and /usr/lib that are still not reproducible with LTO enabled because
>>>>>> x86_64-poky-linux-libtool filters out the -f*-prefix-map flags added by
>>>>>> patch 3 when linking shared libraries.  /usr/lib/libbz2.so.1.0.6 from
>>>>>> the libbz2 package from the bzip2 recipe is a good example.  I do not
>>>>>> have a patch for that problem.  I will leave that to someone else.
>>>>>>
>>>>>> So this is what we need to achieve reproducible LTO builds:
>>>>>> *) This patch set
>>>>>> *) A fix for libtool
>>>>>> *) Add LTO to reproducible builds testing if appropriate (e.g.
>>>>>> meta/lib/oeqa/selftest/cases/reproducible.py, CI on Autobuilder)
>>>>>> *) Fixes for individual packages, if needed
>>>>>> *) Once everything works, update the documentation again (I previously
>>>>>> requested a documentation change for this bug, which will eventually
>>>>>> show up at
>>>>>> http://docs.yoctoproject.org/test-manual/reproducible-builds.html).
>>>>> This is certainly a few steps in the right direction with a good outline
>>>>> of what's next.
>>>>>
>>>>> I suspect that Richard has been busy with other things like overrides
>>>>> and the update to glibc-2.34.
>>>>>
>>>>> Do you have any suggestions or questions about what we should do
>>>>> with this patch series Richard?
>>>> Thanks for the reminder, I've been meaning to queue/test this which I will
>>>> do. The gcc version has been bumped but I ported the patch forward to it
>>>> and the patches are in master-next for testing. It is great to see this
>>>> support moving forward.
>>>>
>>>> Much as it pains me to admit having any libtool knowledge, I may be able to
>>>> help with that bit. There is an untested patch below which may address that
>>>> issue, or at least give a good hint on how to do it if it doesn't work. I
>>>> don't have an environment to test easily right now.
>>>>
>>>> Cheers,
>>>>
>>>> Richard
>>> I tested your libtool patch in master-next with the bzip2 recipe.  It
>>> works as intended; libbz2.so.1.0.6 and all the other output files are
>>> now reproducible with LTO enabled.  I also verified that libtool is
>>> passing the -f*-prefix-map flags to the link command in log.do_compile
>>> as intended.
>>>
>>> I also verified that core-image-minimal builds successfully with the
>>> libtool patch.
>> Thanks for testing that, sounds like it helps that issue. I'll queue that patch.
>>
>> Unfortunately even with the ruby fix I queued, we still see reproduciblity
>> issues with the LDFLAGS change in curl-dev, gettext-ptest, ruby and ruby-dbg 
>> packages:
>>
>> https://autobuilder.yoctoproject.org/typhoon/#/builders/115/builds/515/steps/12/logs/stdio
>>
>> We'll need to resolve those before I can merge the flags change.
>>
>> Diffoscope output:
>>
>> https://autobuilder.yocto.io/pub/repro-fail/oe-reproducible-20210805-8jfd55ki/packages/diff-html/
>>
>> Basically LDFLAGS get encoded into a couple of scripts and the ruby binary.
>>
>> Cheers,
>>
>> Richard
>>
> It looks like the ruby problem is being caused by MJIT_DLDFLAGS in
> build/tmp/work/core2-64-poky-linux/ruby/3.0.2-r0/build/mjit_config.h. 
> There is already a patch
> poky/meta/recipes-devtools/ruby/ruby/0001-template-Makefile.in-do-not-write-host-cross-cc-item.patch
> that removes some of these items for the sake of reproducibiltiy.  But I
> do not know ruby, so I do not know the implications of doing the same
> thing for MJIT_DLDFLAGS.
>
> Tony Battersby
>
>
>
Richard,

I noticed that you already fixed the problems in curl and gettext in
master-next.  Here is a patch for ruby if you haven't fixed that already.

Tony Battersby

From 9cfb9777ff6ef95a27ed6a03719c807365d0f116 Mon Sep 17 00:00:00 2001
From: Tony Battersby <tonyb@cybernetics.com>
Date: Fri, 6 Aug 2021 16:47:14 -0400
Subject: [PATCH] ruby: Fix reproducibility issue with LDFLAGS

If we add DEBUG_PREFIX_MAP into LDFLAGS, ruby and ruby-dbg are no
longer reproducible.  Fix this.

Signed-off-by: Tony Battersby <tonyb@cybernetics.com>
---
 ...-Makefile.in-filter-out-f-prefix-map.patch | 42 +++++++++++++++++++
 meta/recipes-devtools/ruby/ruby_3.0.2.bb      |  1 +
 2 files changed, 43 insertions(+)
 create mode 100644 meta/recipes-devtools/ruby/ruby/0002-template-Makefile.in-filter-out-f-prefix-map.patch

diff --git a/meta/recipes-devtools/ruby/ruby/0002-template-Makefile.in-filter-out-f-prefix-map.patch b/meta/recipes-devtools/ruby/ruby/0002-template-Makefile.in-filter-out-f-prefix-map.patch
new file mode 100644
index 0000000000..9387506c26
--- /dev/null
+++ b/meta/recipes-devtools/ruby/ruby/0002-template-Makefile.in-filter-out-f-prefix-map.patch
@@ -0,0 +1,42 @@
+Subject: [PATCH] template/Makefile.in: filter out -f*prefix-map
+
+If we add DEBUG_PREFIX_MAP into LDFLAGS, ruby and ruby-dbg are no longer
+reproducible.  Fix this.
+
+Upstream-Status: Inapproppriate [oe-core specific]
+Signed-off-by: Tony Battersby <tonyb@cybernetics.com>
+---
+--- a/tool/mjit_archflag.sh
++++ b/tool/mjit_archflag.sh
+@@ -7,6 +7,20 @@ quote() {
+     echo
+ }
+ 
++quote_filtered() {
++    printf "#${indent}define $1"
++    while shift && [ "$#" -gt 0 ]; do
++	case "$1" in
++	    -ffile-prefix-map=*|-fdebug-prefix-map=*|-fmacro-prefix-map=*)
++		;;
++	    *)
++		printf ' "%s"'$sep "$1"
++		;;
++	esac
++    done
++    echo
++}
++
+ archs=""
+ arch_flag=""
+ 
+--- a/template/Makefile.in
++++ b/template/Makefile.in
+@@ -666,7 +666,7 @@ mjit_config.h:
+ 	quote "MJIT_OPTFLAGS   " $(MJIT_OPTFLAGS); \
+ 	quote "MJIT_DEBUGFLAGS " $(MJIT_DEBUGFLAGS); \
+ 	quote "MJIT_LDSHARED   " ; \
+-	quote "MJIT_DLDFLAGS    MJIT_ARCHFLAG" $(MJIT_DLDFLAGS); \
++	quote_filtered "MJIT_DLDFLAGS    MJIT_ARCHFLAG" $(MJIT_DLDFLAGS); \
+ 	quote "MJIT_LIBS       " $(LIBRUBYARG_SHARED); \
+ 	quote 'PRELOADENV       "@PRELOADENV@"'; \
+ 	indent=$${archs:+'  '}; \
diff --git a/meta/recipes-devtools/ruby/ruby_3.0.2.bb b/meta/recipes-devtools/ruby/ruby_3.0.2.bb
index 0b9c342def..38e594a59e 100644
--- a/meta/recipes-devtools/ruby/ruby_3.0.2.bb
+++ b/meta/recipes-devtools/ruby/ruby_3.0.2.bb
@@ -6,6 +6,7 @@ SRC_URI += " \
            file://remove_has_include_macros.patch \
            file://run-ptest \
            file://0001-template-Makefile.in-do-not-write-host-cross-cc-item.patch \
+           file://0002-template-Makefile.in-filter-out-f-prefix-map.patch \
            "
 
 SRC_URI[sha256sum] = "5085dee0ad9f06996a8acec7ebea4a8735e6fac22f22e2d98c3f2bc3bef7e6f1"
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [OE-core] [master][PATCH 0/4] Reproducible LTO builds
  2021-08-06 21:04           ` Tony Battersby
@ 2021-08-07  2:19             ` Khem Raj
  2021-08-09 14:32               ` [meta-networking][master][PATCH 1/2] curlpp: fix QA Issue after LDFLAGS change Tony Battersby
                                 ` (2 more replies)
  0 siblings, 3 replies; 14+ messages in thread
From: Khem Raj @ 2021-08-07  2:19 UTC (permalink / raw)
  To: Tony Battersby
  Cc: Richard Purdie, Randy MacLeod,
	Patches and discussions about the oe-core layer,
	openembeded-devel

I am seeing bunch of failures on meta-oe and meta-atmel

https://errors.yoctoproject.org/Errors/Details/600064/
https://errors.yoctoproject.org/Errors/Details/600065/
https://errors.yoctoproject.org/Errors/Details/600071/

On Fri, Aug 6, 2021 at 2:04 PM Tony Battersby <tonyb@cybernetics.com> wrote:
>
> On 8/6/21 12:44 PM, Tony Battersby wrote:
> > On 8/6/21 1:33 AM, Richard Purdie wrote:
> >> On Thu, 2021-08-05 at 17:54 -0400, Tony Battersby wrote:
> >>> On 8/5/21 6:21 AM, Richard Purdie wrote:
> >>>> On Wed, 2021-08-04 at 20:13 -0400, Randy MacLeod wrote:
> >>>>> On 2021-07-27 9:34 a.m., Tony Battersby wrote:
> >>>>>> Currently, enabling Link Time Optimization via:
> >>>>>>
> >>>>>> require conf/distro/include/lto.inc
> >>>>>> DISTRO_FEATURES_append = " lto"
> >>>>>>
> >>>>>> makes the build non-reproducible (as in
> >>>>>> https://reproducible-builds.org/).  This patch set fixes some of the
> >>>>>> problems, but is not yet a complete solution.
> >>>>>>
> >>>>>> This patch set addresses the following bugs:
> >>>>>> https://bugzilla.yoctoproject.org/show_bug.cgi?id=14481
> >>>>>> https://bugzilla.yoctoproject.org/show_bug.cgi?id=14490
> >>>>>>
> >>>>>> openembedded-core patches
> >>>>>> 1/4: lto.inc: disable LTO for grub
> >>>>>> 2/4: gcc: Backport patch to make LTO builds more reproducible
> >>>>>> 3/4: bitbake.conf: add DEBUG_PREFIX_MAP to TARGET_LDFLAGS
> >>>>>>
> >>>>>> openembedded-devel patches
> >>>>>> 4/4: net-snmp: fix QA Issue after LDFLAGS change
> >>>>>>
> >>>>>> Patch 3 adds DEBUG_PREFIX_MAP to TARGET_LDFLAGS (it was already in
> >>>>>> TARGET_CFLAGS).  This could possibly be done differently, such as by
> >>>>>> removing it from TARGET_CFLAGS and adding it to TOOLCHAIN_OPTIONS,
> >>>>>> TARGET_CC_ARCH, or TUNE_CCARGS, but I haven't tested those.  Let me know
> >>>>>> if there is a better/preferred way to do it.
> >>>>>>
> >>>>>> The TARGET_LDFLAGS change broke net-snmp from meta-networking, so I have
> >>>>>> included a patch to fix that.  Other packages might have been broken as
> >>>>>> well, although I haven't found any others.
> >>>>>>
> >>>>>> With all these patches, there are still many shared libraries in /lib
> >>>>>> and /usr/lib that are still not reproducible with LTO enabled because
> >>>>>> x86_64-poky-linux-libtool filters out the -f*-prefix-map flags added by
> >>>>>> patch 3 when linking shared libraries.  /usr/lib/libbz2.so.1.0.6 from
> >>>>>> the libbz2 package from the bzip2 recipe is a good example.  I do not
> >>>>>> have a patch for that problem.  I will leave that to someone else.
> >>>>>>
> >>>>>> So this is what we need to achieve reproducible LTO builds:
> >>>>>> *) This patch set
> >>>>>> *) A fix for libtool
> >>>>>> *) Add LTO to reproducible builds testing if appropriate (e.g.
> >>>>>> meta/lib/oeqa/selftest/cases/reproducible.py, CI on Autobuilder)
> >>>>>> *) Fixes for individual packages, if needed
> >>>>>> *) Once everything works, update the documentation again (I previously
> >>>>>> requested a documentation change for this bug, which will eventually
> >>>>>> show up at
> >>>>>> http://docs.yoctoproject.org/test-manual/reproducible-builds.html).
> >>>>> This is certainly a few steps in the right direction with a good outline
> >>>>> of what's next.
> >>>>>
> >>>>> I suspect that Richard has been busy with other things like overrides
> >>>>> and the update to glibc-2.34.
> >>>>>
> >>>>> Do you have any suggestions or questions about what we should do
> >>>>> with this patch series Richard?
> >>>> Thanks for the reminder, I've been meaning to queue/test this which I will
> >>>> do. The gcc version has been bumped but I ported the patch forward to it
> >>>> and the patches are in master-next for testing. It is great to see this
> >>>> support moving forward.
> >>>>
> >>>> Much as it pains me to admit having any libtool knowledge, I may be able to
> >>>> help with that bit. There is an untested patch below which may address that
> >>>> issue, or at least give a good hint on how to do it if it doesn't work. I
> >>>> don't have an environment to test easily right now.
> >>>>
> >>>> Cheers,
> >>>>
> >>>> Richard
> >>> I tested your libtool patch in master-next with the bzip2 recipe.  It
> >>> works as intended; libbz2.so.1.0.6 and all the other output files are
> >>> now reproducible with LTO enabled.  I also verified that libtool is
> >>> passing the -f*-prefix-map flags to the link command in log.do_compile
> >>> as intended.
> >>>
> >>> I also verified that core-image-minimal builds successfully with the
> >>> libtool patch.
> >> Thanks for testing that, sounds like it helps that issue. I'll queue that patch.
> >>
> >> Unfortunately even with the ruby fix I queued, we still see reproduciblity
> >> issues with the LDFLAGS change in curl-dev, gettext-ptest, ruby and ruby-dbg
> >> packages:
> >>
> >> https://autobuilder.yoctoproject.org/typhoon/#/builders/115/builds/515/steps/12/logs/stdio
> >>
> >> We'll need to resolve those before I can merge the flags change.
> >>
> >> Diffoscope output:
> >>
> >> https://autobuilder.yocto.io/pub/repro-fail/oe-reproducible-20210805-8jfd55ki/packages/diff-html/
> >>
> >> Basically LDFLAGS get encoded into a couple of scripts and the ruby binary.
> >>
> >> Cheers,
> >>
> >> Richard
> >>
> > It looks like the ruby problem is being caused by MJIT_DLDFLAGS in
> > build/tmp/work/core2-64-poky-linux/ruby/3.0.2-r0/build/mjit_config.h.
> > There is already a patch
> > poky/meta/recipes-devtools/ruby/ruby/0001-template-Makefile.in-do-not-write-host-cross-cc-item.patch
> > that removes some of these items for the sake of reproducibiltiy.  But I
> > do not know ruby, so I do not know the implications of doing the same
> > thing for MJIT_DLDFLAGS.
> >
> > Tony Battersby
> >
> >
> >
> Richard,
>
> I noticed that you already fixed the problems in curl and gettext in
> master-next.  Here is a patch for ruby if you haven't fixed that already.
>
> Tony Battersby
>
> From 9cfb9777ff6ef95a27ed6a03719c807365d0f116 Mon Sep 17 00:00:00 2001
> From: Tony Battersby <tonyb@cybernetics.com>
> Date: Fri, 6 Aug 2021 16:47:14 -0400
> Subject: [PATCH] ruby: Fix reproducibility issue with LDFLAGS
>
> If we add DEBUG_PREFIX_MAP into LDFLAGS, ruby and ruby-dbg are no
> longer reproducible.  Fix this.
>
> Signed-off-by: Tony Battersby <tonyb@cybernetics.com>
> ---
>  ...-Makefile.in-filter-out-f-prefix-map.patch | 42 +++++++++++++++++++
>  meta/recipes-devtools/ruby/ruby_3.0.2.bb      |  1 +
>  2 files changed, 43 insertions(+)
>  create mode 100644 meta/recipes-devtools/ruby/ruby/0002-template-Makefile.in-filter-out-f-prefix-map.patch
>
> diff --git a/meta/recipes-devtools/ruby/ruby/0002-template-Makefile.in-filter-out-f-prefix-map.patch b/meta/recipes-devtools/ruby/ruby/0002-template-Makefile.in-filter-out-f-prefix-map.patch
> new file mode 100644
> index 0000000000..9387506c26
> --- /dev/null
> +++ b/meta/recipes-devtools/ruby/ruby/0002-template-Makefile.in-filter-out-f-prefix-map.patch
> @@ -0,0 +1,42 @@
> +Subject: [PATCH] template/Makefile.in: filter out -f*prefix-map
> +
> +If we add DEBUG_PREFIX_MAP into LDFLAGS, ruby and ruby-dbg are no longer
> +reproducible.  Fix this.
> +
> +Upstream-Status: Inapproppriate [oe-core specific]
> +Signed-off-by: Tony Battersby <tonyb@cybernetics.com>
> +---
> +--- a/tool/mjit_archflag.sh
> ++++ b/tool/mjit_archflag.sh
> +@@ -7,6 +7,20 @@ quote() {
> +     echo
> + }
> +
> ++quote_filtered() {
> ++    printf "#${indent}define $1"
> ++    while shift && [ "$#" -gt 0 ]; do
> ++      case "$1" in
> ++          -ffile-prefix-map=*|-fdebug-prefix-map=*|-fmacro-prefix-map=*)
> ++              ;;
> ++          *)
> ++              printf ' "%s"'$sep "$1"
> ++              ;;
> ++      esac
> ++    done
> ++    echo
> ++}
> ++
> + archs=""
> + arch_flag=""
> +
> +--- a/template/Makefile.in
> ++++ b/template/Makefile.in
> +@@ -666,7 +666,7 @@ mjit_config.h:
> +       quote "MJIT_OPTFLAGS   " $(MJIT_OPTFLAGS); \
> +       quote "MJIT_DEBUGFLAGS " $(MJIT_DEBUGFLAGS); \
> +       quote "MJIT_LDSHARED   " ; \
> +-      quote "MJIT_DLDFLAGS    MJIT_ARCHFLAG" $(MJIT_DLDFLAGS); \
> ++      quote_filtered "MJIT_DLDFLAGS    MJIT_ARCHFLAG" $(MJIT_DLDFLAGS); \
> +       quote "MJIT_LIBS       " $(LIBRUBYARG_SHARED); \
> +       quote 'PRELOADENV       "@PRELOADENV@"'; \
> +       indent=$${archs:+'  '}; \
> diff --git a/meta/recipes-devtools/ruby/ruby_3.0.2.bb b/meta/recipes-devtools/ruby/ruby_3.0.2.bb
> index 0b9c342def..38e594a59e 100644
> --- a/meta/recipes-devtools/ruby/ruby_3.0.2.bb
> +++ b/meta/recipes-devtools/ruby/ruby_3.0.2.bb
> @@ -6,6 +6,7 @@ SRC_URI += " \
>             file://remove_has_include_macros.patch \
>             file://run-ptest \
>             file://0001-template-Makefile.in-do-not-write-host-cross-cc-item.patch \
> +           file://0002-template-Makefile.in-filter-out-f-prefix-map.patch \
>             "
>
>  SRC_URI[sha256sum] = "5085dee0ad9f06996a8acec7ebea4a8735e6fac22f22e2d98c3f2bc3bef7e6f1"
> --
> 2.25.1
>

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [meta-networking][master][PATCH 1/2] curlpp: fix QA Issue after LDFLAGS change
  2021-08-07  2:19             ` Khem Raj
@ 2021-08-09 14:32               ` Tony Battersby
  2021-08-09 14:32               ` [meta-oe][master][PATCH 2/2] ldns: " Tony Battersby
  2021-08-09 14:39               ` [OE-core] [master][PATCH 0/4] Reproducible LTO builds Tony Battersby
  2 siblings, 0 replies; 14+ messages in thread
From: Tony Battersby @ 2021-08-09 14:32 UTC (permalink / raw)
  To: Khem Raj, openembeded-devel
  Cc: Richard Purdie, Randy MacLeod,
	Patches and discussions about the oe-core layer

Adding -f*-prefix-map to LDFLAGS caused the following issue:

QA Issue: curlpp.pc failed sanity test (tmpdir)

Fix by filtering out -f*-prefix-map from *.pc files.

[YOCTO #14481]

Signed-off-by: Tony Battersby <tonyb@cybernetics.com>
---
 meta-networking/recipes-support/curlpp/curlpp_0.8.1.bb | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/meta-networking/recipes-support/curlpp/curlpp_0.8.1.bb b/meta-networking/recipes-support/curlpp/curlpp_0.8.1.bb
index 6ce52d717..263de81c7 100644
--- a/meta-networking/recipes-support/curlpp/curlpp_0.8.1.bb
+++ b/meta-networking/recipes-support/curlpp/curlpp_0.8.1.bb
@@ -16,3 +16,10 @@ S = "${WORKDIR}/git"
 inherit cmake pkgconfig binconfig
 
 BBCLASSEXTEND = "native nativesdk"
+
+do_install:append() {
+    sed -e 's@[^ ]*-ffile-prefix-map=[^ "]*@@g' \
+        -e 's@[^ ]*-fdebug-prefix-map=[^ "]*@@g' \
+        -e 's@[^ ]*-fmacro-prefix-map=[^ "]*@@g' \
+        -i ${D}${libdir}/pkgconfig/*.pc
+}
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [meta-oe][master][PATCH 2/2] ldns: fix QA Issue after LDFLAGS change
  2021-08-07  2:19             ` Khem Raj
  2021-08-09 14:32               ` [meta-networking][master][PATCH 1/2] curlpp: fix QA Issue after LDFLAGS change Tony Battersby
@ 2021-08-09 14:32               ` Tony Battersby
  2021-08-09 14:39               ` [OE-core] [master][PATCH 0/4] Reproducible LTO builds Tony Battersby
  2 siblings, 0 replies; 14+ messages in thread
From: Tony Battersby @ 2021-08-09 14:32 UTC (permalink / raw)
  To: Khem Raj, openembeded-devel
  Cc: Richard Purdie, Randy MacLeod,
	Patches and discussions about the oe-core layer

Adding -f*-prefix-map to LDFLAGS caused the following issue:

QA Issue: ldns.pc failed sanity test (tmpdir)

Fix by filtering out -f*-prefix-map from *.pc files.

[YOCTO #14481]

Signed-off-by: Tony Battersby <tonyb@cybernetics.com>
---
 meta-oe/recipes-devtools/ldns/ldns_1.7.1.bb | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/meta-oe/recipes-devtools/ldns/ldns_1.7.1.bb b/meta-oe/recipes-devtools/ldns/ldns_1.7.1.bb
index 2a52dd688..2ce669154 100644
--- a/meta-oe/recipes-devtools/ldns/ldns_1.7.1.bb
+++ b/meta-oe/recipes-devtools/ldns/ldns_1.7.1.bb
@@ -16,3 +16,10 @@ PACKAGECONFIG[drill] = "--with-drill,--without-drill"
 
 EXTRA_OECONF = "--with-ssl=${STAGING_EXECPREFIXDIR} \
                 libtool=${TARGET_PREFIX}libtool"
+
+do_install:append() {
+    sed -e 's@[^ ]*-ffile-prefix-map=[^ "]*@@g' \
+        -e 's@[^ ]*-fdebug-prefix-map=[^ "]*@@g' \
+        -e 's@[^ ]*-fmacro-prefix-map=[^ "]*@@g' \
+        -i ${D}${libdir}/pkgconfig/*.pc
+}
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [OE-core] [master][PATCH 0/4] Reproducible LTO builds
  2021-08-07  2:19             ` Khem Raj
  2021-08-09 14:32               ` [meta-networking][master][PATCH 1/2] curlpp: fix QA Issue after LDFLAGS change Tony Battersby
  2021-08-09 14:32               ` [meta-oe][master][PATCH 2/2] ldns: " Tony Battersby
@ 2021-08-09 14:39               ` Tony Battersby
  2021-08-09 17:18                 ` Khem Raj
  2 siblings, 1 reply; 14+ messages in thread
From: Tony Battersby @ 2021-08-09 14:39 UTC (permalink / raw)
  To: Khem Raj
  Cc: Richard Purdie, Randy MacLeod,
	Patches and discussions about the oe-core layer,
	openembeded-devel

On 8/6/21 10:19 PM, Khem Raj wrote:
> I am seeing bunch of failures on meta-oe and meta-atmel
>
> https://errors.yoctoproject.org/Errors/Details/600064/
> https://errors.yoctoproject.org/Errors/Details/600065/
> https://errors.yoctoproject.org/Errors/Details/600071/
>
>
I sent patches for meta-openembedded, but I am not sure how to build
meta-atmel:

bitbake libegl
ERROR: Layer atmel is not compatible with the core layer which only
supports these series: honister (layer is compatible with hardknott)

But the fix is probably the same as the ones I sent for the other
packages (which I copied from
meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp_5.9.1.bb).

Tony Battersby


> On Fri, Aug 6, 2021 at 2:04 PM Tony Battersby <tonyb@cybernetics.com> wrote:
>> On 8/6/21 12:44 PM, Tony Battersby wrote:
>>> On 8/6/21 1:33 AM, Richard Purdie wrote:
>>>> On Thu, 2021-08-05 at 17:54 -0400, Tony Battersby wrote:
>>>>> On 8/5/21 6:21 AM, Richard Purdie wrote:
>>>>>> On Wed, 2021-08-04 at 20:13 -0400, Randy MacLeod wrote:
>>>>>>> On 2021-07-27 9:34 a.m., Tony Battersby wrote:
>>>>>>>> Currently, enabling Link Time Optimization via:
>>>>>>>>
>>>>>>>> require conf/distro/include/lto.inc
>>>>>>>> DISTRO_FEATURES_append = " lto"
>>>>>>>>
>>>>>>>> makes the build non-reproducible (as in
>>>>>>>> https://reproducible-builds.org/).  This patch set fixes some of the
>>>>>>>> problems, but is not yet a complete solution.
>>>>>>>>
>>>>>>>> This patch set addresses the following bugs:
>>>>>>>> https://bugzilla.yoctoproject.org/show_bug.cgi?id=14481
>>>>>>>> https://bugzilla.yoctoproject.org/show_bug.cgi?id=14490
>>>>>>>>
>>>>>>>> openembedded-core patches
>>>>>>>> 1/4: lto.inc: disable LTO for grub
>>>>>>>> 2/4: gcc: Backport patch to make LTO builds more reproducible
>>>>>>>> 3/4: bitbake.conf: add DEBUG_PREFIX_MAP to TARGET_LDFLAGS
>>>>>>>>
>>>>>>>> openembedded-devel patches
>>>>>>>> 4/4: net-snmp: fix QA Issue after LDFLAGS change
>>>>>>>>
>>>>>>>> Patch 3 adds DEBUG_PREFIX_MAP to TARGET_LDFLAGS (it was already in
>>>>>>>> TARGET_CFLAGS).  This could possibly be done differently, such as by
>>>>>>>> removing it from TARGET_CFLAGS and adding it to TOOLCHAIN_OPTIONS,
>>>>>>>> TARGET_CC_ARCH, or TUNE_CCARGS, but I haven't tested those.  Let me know
>>>>>>>> if there is a better/preferred way to do it.
>>>>>>>>
>>>>>>>> The TARGET_LDFLAGS change broke net-snmp from meta-networking, so I have
>>>>>>>> included a patch to fix that.  Other packages might have been broken as
>>>>>>>> well, although I haven't found any others.
>>>>>>>>
>>>>>>>> With all these patches, there are still many shared libraries in /lib
>>>>>>>> and /usr/lib that are still not reproducible with LTO enabled because
>>>>>>>> x86_64-poky-linux-libtool filters out the -f*-prefix-map flags added by
>>>>>>>> patch 3 when linking shared libraries.  /usr/lib/libbz2.so.1.0.6 from
>>>>>>>> the libbz2 package from the bzip2 recipe is a good example.  I do not
>>>>>>>> have a patch for that problem.  I will leave that to someone else.
>>>>>>>>
>>>>>>>> So this is what we need to achieve reproducible LTO builds:
>>>>>>>> *) This patch set
>>>>>>>> *) A fix for libtool
>>>>>>>> *) Add LTO to reproducible builds testing if appropriate (e.g.
>>>>>>>> meta/lib/oeqa/selftest/cases/reproducible.py, CI on Autobuilder)
>>>>>>>> *) Fixes for individual packages, if needed
>>>>>>>> *) Once everything works, update the documentation again (I previously
>>>>>>>> requested a documentation change for this bug, which will eventually
>>>>>>>> show up at
>>>>>>>> http://docs.yoctoproject.org/test-manual/reproducible-builds.html).
>>>>>>> This is certainly a few steps in the right direction with a good outline
>>>>>>> of what's next.
>>>>>>>
>>>>>>> I suspect that Richard has been busy with other things like overrides
>>>>>>> and the update to glibc-2.34.
>>>>>>>
>>>>>>> Do you have any suggestions or questions about what we should do
>>>>>>> with this patch series Richard?
>>>>>> Thanks for the reminder, I've been meaning to queue/test this which I will
>>>>>> do. The gcc version has been bumped but I ported the patch forward to it
>>>>>> and the patches are in master-next for testing. It is great to see this
>>>>>> support moving forward.
>>>>>>
>>>>>> Much as it pains me to admit having any libtool knowledge, I may be able to
>>>>>> help with that bit. There is an untested patch below which may address that
>>>>>> issue, or at least give a good hint on how to do it if it doesn't work. I
>>>>>> don't have an environment to test easily right now.
>>>>>>
>>>>>> Cheers,
>>>>>>
>>>>>> Richard
>>>>> I tested your libtool patch in master-next with the bzip2 recipe.  It
>>>>> works as intended; libbz2.so.1.0.6 and all the other output files are
>>>>> now reproducible with LTO enabled.  I also verified that libtool is
>>>>> passing the -f*-prefix-map flags to the link command in log.do_compile
>>>>> as intended.
>>>>>
>>>>> I also verified that core-image-minimal builds successfully with the
>>>>> libtool patch.
>>>> Thanks for testing that, sounds like it helps that issue. I'll queue that patch.
>>>>
>>>> Unfortunately even with the ruby fix I queued, we still see reproduciblity
>>>> issues with the LDFLAGS change in curl-dev, gettext-ptest, ruby and ruby-dbg
>>>> packages:
>>>>
>>>> https://autobuilder.yoctoproject.org/typhoon/#/builders/115/builds/515/steps/12/logs/stdio
>>>>
>>>> We'll need to resolve those before I can merge the flags change.
>>>>
>>>> Diffoscope output:
>>>>
>>>> https://autobuilder.yocto.io/pub/repro-fail/oe-reproducible-20210805-8jfd55ki/packages/diff-html/
>>>>
>>>> Basically LDFLAGS get encoded into a couple of scripts and the ruby binary.
>>>>
>>>> Cheers,
>>>>
>>>> Richard
>>>>
>>> It looks like the ruby problem is being caused by MJIT_DLDFLAGS in
>>> build/tmp/work/core2-64-poky-linux/ruby/3.0.2-r0/build/mjit_config.h.
>>> There is already a patch
>>> poky/meta/recipes-devtools/ruby/ruby/0001-template-Makefile.in-do-not-write-host-cross-cc-item.patch
>>> that removes some of these items for the sake of reproducibiltiy.  But I
>>> do not know ruby, so I do not know the implications of doing the same
>>> thing for MJIT_DLDFLAGS.
>>>
>>> Tony Battersby
>>>
>>>
>>>
>> Richard,
>>
>> I noticed that you already fixed the problems in curl and gettext in
>> master-next.  Here is a patch for ruby if you haven't fixed that already.
>>
>> Tony Battersby
>>
>> From 9cfb9777ff6ef95a27ed6a03719c807365d0f116 Mon Sep 17 00:00:00 2001
>> From: Tony Battersby <tonyb@cybernetics.com>
>> Date: Fri, 6 Aug 2021 16:47:14 -0400
>> Subject: [PATCH] ruby: Fix reproducibility issue with LDFLAGS
>>
>> If we add DEBUG_PREFIX_MAP into LDFLAGS, ruby and ruby-dbg are no
>> longer reproducible.  Fix this.
>>
>> Signed-off-by: Tony Battersby <tonyb@cybernetics.com>
>> ---
>>  ...-Makefile.in-filter-out-f-prefix-map.patch | 42 +++++++++++++++++++
>>  meta/recipes-devtools/ruby/ruby_3.0.2.bb      |  1 +
>>  2 files changed, 43 insertions(+)
>>  create mode 100644 meta/recipes-devtools/ruby/ruby/0002-template-Makefile.in-filter-out-f-prefix-map.patch
>>
>> diff --git a/meta/recipes-devtools/ruby/ruby/0002-template-Makefile.in-filter-out-f-prefix-map.patch b/meta/recipes-devtools/ruby/ruby/0002-template-Makefile.in-filter-out-f-prefix-map.patch
>> new file mode 100644
>> index 0000000000..9387506c26
>> --- /dev/null
>> +++ b/meta/recipes-devtools/ruby/ruby/0002-template-Makefile.in-filter-out-f-prefix-map.patch
>> @@ -0,0 +1,42 @@
>> +Subject: [PATCH] template/Makefile.in: filter out -f*prefix-map
>> +
>> +If we add DEBUG_PREFIX_MAP into LDFLAGS, ruby and ruby-dbg are no longer
>> +reproducible.  Fix this.
>> +
>> +Upstream-Status: Inapproppriate [oe-core specific]
>> +Signed-off-by: Tony Battersby <tonyb@cybernetics.com>
>> +---
>> +--- a/tool/mjit_archflag.sh
>> ++++ b/tool/mjit_archflag.sh
>> +@@ -7,6 +7,20 @@ quote() {
>> +     echo
>> + }
>> +
>> ++quote_filtered() {
>> ++    printf "#${indent}define $1"
>> ++    while shift && [ "$#" -gt 0 ]; do
>> ++      case "$1" in
>> ++          -ffile-prefix-map=*|-fdebug-prefix-map=*|-fmacro-prefix-map=*)
>> ++              ;;
>> ++          *)
>> ++              printf ' "%s"'$sep "$1"
>> ++              ;;
>> ++      esac
>> ++    done
>> ++    echo
>> ++}
>> ++
>> + archs=""
>> + arch_flag=""
>> +
>> +--- a/template/Makefile.in
>> ++++ b/template/Makefile.in
>> +@@ -666,7 +666,7 @@ mjit_config.h:
>> +       quote "MJIT_OPTFLAGS   " $(MJIT_OPTFLAGS); \
>> +       quote "MJIT_DEBUGFLAGS " $(MJIT_DEBUGFLAGS); \
>> +       quote "MJIT_LDSHARED   " ; \
>> +-      quote "MJIT_DLDFLAGS    MJIT_ARCHFLAG" $(MJIT_DLDFLAGS); \
>> ++      quote_filtered "MJIT_DLDFLAGS    MJIT_ARCHFLAG" $(MJIT_DLDFLAGS); \
>> +       quote "MJIT_LIBS       " $(LIBRUBYARG_SHARED); \
>> +       quote 'PRELOADENV       "@PRELOADENV@"'; \
>> +       indent=$${archs:+'  '}; \
>> diff --git a/meta/recipes-devtools/ruby/ruby_3.0.2.bb b/meta/recipes-devtools/ruby/ruby_3.0.2.bb
>> index 0b9c342def..38e594a59e 100644
>> --- a/meta/recipes-devtools/ruby/ruby_3.0.2.bb
>> +++ b/meta/recipes-devtools/ruby/ruby_3.0.2.bb
>> @@ -6,6 +6,7 @@ SRC_URI += " \
>>             file://remove_has_include_macros.patch \
>>             file://run-ptest \
>>             file://0001-template-Makefile.in-do-not-write-host-cross-cc-item.patch \
>> +           file://0002-template-Makefile.in-filter-out-f-prefix-map.patch \
>>             "
>>
>>  SRC_URI[sha256sum] = "5085dee0ad9f06996a8acec7ebea4a8735e6fac22f22e2d98c3f2bc3bef7e6f1"
>> --
>> 2.25.1
>>


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [OE-core] [master][PATCH 0/4] Reproducible LTO builds
  2021-08-09 14:39               ` [OE-core] [master][PATCH 0/4] Reproducible LTO builds Tony Battersby
@ 2021-08-09 17:18                 ` Khem Raj
  2021-08-10 16:57                   ` Khem Raj
  0 siblings, 1 reply; 14+ messages in thread
From: Khem Raj @ 2021-08-09 17:18 UTC (permalink / raw)
  To: Tony Battersby
  Cc: Richard Purdie, Randy MacLeod,
	Patches and discussions about the oe-core layer,
	openembeded-devel



On 8/9/21 7:39 AM, Tony Battersby wrote:
> On 8/6/21 10:19 PM, Khem Raj wrote:
>> I am seeing bunch of failures on meta-oe and meta-atmel
>>
>> https://errors.yoctoproject.org/Errors/Details/600064/
>> https://errors.yoctoproject.org/Errors/Details/600065/
>> https://errors.yoctoproject.org/Errors/Details/600071/
>>
>>
> I sent patches for meta-openembedded, but I am not sure how to build
> meta-atmel:
> 
> bitbake libegl
> ERROR: Layer atmel is not compatible with the core layer which only
> supports these series: honister (layer is compatible with hardknott)

you can use my branch which has fixes for override problem

https://github.com/YoeDistro/meta-atmel/tree/yoe/mut


> 
> But the fix is probably the same as the ones I sent for the other
> packages (which I copied from
> meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp_5.9.1.bb).
> 
> Tony Battersby
> 
> 
>> On Fri, Aug 6, 2021 at 2:04 PM Tony Battersby <tonyb@cybernetics.com> wrote:
>>> On 8/6/21 12:44 PM, Tony Battersby wrote:
>>>> On 8/6/21 1:33 AM, Richard Purdie wrote:
>>>>> On Thu, 2021-08-05 at 17:54 -0400, Tony Battersby wrote:
>>>>>> On 8/5/21 6:21 AM, Richard Purdie wrote:
>>>>>>> On Wed, 2021-08-04 at 20:13 -0400, Randy MacLeod wrote:
>>>>>>>> On 2021-07-27 9:34 a.m., Tony Battersby wrote:
>>>>>>>>> Currently, enabling Link Time Optimization via:
>>>>>>>>>
>>>>>>>>> require conf/distro/include/lto.inc
>>>>>>>>> DISTRO_FEATURES_append = " lto"
>>>>>>>>>
>>>>>>>>> makes the build non-reproducible (as in
>>>>>>>>> https://reproducible-builds.org/).  This patch set fixes some of the
>>>>>>>>> problems, but is not yet a complete solution.
>>>>>>>>>
>>>>>>>>> This patch set addresses the following bugs:
>>>>>>>>> https://bugzilla.yoctoproject.org/show_bug.cgi?id=14481
>>>>>>>>> https://bugzilla.yoctoproject.org/show_bug.cgi?id=14490
>>>>>>>>>
>>>>>>>>> openembedded-core patches
>>>>>>>>> 1/4: lto.inc: disable LTO for grub
>>>>>>>>> 2/4: gcc: Backport patch to make LTO builds more reproducible
>>>>>>>>> 3/4: bitbake.conf: add DEBUG_PREFIX_MAP to TARGET_LDFLAGS
>>>>>>>>>
>>>>>>>>> openembedded-devel patches
>>>>>>>>> 4/4: net-snmp: fix QA Issue after LDFLAGS change
>>>>>>>>>
>>>>>>>>> Patch 3 adds DEBUG_PREFIX_MAP to TARGET_LDFLAGS (it was already in
>>>>>>>>> TARGET_CFLAGS).  This could possibly be done differently, such as by
>>>>>>>>> removing it from TARGET_CFLAGS and adding it to TOOLCHAIN_OPTIONS,
>>>>>>>>> TARGET_CC_ARCH, or TUNE_CCARGS, but I haven't tested those.  Let me know
>>>>>>>>> if there is a better/preferred way to do it.
>>>>>>>>>
>>>>>>>>> The TARGET_LDFLAGS change broke net-snmp from meta-networking, so I have
>>>>>>>>> included a patch to fix that.  Other packages might have been broken as
>>>>>>>>> well, although I haven't found any others.
>>>>>>>>>
>>>>>>>>> With all these patches, there are still many shared libraries in /lib
>>>>>>>>> and /usr/lib that are still not reproducible with LTO enabled because
>>>>>>>>> x86_64-poky-linux-libtool filters out the -f*-prefix-map flags added by
>>>>>>>>> patch 3 when linking shared libraries.  /usr/lib/libbz2.so.1.0.6 from
>>>>>>>>> the libbz2 package from the bzip2 recipe is a good example.  I do not
>>>>>>>>> have a patch for that problem.  I will leave that to someone else.
>>>>>>>>>
>>>>>>>>> So this is what we need to achieve reproducible LTO builds:
>>>>>>>>> *) This patch set
>>>>>>>>> *) A fix for libtool
>>>>>>>>> *) Add LTO to reproducible builds testing if appropriate (e.g.
>>>>>>>>> meta/lib/oeqa/selftest/cases/reproducible.py, CI on Autobuilder)
>>>>>>>>> *) Fixes for individual packages, if needed
>>>>>>>>> *) Once everything works, update the documentation again (I previously
>>>>>>>>> requested a documentation change for this bug, which will eventually
>>>>>>>>> show up at
>>>>>>>>> http://docs.yoctoproject.org/test-manual/reproducible-builds.html).
>>>>>>>> This is certainly a few steps in the right direction with a good outline
>>>>>>>> of what's next.
>>>>>>>>
>>>>>>>> I suspect that Richard has been busy with other things like overrides
>>>>>>>> and the update to glibc-2.34.
>>>>>>>>
>>>>>>>> Do you have any suggestions or questions about what we should do
>>>>>>>> with this patch series Richard?
>>>>>>> Thanks for the reminder, I've been meaning to queue/test this which I will
>>>>>>> do. The gcc version has been bumped but I ported the patch forward to it
>>>>>>> and the patches are in master-next for testing. It is great to see this
>>>>>>> support moving forward.
>>>>>>>
>>>>>>> Much as it pains me to admit having any libtool knowledge, I may be able to
>>>>>>> help with that bit. There is an untested patch below which may address that
>>>>>>> issue, or at least give a good hint on how to do it if it doesn't work. I
>>>>>>> don't have an environment to test easily right now.
>>>>>>>
>>>>>>> Cheers,
>>>>>>>
>>>>>>> Richard
>>>>>> I tested your libtool patch in master-next with the bzip2 recipe.  It
>>>>>> works as intended; libbz2.so.1.0.6 and all the other output files are
>>>>>> now reproducible with LTO enabled.  I also verified that libtool is
>>>>>> passing the -f*-prefix-map flags to the link command in log.do_compile
>>>>>> as intended.
>>>>>>
>>>>>> I also verified that core-image-minimal builds successfully with the
>>>>>> libtool patch.
>>>>> Thanks for testing that, sounds like it helps that issue. I'll queue that patch.
>>>>>
>>>>> Unfortunately even with the ruby fix I queued, we still see reproduciblity
>>>>> issues with the LDFLAGS change in curl-dev, gettext-ptest, ruby and ruby-dbg
>>>>> packages:
>>>>>
>>>>> https://autobuilder.yoctoproject.org/typhoon/#/builders/115/builds/515/steps/12/logs/stdio
>>>>>
>>>>> We'll need to resolve those before I can merge the flags change.
>>>>>
>>>>> Diffoscope output:
>>>>>
>>>>> https://autobuilder.yocto.io/pub/repro-fail/oe-reproducible-20210805-8jfd55ki/packages/diff-html/
>>>>>
>>>>> Basically LDFLAGS get encoded into a couple of scripts and the ruby binary.
>>>>>
>>>>> Cheers,
>>>>>
>>>>> Richard
>>>>>
>>>> It looks like the ruby problem is being caused by MJIT_DLDFLAGS in
>>>> build/tmp/work/core2-64-poky-linux/ruby/3.0.2-r0/build/mjit_config.h.
>>>> There is already a patch
>>>> poky/meta/recipes-devtools/ruby/ruby/0001-template-Makefile.in-do-not-write-host-cross-cc-item.patch
>>>> that removes some of these items for the sake of reproducibiltiy.  But I
>>>> do not know ruby, so I do not know the implications of doing the same
>>>> thing for MJIT_DLDFLAGS.
>>>>
>>>> Tony Battersby
>>>>
>>>>
>>>>
>>> Richard,
>>>
>>> I noticed that you already fixed the problems in curl and gettext in
>>> master-next.  Here is a patch for ruby if you haven't fixed that already.
>>>
>>> Tony Battersby
>>>
>>>  From 9cfb9777ff6ef95a27ed6a03719c807365d0f116 Mon Sep 17 00:00:00 2001
>>> From: Tony Battersby <tonyb@cybernetics.com>
>>> Date: Fri, 6 Aug 2021 16:47:14 -0400
>>> Subject: [PATCH] ruby: Fix reproducibility issue with LDFLAGS
>>>
>>> If we add DEBUG_PREFIX_MAP into LDFLAGS, ruby and ruby-dbg are no
>>> longer reproducible.  Fix this.
>>>
>>> Signed-off-by: Tony Battersby <tonyb@cybernetics.com>
>>> ---
>>>   ...-Makefile.in-filter-out-f-prefix-map.patch | 42 +++++++++++++++++++
>>>   meta/recipes-devtools/ruby/ruby_3.0.2.bb      |  1 +
>>>   2 files changed, 43 insertions(+)
>>>   create mode 100644 meta/recipes-devtools/ruby/ruby/0002-template-Makefile.in-filter-out-f-prefix-map.patch
>>>
>>> diff --git a/meta/recipes-devtools/ruby/ruby/0002-template-Makefile.in-filter-out-f-prefix-map.patch b/meta/recipes-devtools/ruby/ruby/0002-template-Makefile.in-filter-out-f-prefix-map.patch
>>> new file mode 100644
>>> index 0000000000..9387506c26
>>> --- /dev/null
>>> +++ b/meta/recipes-devtools/ruby/ruby/0002-template-Makefile.in-filter-out-f-prefix-map.patch
>>> @@ -0,0 +1,42 @@
>>> +Subject: [PATCH] template/Makefile.in: filter out -f*prefix-map
>>> +
>>> +If we add DEBUG_PREFIX_MAP into LDFLAGS, ruby and ruby-dbg are no longer
>>> +reproducible.  Fix this.
>>> +
>>> +Upstream-Status: Inapproppriate [oe-core specific]
>>> +Signed-off-by: Tony Battersby <tonyb@cybernetics.com>
>>> +---
>>> +--- a/tool/mjit_archflag.sh
>>> ++++ b/tool/mjit_archflag.sh
>>> +@@ -7,6 +7,20 @@ quote() {
>>> +     echo
>>> + }
>>> +
>>> ++quote_filtered() {
>>> ++    printf "#${indent}define $1"
>>> ++    while shift && [ "$#" -gt 0 ]; do
>>> ++      case "$1" in
>>> ++          -ffile-prefix-map=*|-fdebug-prefix-map=*|-fmacro-prefix-map=*)
>>> ++              ;;
>>> ++          *)
>>> ++              printf ' "%s"'$sep "$1"
>>> ++              ;;
>>> ++      esac
>>> ++    done
>>> ++    echo
>>> ++}
>>> ++
>>> + archs=""
>>> + arch_flag=""
>>> +
>>> +--- a/template/Makefile.in
>>> ++++ b/template/Makefile.in
>>> +@@ -666,7 +666,7 @@ mjit_config.h:
>>> +       quote "MJIT_OPTFLAGS   " $(MJIT_OPTFLAGS); \
>>> +       quote "MJIT_DEBUGFLAGS " $(MJIT_DEBUGFLAGS); \
>>> +       quote "MJIT_LDSHARED   " ; \
>>> +-      quote "MJIT_DLDFLAGS    MJIT_ARCHFLAG" $(MJIT_DLDFLAGS); \
>>> ++      quote_filtered "MJIT_DLDFLAGS    MJIT_ARCHFLAG" $(MJIT_DLDFLAGS); \
>>> +       quote "MJIT_LIBS       " $(LIBRUBYARG_SHARED); \
>>> +       quote 'PRELOADENV       "@PRELOADENV@"'; \
>>> +       indent=$${archs:+'  '}; \
>>> diff --git a/meta/recipes-devtools/ruby/ruby_3.0.2.bb b/meta/recipes-devtools/ruby/ruby_3.0.2.bb
>>> index 0b9c342def..38e594a59e 100644
>>> --- a/meta/recipes-devtools/ruby/ruby_3.0.2.bb
>>> +++ b/meta/recipes-devtools/ruby/ruby_3.0.2.bb
>>> @@ -6,6 +6,7 @@ SRC_URI += " \
>>>              file://remove_has_include_macros.patch \
>>>              file://run-ptest \
>>>              file://0001-template-Makefile.in-do-not-write-host-cross-cc-item.patch \
>>> +           file://0002-template-Makefile.in-filter-out-f-prefix-map.patch \
>>>              "
>>>
>>>   SRC_URI[sha256sum] = "5085dee0ad9f06996a8acec7ebea4a8735e6fac22f22e2d98c3f2bc3bef7e6f1"
>>> --
>>> 2.25.1
>>>
> 

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [OE-core] [master][PATCH 0/4] Reproducible LTO builds
  2021-08-09 17:18                 ` Khem Raj
@ 2021-08-10 16:57                   ` Khem Raj
  2021-08-10 19:44                     ` [meta-oe][master][PATCH] tcsh: fix compile error after LDFLAGS change Tony Battersby
  0 siblings, 1 reply; 14+ messages in thread
From: Khem Raj @ 2021-08-10 16:57 UTC (permalink / raw)
  To: Tony Battersby
  Cc: Richard Purdie, Randy MacLeod,
	Patches and discussions about the oe-core layer,
	openembeded-devel

when using ubuntu 18.04 host tcsh fails now  see [1]

gcc: error: unrecognized command line option
‘-fmacro-prefix-map=TOPDIR/build/tmp/work/core2-32-yoe-linux/tcsh/6.22.04-r0=/usr/src/debug/tcsh/6.22.04-r0’
Makefile:450: recipe for target 'gethost' failed
make: *** [gethost] Error 1

[1] https://errors.yoctoproject.org/Errors/Details/600645/

On Mon, Aug 9, 2021 at 10:18 AM Khem Raj <raj.khem@gmail.com> wrote:
>
>
>
> On 8/9/21 7:39 AM, Tony Battersby wrote:
> > On 8/6/21 10:19 PM, Khem Raj wrote:
> >> I am seeing bunch of failures on meta-oe and meta-atmel
> >>
> >> https://errors.yoctoproject.org/Errors/Details/600064/
> >> https://errors.yoctoproject.org/Errors/Details/600065/
> >> https://errors.yoctoproject.org/Errors/Details/600071/
> >>
> >>
> > I sent patches for meta-openembedded, but I am not sure how to build
> > meta-atmel:
> >
> > bitbake libegl
> > ERROR: Layer atmel is not compatible with the core layer which only
> > supports these series: honister (layer is compatible with hardknott)
>
> you can use my branch which has fixes for override problem
>
> https://github.com/YoeDistro/meta-atmel/tree/yoe/mut
>
>
> >
> > But the fix is probably the same as the ones I sent for the other
> > packages (which I copied from
> > meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp_5.9.1.bb).
> >
> > Tony Battersby
> >
> >
> >> On Fri, Aug 6, 2021 at 2:04 PM Tony Battersby <tonyb@cybernetics.com> wrote:
> >>> On 8/6/21 12:44 PM, Tony Battersby wrote:
> >>>> On 8/6/21 1:33 AM, Richard Purdie wrote:
> >>>>> On Thu, 2021-08-05 at 17:54 -0400, Tony Battersby wrote:
> >>>>>> On 8/5/21 6:21 AM, Richard Purdie wrote:
> >>>>>>> On Wed, 2021-08-04 at 20:13 -0400, Randy MacLeod wrote:
> >>>>>>>> On 2021-07-27 9:34 a.m., Tony Battersby wrote:
> >>>>>>>>> Currently, enabling Link Time Optimization via:
> >>>>>>>>>
> >>>>>>>>> require conf/distro/include/lto.inc
> >>>>>>>>> DISTRO_FEATURES_append = " lto"
> >>>>>>>>>
> >>>>>>>>> makes the build non-reproducible (as in
> >>>>>>>>> https://reproducible-builds.org/).  This patch set fixes some of the
> >>>>>>>>> problems, but is not yet a complete solution.
> >>>>>>>>>
> >>>>>>>>> This patch set addresses the following bugs:
> >>>>>>>>> https://bugzilla.yoctoproject.org/show_bug.cgi?id=14481
> >>>>>>>>> https://bugzilla.yoctoproject.org/show_bug.cgi?id=14490
> >>>>>>>>>
> >>>>>>>>> openembedded-core patches
> >>>>>>>>> 1/4: lto.inc: disable LTO for grub
> >>>>>>>>> 2/4: gcc: Backport patch to make LTO builds more reproducible
> >>>>>>>>> 3/4: bitbake.conf: add DEBUG_PREFIX_MAP to TARGET_LDFLAGS
> >>>>>>>>>
> >>>>>>>>> openembedded-devel patches
> >>>>>>>>> 4/4: net-snmp: fix QA Issue after LDFLAGS change
> >>>>>>>>>
> >>>>>>>>> Patch 3 adds DEBUG_PREFIX_MAP to TARGET_LDFLAGS (it was already in
> >>>>>>>>> TARGET_CFLAGS).  This could possibly be done differently, such as by
> >>>>>>>>> removing it from TARGET_CFLAGS and adding it to TOOLCHAIN_OPTIONS,
> >>>>>>>>> TARGET_CC_ARCH, or TUNE_CCARGS, but I haven't tested those.  Let me know
> >>>>>>>>> if there is a better/preferred way to do it.
> >>>>>>>>>
> >>>>>>>>> The TARGET_LDFLAGS change broke net-snmp from meta-networking, so I have
> >>>>>>>>> included a patch to fix that.  Other packages might have been broken as
> >>>>>>>>> well, although I haven't found any others.
> >>>>>>>>>
> >>>>>>>>> With all these patches, there are still many shared libraries in /lib
> >>>>>>>>> and /usr/lib that are still not reproducible with LTO enabled because
> >>>>>>>>> x86_64-poky-linux-libtool filters out the -f*-prefix-map flags added by
> >>>>>>>>> patch 3 when linking shared libraries.  /usr/lib/libbz2.so.1.0.6 from
> >>>>>>>>> the libbz2 package from the bzip2 recipe is a good example.  I do not
> >>>>>>>>> have a patch for that problem.  I will leave that to someone else.
> >>>>>>>>>
> >>>>>>>>> So this is what we need to achieve reproducible LTO builds:
> >>>>>>>>> *) This patch set
> >>>>>>>>> *) A fix for libtool
> >>>>>>>>> *) Add LTO to reproducible builds testing if appropriate (e.g.
> >>>>>>>>> meta/lib/oeqa/selftest/cases/reproducible.py, CI on Autobuilder)
> >>>>>>>>> *) Fixes for individual packages, if needed
> >>>>>>>>> *) Once everything works, update the documentation again (I previously
> >>>>>>>>> requested a documentation change for this bug, which will eventually
> >>>>>>>>> show up at
> >>>>>>>>> http://docs.yoctoproject.org/test-manual/reproducible-builds.html).
> >>>>>>>> This is certainly a few steps in the right direction with a good outline
> >>>>>>>> of what's next.
> >>>>>>>>
> >>>>>>>> I suspect that Richard has been busy with other things like overrides
> >>>>>>>> and the update to glibc-2.34.
> >>>>>>>>
> >>>>>>>> Do you have any suggestions or questions about what we should do
> >>>>>>>> with this patch series Richard?
> >>>>>>> Thanks for the reminder, I've been meaning to queue/test this which I will
> >>>>>>> do. The gcc version has been bumped but I ported the patch forward to it
> >>>>>>> and the patches are in master-next for testing. It is great to see this
> >>>>>>> support moving forward.
> >>>>>>>
> >>>>>>> Much as it pains me to admit having any libtool knowledge, I may be able to
> >>>>>>> help with that bit. There is an untested patch below which may address that
> >>>>>>> issue, or at least give a good hint on how to do it if it doesn't work. I
> >>>>>>> don't have an environment to test easily right now.
> >>>>>>>
> >>>>>>> Cheers,
> >>>>>>>
> >>>>>>> Richard
> >>>>>> I tested your libtool patch in master-next with the bzip2 recipe.  It
> >>>>>> works as intended; libbz2.so.1.0.6 and all the other output files are
> >>>>>> now reproducible with LTO enabled.  I also verified that libtool is
> >>>>>> passing the -f*-prefix-map flags to the link command in log.do_compile
> >>>>>> as intended.
> >>>>>>
> >>>>>> I also verified that core-image-minimal builds successfully with the
> >>>>>> libtool patch.
> >>>>> Thanks for testing that, sounds like it helps that issue. I'll queue that patch.
> >>>>>
> >>>>> Unfortunately even with the ruby fix I queued, we still see reproduciblity
> >>>>> issues with the LDFLAGS change in curl-dev, gettext-ptest, ruby and ruby-dbg
> >>>>> packages:
> >>>>>
> >>>>> https://autobuilder.yoctoproject.org/typhoon/#/builders/115/builds/515/steps/12/logs/stdio
> >>>>>
> >>>>> We'll need to resolve those before I can merge the flags change.
> >>>>>
> >>>>> Diffoscope output:
> >>>>>
> >>>>> https://autobuilder.yocto.io/pub/repro-fail/oe-reproducible-20210805-8jfd55ki/packages/diff-html/
> >>>>>
> >>>>> Basically LDFLAGS get encoded into a couple of scripts and the ruby binary.
> >>>>>
> >>>>> Cheers,
> >>>>>
> >>>>> Richard
> >>>>>
> >>>> It looks like the ruby problem is being caused by MJIT_DLDFLAGS in
> >>>> build/tmp/work/core2-64-poky-linux/ruby/3.0.2-r0/build/mjit_config.h.
> >>>> There is already a patch
> >>>> poky/meta/recipes-devtools/ruby/ruby/0001-template-Makefile.in-do-not-write-host-cross-cc-item.patch
> >>>> that removes some of these items for the sake of reproducibiltiy.  But I
> >>>> do not know ruby, so I do not know the implications of doing the same
> >>>> thing for MJIT_DLDFLAGS.
> >>>>
> >>>> Tony Battersby
> >>>>
> >>>>
> >>>>
> >>> Richard,
> >>>
> >>> I noticed that you already fixed the problems in curl and gettext in
> >>> master-next.  Here is a patch for ruby if you haven't fixed that already.
> >>>
> >>> Tony Battersby
> >>>
> >>>  From 9cfb9777ff6ef95a27ed6a03719c807365d0f116 Mon Sep 17 00:00:00 2001
> >>> From: Tony Battersby <tonyb@cybernetics.com>
> >>> Date: Fri, 6 Aug 2021 16:47:14 -0400
> >>> Subject: [PATCH] ruby: Fix reproducibility issue with LDFLAGS
> >>>
> >>> If we add DEBUG_PREFIX_MAP into LDFLAGS, ruby and ruby-dbg are no
> >>> longer reproducible.  Fix this.
> >>>
> >>> Signed-off-by: Tony Battersby <tonyb@cybernetics.com>
> >>> ---
> >>>   ...-Makefile.in-filter-out-f-prefix-map.patch | 42 +++++++++++++++++++
> >>>   meta/recipes-devtools/ruby/ruby_3.0.2.bb      |  1 +
> >>>   2 files changed, 43 insertions(+)
> >>>   create mode 100644 meta/recipes-devtools/ruby/ruby/0002-template-Makefile.in-filter-out-f-prefix-map.patch
> >>>
> >>> diff --git a/meta/recipes-devtools/ruby/ruby/0002-template-Makefile.in-filter-out-f-prefix-map.patch b/meta/recipes-devtools/ruby/ruby/0002-template-Makefile.in-filter-out-f-prefix-map.patch
> >>> new file mode 100644
> >>> index 0000000000..9387506c26
> >>> --- /dev/null
> >>> +++ b/meta/recipes-devtools/ruby/ruby/0002-template-Makefile.in-filter-out-f-prefix-map.patch
> >>> @@ -0,0 +1,42 @@
> >>> +Subject: [PATCH] template/Makefile.in: filter out -f*prefix-map
> >>> +
> >>> +If we add DEBUG_PREFIX_MAP into LDFLAGS, ruby and ruby-dbg are no longer
> >>> +reproducible.  Fix this.
> >>> +
> >>> +Upstream-Status: Inapproppriate [oe-core specific]
> >>> +Signed-off-by: Tony Battersby <tonyb@cybernetics.com>
> >>> +---
> >>> +--- a/tool/mjit_archflag.sh
> >>> ++++ b/tool/mjit_archflag.sh
> >>> +@@ -7,6 +7,20 @@ quote() {
> >>> +     echo
> >>> + }
> >>> +
> >>> ++quote_filtered() {
> >>> ++    printf "#${indent}define $1"
> >>> ++    while shift && [ "$#" -gt 0 ]; do
> >>> ++      case "$1" in
> >>> ++          -ffile-prefix-map=*|-fdebug-prefix-map=*|-fmacro-prefix-map=*)
> >>> ++              ;;
> >>> ++          *)
> >>> ++              printf ' "%s"'$sep "$1"
> >>> ++              ;;
> >>> ++      esac
> >>> ++    done
> >>> ++    echo
> >>> ++}
> >>> ++
> >>> + archs=""
> >>> + arch_flag=""
> >>> +
> >>> +--- a/template/Makefile.in
> >>> ++++ b/template/Makefile.in
> >>> +@@ -666,7 +666,7 @@ mjit_config.h:
> >>> +       quote "MJIT_OPTFLAGS   " $(MJIT_OPTFLAGS); \
> >>> +       quote "MJIT_DEBUGFLAGS " $(MJIT_DEBUGFLAGS); \
> >>> +       quote "MJIT_LDSHARED   " ; \
> >>> +-      quote "MJIT_DLDFLAGS    MJIT_ARCHFLAG" $(MJIT_DLDFLAGS); \
> >>> ++      quote_filtered "MJIT_DLDFLAGS    MJIT_ARCHFLAG" $(MJIT_DLDFLAGS); \
> >>> +       quote "MJIT_LIBS       " $(LIBRUBYARG_SHARED); \
> >>> +       quote 'PRELOADENV       "@PRELOADENV@"'; \
> >>> +       indent=$${archs:+'  '}; \
> >>> diff --git a/meta/recipes-devtools/ruby/ruby_3.0.2.bb b/meta/recipes-devtools/ruby/ruby_3.0.2.bb
> >>> index 0b9c342def..38e594a59e 100644
> >>> --- a/meta/recipes-devtools/ruby/ruby_3.0.2.bb
> >>> +++ b/meta/recipes-devtools/ruby/ruby_3.0.2.bb
> >>> @@ -6,6 +6,7 @@ SRC_URI += " \
> >>>              file://remove_has_include_macros.patch \
> >>>              file://run-ptest \
> >>>              file://0001-template-Makefile.in-do-not-write-host-cross-cc-item.patch \
> >>> +           file://0002-template-Makefile.in-filter-out-f-prefix-map.patch \
> >>>              "
> >>>
> >>>   SRC_URI[sha256sum] = "5085dee0ad9f06996a8acec7ebea4a8735e6fac22f22e2d98c3f2bc3bef7e6f1"
> >>> --
> >>> 2.25.1
> >>>
> >

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [meta-oe][master][PATCH] tcsh: fix compile error after LDFLAGS change
  2021-08-10 16:57                   ` Khem Raj
@ 2021-08-10 19:44                     ` Tony Battersby
  0 siblings, 0 replies; 14+ messages in thread
From: Tony Battersby @ 2021-08-10 19:44 UTC (permalink / raw)
  To: Khem Raj, openembeded-devel
  Cc: Richard Purdie, Randy MacLeod,
	Patches and discussions about the oe-core layer

Adding -f*-prefix-map to LDFLAGS caused the following issue when
compiling tcsh on Ubuntu 18.04:

gcc: error: unrecognized command line option ‘-fmacro-prefix-map=...’

Fix by using BUILD_LDFLAGS instead of LDFLAGS for gethost.

[YOCTO #14481]

Signed-off-by: Tony Battersby <tonyb@cybernetics.com>
---

NOTE: tested only on Ubuntu 20.04.

 meta-oe/recipes-shells/tcsh/tcsh_6.22.04.bb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/meta-oe/recipes-shells/tcsh/tcsh_6.22.04.bb b/meta-oe/recipes-shells/tcsh/tcsh_6.22.04.bb
index ac6c6db81..c4da5cd83 100644
--- a/meta-oe/recipes-shells/tcsh/tcsh_6.22.04.bb
+++ b/meta-oe/recipes-shells/tcsh/tcsh_6.22.04.bb
@@ -20,7 +20,7 @@ EXTRA_OEMAKE += "CC_FOR_GETHOST='${BUILD_CC}'"
 inherit autotools
 
 do_compile:prepend() {
-    oe_runmake CC_FOR_GETHOST='${BUILD_CC}' CFLAGS='${BUILD_CFLAGS}' gethost
+    oe_runmake CC_FOR_GETHOST='${BUILD_CC}' CFLAGS='${BUILD_CFLAGS}' LDFLAGS='${BUILD_LDFLAGS}' gethost
 }
 
 do_install:append () {
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2021-08-10 19:44 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-27 13:34 [master][PATCH 0/4] Reproducible LTO builds Tony Battersby
2021-08-05  0:13 ` [OE-core] " Randy MacLeod
2021-08-05 10:21   ` Richard Purdie
2021-08-05 21:54     ` Tony Battersby
2021-08-06  5:33       ` Richard Purdie
2021-08-06 16:44         ` Tony Battersby
2021-08-06 21:04           ` Tony Battersby
2021-08-07  2:19             ` Khem Raj
2021-08-09 14:32               ` [meta-networking][master][PATCH 1/2] curlpp: fix QA Issue after LDFLAGS change Tony Battersby
2021-08-09 14:32               ` [meta-oe][master][PATCH 2/2] ldns: " Tony Battersby
2021-08-09 14:39               ` [OE-core] [master][PATCH 0/4] Reproducible LTO builds Tony Battersby
2021-08-09 17:18                 ` Khem Raj
2021-08-10 16:57                   ` Khem Raj
2021-08-10 19:44                     ` [meta-oe][master][PATCH] tcsh: fix compile error after LDFLAGS change Tony Battersby

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.