From 1c5f26e47e9bdfab6ded6b9a221ff357daa8cc66 Mon Sep 17 00:00:00 2001 From: Alexander Kanavin Date: Fri, 21 Nov 2025 13:22:49 +0100 Subject: [PATCH] gawk: use native gawk when building glibc and grub Different versions of gawk can produce different output, so depending on which version is installed on the build host, reproducibility issues can occur: https://bugzilla.yoctoproject.org/show_bug.cgi?id=16072 So far only glibc and grub have been identified to have the issue; probably more fixes of similar nature will be required going forward. Adjust the gawk recipe to apply target-only tweaks (particularly the removal of awk symlink to allow for alternatives) to only target and nativesdk variants, so that native installs both awk and gawk executables. [YOCTO #16072] (From OE-Core rev: 288ecfd7d9cd24222cc0f1277105c15cf0889718) Signed-off-by: Alexander Kanavin Signed-off-by: Richard Purdie (cherry picked from commit c5bbf0a60b1d63e68f849a63e5d3872954e7cd3f) Signed-off-by: Yoann Congal Signed-off-by: Paul Barker --- meta/recipes-bsp/grub/grub2.inc | 2 +- meta/recipes-core/glibc/glibc.inc | 2 +- meta/recipes-extended/gawk/gawk_5.3.0.bb | 11 ++++++++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/meta/recipes-bsp/grub/grub2.inc b/meta/recipes-bsp/grub/grub2.inc index 3160708113..a2173bee04 100644 --- a/meta/recipes-bsp/grub/grub2.inc +++ b/meta/recipes-bsp/grub/grub2.inc @@ -51,7 +51,7 @@ CVE_STATUS[CVE-2023-4001] = "not-applicable-platform: Applies only to RHEL/Fedo CVE_STATUS[CVE-2024-1048] = "not-applicable-platform: Applies only to RHEL/Fedora" CVE_STATUS[CVE-2024-2312] = "not-applicable-platform: Applies only to Ubuntu" -DEPENDS = "flex-native bison-native gettext-native" +DEPENDS = "flex-native bison-native gettext-native gawk-replacement-native" GRUB_COMPATIBLE_HOST = '(x86_64.*|i.86.*|arm.*|aarch64.*|riscv.*)-(linux.*|freebsd.*)' COMPATIBLE_HOST = "${GRUB_COMPATIBLE_HOST}" diff --git a/meta/recipes-core/glibc/glibc.inc b/meta/recipes-core/glibc/glibc.inc index 225d0539a0..60e3daaf32 100644 --- a/meta/recipes-core/glibc/glibc.inc +++ b/meta/recipes-core/glibc/glibc.inc @@ -1,7 +1,7 @@ require glibc-common.inc require glibc-ld.inc -DEPENDS = "virtual/${HOST_PREFIX}gcc virtual/${HOST_PREFIX}binutils libgcc-initial linux-libc-headers" +DEPENDS = "virtual/${HOST_PREFIX}gcc virtual/${HOST_PREFIX}binutils libgcc-initial linux-libc-headers gawk-replacement-native" PROVIDES = "virtual/libc" PROVIDES += "virtual/libintl virtual/libiconv" diff --git a/meta/recipes-extended/gawk/gawk_5.3.0.bb b/meta/recipes-extended/gawk/gawk_5.3.0.bb index ac9d8500d6..a05ec3b34b 100644 --- a/meta/recipes-extended/gawk/gawk_5.3.0.bb +++ b/meta/recipes-extended/gawk/gawk_5.3.0.bb @@ -34,13 +34,21 @@ ALTERNATIVE:${PN} = "awk" ALTERNATIVE_TARGET[awk] = "${bindir}/gawk" ALTERNATIVE_PRIORITY = "100" -do_install:append() { +target_tweaks() { # remove the link since we don't package it rm ${D}${bindir}/awk # Strip non-reproducible build flags (containing build paths) sed -i -e 's|^CC.*|CC=""|g' -e 's|^CFLAGS.*|CFLAGS=""|g' ${D}${bindir}/gawkbug } +do_install:append:class-target() { + target_tweaks +} + +do_install:append:class-nativesdk() { + target_tweaks +} + inherit ptest do_install_ptest() { @@ -87,4 +95,5 @@ RDEPENDS:${PN}-ptest += "make locale-base-en-us coreutils" RDEPENDS:${PN}-ptest:append:libc-glibc = " locale-base-en-us.iso-8859-1" RDEPENDS:${PN}-ptest:append:libc-musl = " musl-locales" +PROVIDES:append:class-native = " gawk-replacement-native" BBCLASSEXTEND = "native nativesdk"