public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Sam James" <sam@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: app-arch/xz-utils/
Date: Tue, 16 Apr 2024 01:24:53 +0000 (UTC)	[thread overview]
Message-ID: <1713230665.83a27ac5162cf15e1dca6de92f2debe452024d24.sam@gentoo> (raw)

commit:     83a27ac5162cf15e1dca6de92f2debe452024d24
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Tue Apr 16 01:21:09 2024 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Tue Apr 16 01:24:25 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=83a27ac5

app-arch/xz-utils: improve USE=pgo for 9999

Takes a lot of inspiration from https://packages.altlinux.org/en/sisyphus/srpms/xz/specfiles/#line-80.

IIRC at least one other distro does this for xz or gzip (was it Clear Linux?)

The testsuite could do with better coverage so supplement it by creating
a tar archive of a bunch of files made during the build, then repeatedly
compress/decompress it to gather profiling data.

That said, I don't get any binary differences at all for liblzma and xz
for my usual flags (-O3 -march=znver2 ...). I do get some small differences
for just -O2. Both tests were done with GCC 14.0.1 20240415.

It would be nice if we could drop -fprofile-partial-training and that's
perhaps the thing to try next. I see this commit as mostly a step towards
being able to do that which should let PGO give smaller binaries with -O2
at least.

Signed-off-by: Sam James <sam <AT> gentoo.org>

 app-arch/xz-utils/xz-utils-9999.ebuild | 38 ++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/app-arch/xz-utils/xz-utils-9999.ebuild b/app-arch/xz-utils/xz-utils-9999.ebuild
index ec5227371390..d2e98e50e15a 100644
--- a/app-arch/xz-utils/xz-utils-9999.ebuild
+++ b/app-arch/xz-utils/xz-utils-9999.ebuild
@@ -106,6 +106,7 @@ multilib_src_configure() {
 
 multilib_src_compile() {
 	# -fprofile-partial-training because upstream note the test suite isn't super comprehensive
+	# TODO: revisit that now we have the tar/xz loop below?
 	# 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)")
@@ -115,6 +116,43 @@ multilib_src_compile() {
 	if use pgo ; then
 		emake CFLAGS="${CFLAGS} ${pgo_generate_flags}" -k check
 
+		if multilib_is_native_abi ; then
+			(
+				shopt -s globstar
+
+				tar \
+					--sort=name --mtime=@2718281828 \
+					-cf xz-pgo-test-01.tar \
+					{"${S}","${BUILD_DIR}"}/**/*.[cho] \
+					{"${S}","${BUILD_DIR}"}/**/*.so* \
+					{"${S}","${BUILD_DIR}"}/**/**.txt \
+					{"${S}","${BUILD_DIR}"}/tests/files \
+
+				stat --printf="xz-pgo-test-01.tar.tar size: %s\n" xz-pgo-test-01.tar
+				md5sum xz-pgo-test-01.tar
+			)
+
+			local test_variants=(
+				# Borrowed from ALT Linux
+				# https://packages.altlinux.org/en/sisyphus/srpms/xz/specfiles/#line-80
+				'-0 -C none'
+				'-2 -C crc32'
+				'-6 --arm --lzma2 -C crc64'
+				'-6 --x86 --lzma2=lc=4 -C sha256'
+				'-7e --format=lzma'
+
+				# Our own variants
+				''
+				'-9e'
+				'--x86 --lzma2=preset=9e'
+			)
+			local test_variant
+			for test_variant in "${test_variants[@]}" ; do
+				"${BUILD_DIR}"/src/xz/xz -c ${test_variant} xz-pgo-test-01.tar | "${BUILD_DIR}"/src/xz/xz -c -d - > /dev/null
+				assert "Testing '${test_variant}' variant failed"
+			done
+		fi
+
 		if tc-is-clang; then
 			llvm-profdata merge "${T}"/${ABI}-pgo --output="${T}"/${ABI}-pgo/default.profdata || die
 		fi


             reply	other threads:[~2024-04-16  1:24 UTC|newest]

Thread overview: 251+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-16  1:24 Sam James [this message]
  -- strict thread matches above, loose matches on Subject: below --
2025-02-09  4:56 [gentoo-commits] repo/gentoo:master commit in: app-arch/xz-utils/ Sam James
2025-01-24 15:33 Matt Turner
2025-01-24 12:24 Sam James
2025-01-24 12:24 Sam James
2024-11-13 11:10 Arthur Zamarin
2024-11-11 14:47 Sam James
2024-10-30 15:14 Sam James
2024-10-05 10:23 Sam James
2024-10-02  2:11 Sam James
2024-07-23  5:02 Sam James
2024-07-23  5:02 Sam James
2024-07-23  5:02 Sam James
2024-07-23  5:02 Sam James
2024-07-23  5:02 Sam James
2024-07-23  5:02 Sam James
2024-07-23  5:02 Sam James
2024-07-23  4:17 Sam James
2024-07-17  5:05 Sam James
2024-07-17  4:56 Sam James
2024-07-17  4:56 Sam James
2024-07-17  4:55 Sam James
2024-07-17  4:44 Sam James
2024-07-17  4:44 Sam James
2024-07-17  4:44 Sam James
2024-06-24  0:32 Sam James
2024-06-21 22:55 Sam James
2024-06-18 15:49 Fabian Groffen
2024-06-16  9:39 Sam James
2024-06-16  9:16 Sam James
2024-06-16  9:16 Sam James
2024-06-16  9:16 Sam James
2024-06-15 22:46 Sam James
2024-06-02  3:43 Sam James
2024-05-31 21:58 Sam James
2024-05-31 21:48 Sam James
2024-05-31 14:30 Sam James
2024-05-31 14:28 Sam James
2024-05-31 14:28 Sam James
2024-05-29 18:37 Sam James
2024-05-29 17:31 Sam James
2024-05-29 17:31 Sam James
2024-04-15 23:13 Sam James
2024-04-03  6:36 Sam James
2024-03-30 21:52 Sam James
2024-03-30 21:48 Sam James
2024-03-30 19:42 Sam James
2024-03-28  4:21 Sam James
2024-03-24 12:12 Sam James
2024-03-24 11:39 Sam James
2024-03-24 11:37 Sam James
2024-03-24 11:34 Sam James
2024-03-19  3:42 Ionen Wolkens
2024-03-09 21:05 Sam James
2024-03-04 10:05 Sam James
2024-03-03  2:27 Sam James
2024-03-02 22:07 Sam James
2024-02-29 22:17 Sam James
2024-02-24 19:46 Arthur Zamarin
2024-02-24 14:04 Sam James
2024-02-24 10:36 Michał Górny
2024-02-24 10:22 Michał Górny
2024-02-24 10:13 Sam James
2024-02-24 10:13 Sam James
2024-02-14 18:34 Sam James
2024-02-06 22:42 Sam James
2024-01-26 12:29 Sam James
2024-01-26 12:29 Sam James
2024-01-26 12:23 Sam James
2023-12-28  4:04 Sam James
2023-11-16 16:22 Sam James
2023-11-12 16:50 Arthur Zamarin
2023-11-12  8:32 Arthur Zamarin
2023-11-12  8:32 Arthur Zamarin
2023-11-12  8:32 Arthur Zamarin
2023-11-12  8:20 Arthur Zamarin
2023-11-01 15:37 Sam James
2023-11-01 15:37 Sam James
2023-10-12 12:13 Sam James
2023-10-12 12:05 Sam James
2023-09-15  6:58 Sam James
2023-08-02 19:34 Arthur Zamarin
2023-08-02 13:14 Sam James
2023-06-17 15:13 Sam James
2023-06-17 12:05 Arthur Zamarin
2023-06-17 10:42 Arthur Zamarin
2023-06-17  9:03 Arthur Zamarin
2023-05-05  3:51 Michał Górny
2023-05-05  3:08 Sam James
2023-05-05  3:08 Sam James
2023-05-05  3:08 Sam James
2023-05-05  3:08 Sam James
2023-04-29 20:31 Sam James
2023-04-29 20:31 Sam James
2023-04-29 20:25 Sam James
2023-04-29 20:20 Sam James
2023-04-29 18:16 Arthur Zamarin
2023-04-29 18:08 Arthur Zamarin
2023-04-29 16:11 Arthur Zamarin
2023-04-29 15:23 Arthur Zamarin
2023-04-29  8:48 Sam James
2023-04-23 22:30 Sam James
2023-04-23 21:21 Sam James
2023-04-23 20:32 Sam James
2023-04-23 20:22 Sam James
2023-04-23 20:22 Sam James
2023-04-23 20:10 Sam James
2023-04-23 20:00 Sam James
2023-03-18 19:45 Sam James
2023-03-18 19:19 Sam James
2023-03-18 19:19 Sam James
2023-02-24 18:36 Sam James
2023-02-13  5:47 Sam James
2023-01-15 13:37 Sam James
2023-01-14 10:00 Arthur Zamarin
2023-01-13 20:18 Sam James
2023-01-13 19:57 Sam James
2023-01-13 19:56 Sam James
2023-01-13 19:56 Sam James
2023-01-13 19:56 Sam James
2023-01-13 19:56 Sam James
2023-01-13 19:56 Sam James
2023-01-11 23:02 Sam James
2023-01-11 22:08 Sam James
2023-01-11 22:08 Sam James
2023-01-11 22:08 Sam James
2022-12-16  7:22 Sam James
2022-12-14  5:19 Sam James
2022-12-14  5:19 Sam James
2022-12-14  5:19 Sam James
2022-12-14  5:19 Sam James
2022-12-14  5:19 Sam James
2022-12-14  5:19 Sam James
2022-12-14  3:52 Sam James
2022-12-14  3:52 Sam James
2022-12-13 20:15 Sam James
2022-12-13 20:15 Sam James
2022-12-13 20:15 Sam James
2022-12-11 17:51 Arthur Zamarin
2022-12-10  3:16 Sam James
2022-12-10  2:55 Sam James
2022-12-10  2:54 Sam James
2022-12-10  2:54 Sam James
2022-12-10  2:53 Sam James
2022-12-10  2:53 Sam James
2022-12-10  2:53 Sam James
2022-11-30 23:26 Sam James
2022-11-30 23:26 Sam James
2022-11-25 15:20 Arthur Zamarin
2022-11-25 10:34 Arthur Zamarin
2022-11-25  9:32 Arthur Zamarin
2022-11-25  8:59 Arthur Zamarin
2022-11-25  8:19 Sam James
2022-11-25  8:19 Sam James
2022-11-25  8:11 Arthur Zamarin
2022-11-25  8:11 Arthur Zamarin
2022-11-15  9:45 Sam James
2022-11-13 20:59 Sam James
2022-10-28  7:02 Sam James
2022-10-28  7:02 Sam James
2022-10-28  6:39 Arthur Zamarin
2022-10-28  6:39 Arthur Zamarin
2022-10-28  6:39 Arthur Zamarin
2022-10-28  6:39 Arthur Zamarin
2022-10-28  6:39 Arthur Zamarin
2022-10-28  5:19 Arthur Zamarin
2022-10-27 23:46 Sam James
2022-09-30 19:13 Sam James
2022-09-26  4:16 Arthur Zamarin
2022-09-23  6:39 Arthur Zamarin
2022-09-23  6:09 Arthur Zamarin
2022-09-23  5:50 Sam James
2022-09-23  5:50 Sam James
2022-09-23  5:46 Sam James
2022-09-23  5:41 Arthur Zamarin
2022-09-23  5:41 Arthur Zamarin
2022-08-22 22:37 Sam James
2022-08-12 17:32 Sam James
2022-04-10 17:38 Arthur Zamarin
2022-04-10 17:38 Arthur Zamarin
2022-04-10 17:38 Arthur Zamarin
2022-04-09 20:04 Arthur Zamarin
2022-04-09 19:50 Arthur Zamarin
2022-04-09 18:21 Arthur Zamarin
2022-04-09 17:57 Agostino Sarubbo
2022-04-08  7:06 Agostino Sarubbo
2022-04-06 23:58 Sam James
2022-04-06 23:34 Sam James
2022-04-06 23:34 Sam James
2021-07-16 22:11 David Seifert
2021-01-06 12:52 Fabian Groffen
2020-12-27 13:34 Fabian Groffen
2020-09-18 10:30 Lars Wendler
2020-09-11 12:45 Mikle Kolyada
2020-08-30  5:27 Sam James
2020-08-29 14:48 Thomas Deutschmann
2020-08-28 16:53 Sergei Trofimovich
2020-08-27 18:22 Sergei Trofimovich
2020-08-22  5:43 Agostino Sarubbo
2020-08-21 18:20 Agostino Sarubbo
2020-05-07 18:56 Fabian Groffen
2020-03-19 22:10 Thomas Deutschmann
2020-03-18  7:59 Lars Wendler
2020-03-12  8:55 Lars Wendler
2019-06-12  8:35 Michael Haubenwallner
2019-05-13 15:20 Michael Haubenwallner
2019-05-13  8:08 Lars Wendler
2019-05-04 11:02 Mikle Kolyada
2019-05-03 23:17 Andreas K. Hüttel
2019-04-09 19:07 Aaron Bauman
2019-04-06 13:39 Mikle Kolyada
2019-04-01 19:58 Thomas Deutschmann
2019-03-26 20:05 Markus Meier
2019-03-25 11:40 Mikle Kolyada
2019-03-25 11:40 Mikle Kolyada
2019-03-25 11:39 Mikle Kolyada
2019-03-24 20:25 Sergei Trofimovich
2019-03-24 20:12 Sergei Trofimovich
2019-03-24 19:44 Sergei Trofimovich
2019-03-24 13:08 Sergei Trofimovich
2019-03-20 21:09 Mikle Kolyada
2019-03-20 19:37 Sergei Trofimovich
2019-03-03 19:27 Lars Wendler
2018-05-12 21:56 Lars Wendler
2018-04-30 11:36 Thomas Deutschmann
2018-04-30 11:36 Thomas Deutschmann
2018-04-30 11:36 Thomas Deutschmann
2018-04-30 11:31 Lars Wendler
2018-04-30  2:58 Lars Wendler
2018-04-30  2:58 Lars Wendler
2018-01-26 18:55 Mike Gilbert
2017-12-25 14:43 David Seifert
2017-12-17 21:08 Thomas Deutschmann
2017-12-17 21:08 Thomas Deutschmann
2017-12-17 21:08 Thomas Deutschmann
2017-02-05 19:32 Markus Meier
2017-01-29 20:43 Jeroen Roovers
2017-01-23 18:27 Tobias Klausmann
2017-01-23 15:46 Agostino Sarubbo
2017-01-23 13:51 Agostino Sarubbo
2016-12-30 19:05 Lars Wendler
2016-12-30 19:05 Lars Wendler
2016-03-30 23:48 Mike Frysinger
2016-03-30 23:48 Mike Frysinger
2016-02-29  8:46 Stephen Klimaszewski
2016-02-13 15:33 Agostino Sarubbo
2016-02-04 11:34 Tobias Klausmann
2016-02-01 16:26 Jeroen Roovers
2016-01-28 19:24 Richard Farina
2015-09-29 13:38 Mike Frysinger
2015-09-29 13:38 Mike Frysinger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1713230665.83a27ac5162cf15e1dca6de92f2debe452024d24.sam@gentoo \
    --to=sam@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox