From fb633eb0b0c85bf07a80117a147d1ac365596dd1 Mon Sep 17 00:00:00 2001 From: Flatcar Buildbot Date: Mon, 16 Oct 2023 07:10:21 +0000 Subject: [PATCH] app-arch/xz-utils: Sync with Gentoo It's from Gentoo commit 5e95594973108f1836a35efec996cfbd69e209c0. --- .../app-arch/xz-utils/metadata.xml | 1 + .../app-arch/xz-utils/xz-utils-5.4.4.ebuild | 24 +++++++++++++++-- .../app-arch/xz-utils/xz-utils-9999.ebuild | 26 +++++++++++++++---- 3 files changed, 44 insertions(+), 7 deletions(-) diff --git a/sdk_container/src/third_party/portage-stable/app-arch/xz-utils/metadata.xml b/sdk_container/src/third_party/portage-stable/app-arch/xz-utils/metadata.xml index 89d8ff6798..3b217f332f 100644 --- a/sdk_container/src/third_party/portage-stable/app-arch/xz-utils/metadata.xml +++ b/sdk_container/src/third_party/portage-stable/app-arch/xz-utils/metadata.xml @@ -9,6 +9,7 @@ Build additional filters that are not used in any of the default xz presets. This includes delta and BCJ coders, additional match finders and SHA256 checks. + Optimize the build using Profile Guided Optimization (PGO) cpe:/a:tukaani:xz diff --git a/sdk_container/src/third_party/portage-stable/app-arch/xz-utils/xz-utils-5.4.4.ebuild b/sdk_container/src/third_party/portage-stable/app-arch/xz-utils/xz-utils-5.4.4.ebuild index 11ddc15f91..f5305d4007 100644 --- a/sdk_container/src/third_party/portage-stable/app-arch/xz-utils/xz-utils-5.4.4.ebuild +++ b/sdk_container/src/third_party/portage-stable/app-arch/xz-utils/xz-utils-5.4.4.ebuild @@ -6,7 +6,7 @@ EAPI=8 -inherit libtool multilib multilib-minimal preserve-libs usr-ldscript +inherit flag-o-matic libtool multilib multilib-minimal preserve-libs usr-ldscript if [[ ${PV} == 9999 ]] ; then # Per tukaani.org, git.tukaani.org is a mirror of github and @@ -47,7 +47,7 @@ HOMEPAGE="https://tukaani.org/xz/" # See top-level COPYING file as it outlines the various pieces and their licenses. LICENSE="public-domain LGPL-2.1+ GPL-2+" SLOT="0" -IUSE="doc +extra-filters nls static-libs" +IUSE="doc +extra-filters pgo nls static-libs" if [[ ${PV} != 9999 ]] ; then BDEPEND+=" verify-sig? ( sec-keys/openpgp-keys-jiatan )" @@ -103,6 +103,26 @@ multilib_src_configure() { ECONF_SOURCE="${S}" econf "${myconf[@]}" } +multilib_src_compile() { + # -fprofile-partial-training because upstream note the test suite isn't super comprehensive + # See https://documentation.suse.com/sbp/all/html/SBP-GCC-10/index.html#sec-gcc10-pgo + local pgo_generate_flags=$(usev pgo "-fprofile-update=atomic -fprofile-dir=${T}/${ABI}-pgo -fprofile-generate=${T}/${ABI}-pgo $(test-flags-CC -fprofile-partial-training)") + local pgo_use_flags=$(usev pgo "-fprofile-use=${T}/${ABI}-pgo -fprofile-dir=${T}/${ABI}-pgo $(test-flags-CC -fprofile-partial-training)") + + emake CFLAGS="${CFLAGS} ${pgo_generate_flags}" + + if use pgo ; then + emake CFLAGS="${CFLAGS} ${pgo_generate_flags}" -k check + + if tc-is-clang; then + llvm-profdata merge "${T}"/${ABI}-pgo --output="${T}"/${ABI}-pgo/default.profdata || die + fi + + emake clean + emake CFLAGS="${CFLAGS} ${pgo_use_flags}" + fi +} + multilib_src_install() { default diff --git a/sdk_container/src/third_party/portage-stable/app-arch/xz-utils/xz-utils-9999.ebuild b/sdk_container/src/third_party/portage-stable/app-arch/xz-utils/xz-utils-9999.ebuild index 1ab617815a..f5305d4007 100644 --- a/sdk_container/src/third_party/portage-stable/app-arch/xz-utils/xz-utils-9999.ebuild +++ b/sdk_container/src/third_party/portage-stable/app-arch/xz-utils/xz-utils-9999.ebuild @@ -47,7 +47,7 @@ HOMEPAGE="https://tukaani.org/xz/" # See top-level COPYING file as it outlines the various pieces and their licenses. LICENSE="public-domain LGPL-2.1+ GPL-2+" SLOT="0" -IUSE="doc +extra-filters nls static-libs" +IUSE="doc +extra-filters pgo nls static-libs" if [[ ${PV} != 9999 ]] ; then BDEPEND+=" verify-sig? ( sec-keys/openpgp-keys-jiatan )" @@ -100,13 +100,29 @@ multilib_src_configure() { myconf+=( --disable-path-for-script ) fi - # ifunc is incompatible w/ asan - # https://github.com/tukaani-project/xz/issues/62#issuecomment-1719489932 - is-flagq -fsanitize=address && myconf+=( --disable-ifunc ) - ECONF_SOURCE="${S}" econf "${myconf[@]}" } +multilib_src_compile() { + # -fprofile-partial-training because upstream note the test suite isn't super comprehensive + # See https://documentation.suse.com/sbp/all/html/SBP-GCC-10/index.html#sec-gcc10-pgo + local pgo_generate_flags=$(usev pgo "-fprofile-update=atomic -fprofile-dir=${T}/${ABI}-pgo -fprofile-generate=${T}/${ABI}-pgo $(test-flags-CC -fprofile-partial-training)") + local pgo_use_flags=$(usev pgo "-fprofile-use=${T}/${ABI}-pgo -fprofile-dir=${T}/${ABI}-pgo $(test-flags-CC -fprofile-partial-training)") + + emake CFLAGS="${CFLAGS} ${pgo_generate_flags}" + + if use pgo ; then + emake CFLAGS="${CFLAGS} ${pgo_generate_flags}" -k check + + if tc-is-clang; then + llvm-profdata merge "${T}"/${ABI}-pgo --output="${T}"/${ABI}-pgo/default.profdata || die + fi + + emake clean + emake CFLAGS="${CFLAGS} ${pgo_use_flags}" + fi +} + multilib_src_install() { default