diff options
author | Sam James <sam@gentoo.org> | 2023-10-12 12:28:56 +0100 |
---|---|---|
committer | Sam James <sam@gentoo.org> | 2023-10-12 13:04:59 +0100 |
commit | c2846b5abad0679a5e800c48999a78f4bc475648 (patch) | |
tree | 84a3acb945a55fd3cf58c869ea5df5f998e44c7b /app-arch/xz-utils/xz-utils-9999.ebuild | |
parent | dev-ruby/rack-session: keyword (diff) | |
download | gentoo-c2846b5abad0679a5e800c48999a78f4bc475648.tar.gz gentoo-c2846b5abad0679a5e800c48999a78f4bc475648.tar.bz2 gentoo-c2846b5abad0679a5e800c48999a78f4bc475648.zip |
app-arch/xz-utils: add USE=pgo
Binary gets a bit smaller: 91K->83K. For decompression times, it's really
within noise, <5%. I didn't poke at compress times.
The times at https://forum.openmandriva.org/t/pgo-xz/2543 are a bit better
than what I saw (I tried with linux-6.5.tar.xz, chromium-118.0.5993.70.tar.xz).
opensuse is also doing pgo w/ xz.
Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'app-arch/xz-utils/xz-utils-9999.ebuild')
-rw-r--r-- | app-arch/xz-utils/xz-utils-9999.ebuild | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/app-arch/xz-utils/xz-utils-9999.ebuild b/app-arch/xz-utils/xz-utils-9999.ebuild index 1ab617815a91..b51831556293 100644 --- a/app-arch/xz-utils/xz-utils-9999.ebuild +++ b/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,28 @@ 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)") + + 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} -fprofile-use=${T}/${ABI}-pgo -fprofile-dir=${T}/${ABI}-pgo" + fi +} + multilib_src_install() { default |