commit:     1d98516e65fb3dc0f1e0effc851216e1b827b9d4
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Thu Oct 12 12:01:54 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Thu Oct 12 12:05:00 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1d98516e

app-shells/bash: cleanup USE=pgo logic a bit, use -fprofile-partial-training if 
available

-fprofile-partial-training helps not to pessimise other paths if no data
is available.

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

 .../{bash-9999.ebuild => bash-5.2_p15-r7.ebuild}   | 28 ++++++++++++----------
 app-shells/bash/bash-9999.ebuild                   | 25 +++++++++----------
 2 files changed, 29 insertions(+), 24 deletions(-)

diff --git a/app-shells/bash/bash-9999.ebuild 
b/app-shells/bash/bash-5.2_p15-r7.ebuild
similarity index 90%
copy from app-shells/bash/bash-9999.ebuild
copy to app-shells/bash/bash-5.2_p15-r7.ebuild
index eeff3e0b3023..af96b44e4a86 100644
--- a/app-shells/bash/bash-9999.ebuild
+++ b/app-shells/bash/bash-5.2_p15-r7.ebuild
@@ -1,7 +1,7 @@
 # Copyright 1999-2023 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=7
+EAPI=8
 
 VERIFY_SIG_OPENPGP_KEY_PATH="${BROOT}"/usr/share/openpgp-keys/chetramey.asc
 inherit flag-o-matic toolchain-funcs prefix verify-sig
@@ -115,6 +115,9 @@ PATCHES=(
 
        # Patches from Chet sent to bash-bug ml
        "${FILESDIR}"/${PN}-5.0-syslog-history-extern.patch
+       "${FILESDIR}"/${PN}-5.2_p15-random-ub.patch
+       "${FILESDIR}"/${PN}-5.2_p15-configure-clang16.patch
+       "${FILESDIR}"/${PN}-5.2_p15-shell-parser-reset-issue.patch
 )
 
 pkg_setup() {
@@ -254,14 +257,20 @@ src_configure() {
 }
 
 src_compile() {
-       if use pgo ; then
-               # Build Bash and run its tests to generate profiles.
-               emake CFLAGS="${CFLAGS} -fprofile-generate=${T}/pgo 
-fprofile-dir=${T}/pgo"
+       # -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}/pgo -fprofile-generate=${T}/pgo $(test-flags-CC 
-fprofile-partial-training)")
+       local pgo_use_flags=$(usev pgo "-fprofile-use=${T}/pgo 
-fprofile-dir=${T}/pgo")
+
+       emake CFLAGS="${CFLAGS} ${pgo_generate_flags}"
+       use plugins && emake -C examples/loadables CFLAGS="${CFLAGS} 
${pgo_generate_flags}" all others
 
+       # Build Bash and run its tests to generate profiles.
+       if use pgo ; then
                # Used in test suite.
                unset A
 
-               emake CFLAGS="${CFLAGS} -fprofile-generate=${T}/pgo 
-fprofile-dir=${T}/pgo" -k check
+               emake CFLAGS="${CFLAGS} ${pgo_generate_flags}" -k check
 
                if tc-is-clang; then
                        llvm-profdata merge "${T}"/pgo 
--output="${T}"/pgo/default.profdata || die
@@ -269,13 +278,8 @@ src_compile() {
 
                # Rebuild Bash using the profiling data we just generated.
                emake clean
-               emake CFLAGS="${CFLAGS} -fprofile-use=${T}/pgo 
-fprofile-dir=${T}/pgo"
-
-               use plugins && emake -C examples/loadables CFLAGS="${CFLAGS} 
-fprofile-use=${T}/pgo -fprofile-dir=${T}/pgo" all others
-       else
-               emake
-
-               use plugins && emake -C examples/loadables all others
+               emake CFLAGS="${CFLAGS} ${pgo_use_flags}"
+               use plugins && emake -C examples/loadables CFLAGS="${CFLAGS} 
${pgo_use_flags}" all others
        fi
 }
 

diff --git a/app-shells/bash/bash-9999.ebuild b/app-shells/bash/bash-9999.ebuild
index eeff3e0b3023..e2a0d09d841b 100644
--- a/app-shells/bash/bash-9999.ebuild
+++ b/app-shells/bash/bash-9999.ebuild
@@ -1,7 +1,7 @@
 # Copyright 1999-2023 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=7
+EAPI=8
 
 VERIFY_SIG_OPENPGP_KEY_PATH="${BROOT}"/usr/share/openpgp-keys/chetramey.asc
 inherit flag-o-matic toolchain-funcs prefix verify-sig
@@ -254,14 +254,20 @@ src_configure() {
 }
 
 src_compile() {
-       if use pgo ; then
-               # Build Bash and run its tests to generate profiles.
-               emake CFLAGS="${CFLAGS} -fprofile-generate=${T}/pgo 
-fprofile-dir=${T}/pgo"
+       # -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}/pgo -fprofile-generate=${T}/pgo $(test-flags-CC 
-fprofile-partial-training)")
+       local pgo_use_flags=$(usev pgo "-fprofile-use=${T}/pgo 
-fprofile-dir=${T}/pgo")
+
+       emake CFLAGS="${CFLAGS} ${pgo_generate_flags}"
+       use plugins && emake -C examples/loadables CFLAGS="${CFLAGS} 
${pgo_generate_flags}" all others
 
+       # Build Bash and run its tests to generate profiles.
+       if use pgo ; then
                # Used in test suite.
                unset A
 
-               emake CFLAGS="${CFLAGS} -fprofile-generate=${T}/pgo 
-fprofile-dir=${T}/pgo" -k check
+               emake CFLAGS="${CFLAGS} ${pgo_generate_flags}" -k check
 
                if tc-is-clang; then
                        llvm-profdata merge "${T}"/pgo 
--output="${T}"/pgo/default.profdata || die
@@ -269,13 +275,8 @@ src_compile() {
 
                # Rebuild Bash using the profiling data we just generated.
                emake clean
-               emake CFLAGS="${CFLAGS} -fprofile-use=${T}/pgo 
-fprofile-dir=${T}/pgo"
-
-               use plugins && emake -C examples/loadables CFLAGS="${CFLAGS} 
-fprofile-use=${T}/pgo -fprofile-dir=${T}/pgo" all others
-       else
-               emake
-
-               use plugins && emake -C examples/loadables all others
+               emake CFLAGS="${CFLAGS} ${pgo_use_flags}"
+               use plugins && emake -C examples/loadables CFLAGS="${CFLAGS} 
${pgo_use_flags}" all others
        fi
 }
 

Reply via email to