summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam James <sam@gentoo.org>2023-10-12 12:28:56 +0100
committerSam James <sam@gentoo.org>2023-10-12 13:04:59 +0100
commitc2846b5abad0679a5e800c48999a78f4bc475648 (patch)
tree84a3acb945a55fd3cf58c869ea5df5f998e44c7b /app-arch/xz-utils/xz-utils-9999.ebuild
parentdev-ruby/rack-session: keyword (diff)
downloadgentoo-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.ebuild25
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