commit:     1d93a491096f1cc0234fcf44458bfec142c213bb
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sat Mar 16 07:00:23 2024 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sat Mar 23 15:40:51 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1d93a491

toolchain.eclass: rework tests more

Rework src_test around contrib/testsuite-management/validate_failures.py
in gcc.git.

This script is being used by the new Linaro CI effort and it appears well-suited
to us, as it allows marking expected failures easily.

Followup to 9ac3f1cf62b522236ba9efd7e923071c37df1e6d.

Bug: https://bugs.gentoo.org/214345
Bug: https://bugs.gentoo.org/253926
Signed-off-by: Sam James <sam <AT> gentoo.org>

 eclass/toolchain.eclass                        | 148 ++++++++++++++++++-------
 sys-devel/gcc/Manifest                         |   1 +
 sys-devel/gcc/gcc-10.5.0.ebuild                |   1 +
 sys-devel/gcc/gcc-11.4.1_p20240111.ebuild      |   1 +
 sys-devel/gcc/gcc-11.4.1_p20240208.ebuild      |   1 +
 sys-devel/gcc/gcc-11.4.1_p20240222.ebuild      |   1 +
 sys-devel/gcc/gcc-11.4.1_p20240229.ebuild      |   1 +
 sys-devel/gcc/gcc-11.4.1_p20240307.ebuild      |   1 +
 sys-devel/gcc/gcc-11.4.1_p20240314.ebuild      |   1 +
 sys-devel/gcc/gcc-11.5.9999.ebuild             |   1 +
 sys-devel/gcc/gcc-12.3.1_p20240112.ebuild      |   1 +
 sys-devel/gcc/gcc-12.3.1_p20240209.ebuild      |   1 +
 sys-devel/gcc/gcc-12.3.1_p20240223.ebuild      |   1 +
 sys-devel/gcc/gcc-12.3.1_p20240301.ebuild      |   1 +
 sys-devel/gcc/gcc-12.3.1_p20240308.ebuild      |   1 +
 sys-devel/gcc/gcc-12.3.1_p20240315.ebuild      |   1 +
 sys-devel/gcc/gcc-12.4.9999.ebuild             |   1 +
 sys-devel/gcc/gcc-13.2.1_p20240113-r1.ebuild   |   1 +
 sys-devel/gcc/gcc-13.2.1_p20240210.ebuild      |   1 +
 sys-devel/gcc/gcc-13.2.1_p20240224.ebuild      |   1 +
 sys-devel/gcc/gcc-13.2.1_p20240302.ebuild      |   1 +
 sys-devel/gcc/gcc-13.2.1_p20240309.ebuild      |   1 +
 sys-devel/gcc/gcc-13.2.1_p20240316.ebuild      |   1 +
 sys-devel/gcc/gcc-13.3.9999.ebuild             |   1 +
 sys-devel/gcc/gcc-14.0.1_pre20240218.ebuild    |   1 +
 sys-devel/gcc/gcc-14.0.1_pre20240225.ebuild    |   1 +
 sys-devel/gcc/gcc-14.0.1_pre20240303-r1.ebuild |   1 +
 sys-devel/gcc/gcc-14.0.1_pre20240310.ebuild    |   1 +
 sys-devel/gcc/gcc-14.0.1_pre20240317.ebuild    |   1 +
 sys-devel/gcc/gcc-14.0.9999.ebuild             |   1 +
 sys-devel/gcc/gcc-8.5.0-r1.ebuild              |   1 +
 sys-devel/gcc/gcc-9.5.0.ebuild                 |   1 +
 32 files changed, 141 insertions(+), 38 deletions(-)

diff --git a/eclass/toolchain.eclass b/eclass/toolchain.eclass
index 699e647c693a..6b9b49011bce 100644
--- a/eclass/toolchain.eclass
+++ b/eclass/toolchain.eclass
@@ -22,7 +22,7 @@ _TOOLCHAIN_ECLASS=1
 DESCRIPTION="The GNU Compiler Collection"
 HOMEPAGE="https://gcc.gnu.org/";
 
-inherit edo flag-o-matic gnuconfig libtool multilib pax-utils toolchain-funcs 
prefix
+inherit edo flag-o-matic gnuconfig libtool multilib pax-utils python-any-r1 
toolchain-funcs prefix
 
 tc_is_live() {
        [[ ${PV} == *9999* ]]
@@ -84,6 +84,11 @@ tc_version_is_between() {
 # Used to override GCC version. Useful for e.g. live ebuilds or snapshots.
 # Defaults to ${PV}.
 
+# @ECLASS_VARIABLE: TOOLCHAIN_GCC_VALIDATE_FAILURES_VERSION
+# @DESCRIPTION:
+# Version of test comparison script (validate_fails.py) to use.
+: "${GCC_VALIDATE_FAILURES_VERSION:=7bbfb01a32b73842f8908de028703510a0e12057}"
+
 # @ECLASS_VARIABLE: TOOLCHAIN_USE_GIT_PATCHES
 # @DEFAULT_UNSET
 # @DESCRIPTION:
@@ -93,6 +98,39 @@ tc_version_is_between() {
 # for 13.0, we don't want to create new patchsets for every single 13.0 
snapshot,
 # so just grab patches from git each time if this variable is set).
 
+# @ECLASS_VARIABLE: GCC_TESTS_COMPARISON_DIR
+# @USER_VARIABLE
+# @DESCRIPTION:
+# Source of previous GCC test results and location to store new results.
+: "${GCC_TESTS_COMPARISON_DIR:=${BROOT}/var/cache/gcc/testresults/${CHOST}}"
+
+# @ECLASS_VARIABLE: GCC_TESTS_COMPARISON_SLOT
+# @USER_VARIABLE
+# @DESCRIPTION:
+# Slot to compare test results with. Defaults to current slot.
+: "${GCC_TESTS_COMPARISON_SLOT:=${SLOT}}"
+
+# @ECLASS_VARIABLE: GCC_TESTS_IGNORE_NO_BASELINE
+# @DEFAULT_UNSET
+# @USER_VARIABLE
+# @DESCRIPTION:
+# Ignore missing baseline/reference data and create new baseline.
+: "${GCC_TESTS_IGNORE_NO_BASELINE:=}"
+
+# @ECLASS_VARIABLE: GCC_TESTS_CHECK_TARGET
+# @USER_VARIABLE
+# @DESCRIPTION:
+# Defaults to 'check'. Allows choosing a different test target, e.g.
+# 'test-gcc' (https://gcc.gnu.org/install/test.html).
+: "${GCC_TESTS_CHECK_TARGET:=check}"
+
+# @ECLASS_VARIABLE: GCC_TESTS_RUNTESTFLAGS
+# @DEFAULT_UNSET
+# @USER_VARIABLE
+# @DESCRIPTION:
+# Extra options to pass to DejaGnu as RUNTESTFLAGS.
+: "${GCC_TESTS_RUNTESTFLAGS:=}"
+
 # @ECLASS_VARIABLE: TOOLCHAIN_PATCH_DEV
 # @DEFAULT_UNSET
 # @DESCRIPTION:
@@ -311,6 +349,7 @@ BDEPEND="
        >=sys-devel/flex-2.5.4
        nls? ( sys-devel/gettext )
        test? (
+               ${PYTHON_DEPS}
                >=dev-util/dejagnu-1.4.4
                >=sys-devel/autogen-5.5.4
        )
@@ -484,6 +523,8 @@ get_gcc_src_uri() {
        [[ -n ${MUSL_VER} ]] && \
                GCC_SRC_URI+=" $(gentoo_urls 
gcc-${MUSL_GCC_VER}-musl-patches-${MUSL_VER}.tar.${TOOLCHAIN_PATCH_SUFFIX})"
 
+       GCC_SRC_URI+=" test? ( 
https://gitweb.gentoo.org/proj/gcc-patches.git/plain/scripts/testsuite-management/validate_failures.py?id=${GCC_VALIDATE_FAILURES_VERSION}
 -> ${PN}-validate-failures-${GCC_VALIDATE_FAILURES_VERSION}.py )"
+
        echo "${GCC_SRC_URI}"
 }
 
@@ -513,6 +554,8 @@ toolchain_pkg_setup() {
        # Avoid really confusing logs from subconfigure spam, makes logs far
        # more legible.
        MAKEOPTS="--output-sync=line ${MAKEOPTS}"
+
+       use test && python-any-r1_pkg_setup
 }
 
 #---->> src_unpack <<----
@@ -576,6 +619,11 @@ toolchain_src_prepare() {
                tc_enable_hardened_gcc
        fi
 
+       if use test ; then
+               cp 
"${DISTDIR}"/${PN}-validate-failures-${GCC_VALIDATE_FAILURES_VERSION}.py 
"${T}"/validate_failures.py || die
+               chmod +x "${T}"/validate_failures.py || die
+       fi
+
        # Make sure the pkg-config files install into multilib dirs.
        # Since we configure with just one --libdir, we can't use that
        # (as gcc itself takes care of building multilibs). bug #435728
@@ -1835,48 +1883,68 @@ gcc_do_make() {
 #---->> src_test <<----
 
 toolchain_src_test() {
-       cd "${WORKDIR}"/build || die
+       # GCC's testsuite is a special case.
+       #
+       # * Generally, people work off comparisons rather than a full set of
+       #   passing tests.
+       #
+       # * The guality (sic) tests are for debug info quality and are 
especially
+       #   unreliable.
+       #
+       # * The execute torture tests are hopefully a good way for us to 
smoketest
+       #   and find critical regresions.
 
-       # From opensuse's spec file:
-       # "asan needs a whole shadow address space"
+       # From opensuse's spec file: "asan needs a whole shadow address space"
        ulimit -v unlimited
 
        # 'asan' wants to be preloaded first, so does 'sandbox'.
-       # To make asan tests work disable sandbox for all of test suite.
-       # 'backtrace' tests also does not like 'libsandbox.so' presence.
-       #
-       # Nonfatal here as we die if compare_tests failed
-       SANDBOX_ON=0 LD_PRELOAD= nonfatal emake -k check
-       local success_tests=$?
+       # To make asan tests work, we disable sandbox for all of test suite.
+       # The 'backtrace' tests also do not like the presence of 
'libsandbox.so'.
+       local -x SANDBOX_ON=0
+       local -x LD_PRELOAD=
+
+       # Controls running expensive tests in e.g. the torture testsuite.
+       local -x GCC_TEST_RUN_EXPENSIVE=1
+
+       # nonfatal here as we die if the comparison below fails. Also, note that
+       # the exit code of targets other than 'check' may be unreliable.
+       nonfatal emake -C "${WORKDIR}"/build -k "${GCC_TESTS_CHECK_TARGET}" 
RUNTESTFLAGS="${GCC_TESTS_RUNTESTFLAGS}"
+
+       if [[ -z ${GCC_TESTS_IGNORE_NO_BASELINE} && -f 
"${GCC_TESTS_COMPARISON_DIR}/${GCC_TESTS_COMPARISON_SLOT}/${CHOST}.xfail" ]] ; 
then
+               # TODO: Distribute some baseline results in e.g. 
gcc-patches.git?
+               # validate_failures.py manifest files support include 
directives.
+               einfo "Comparing with previous cached results at 
GCC_TESTS_COMPARISON_DIR=${GCC_TESTS_COMPARISON_DIR}/${GCC_TESTS_COMPARISON_SLOT}/${CHOST}.xfail"
+
+               edo "${T}"/validate_failures.py \
+                       --srcpath="${S}" \
+                       --build_dir="${WORKDIR}"/build \
+                       
--manifest="${GCC_TESTS_COMPARISON_DIR}/${GCC_TESTS_COMPARISON_SLOT}/${CHOST}.xfail"
+       else
+               # nonfatal first because we want to run again with comparison 
data if available.
+               nonfatal edo "${T}"/validate_failures.py \
+                       --srcpath="${S}" \
+                       --build_dir="${WORKDIR}"/build
+               ret=$?
 
-       if [[ ! -d "${BROOT}"/var/cache/gcc/${CHOST}/${SLOT} ]] && ! [[ 
${success_tests} -eq 0 ]] ; then
                # We have no reference data saved from a previous run to know if
                # the failures are tolerable or not, so we bail out.
-               eerror "Reference test data does NOT exist at 
${BROOT}/var/cache/gcc/${CHOST}/${SLOT}"
-               eerror "Tests failed and nothing to compare with, so this is a 
fatal error."
-               eerror "(Set GCC_TESTS_IGNORE_NO_BASELINE=1 to make this 
non-fatal for initial run.)"
+               eerror "No reference test data at 
GCC_TESTS_COMPARISON_DIR=${GCC_TESTS_COMPARISON_DIR}/${GCC_TESTS_COMPARISON_SLOT}/${CHOST}.xfail!"
+               eerror "GCC's tests require a baseline to compare with for any 
reasonable interpretation of results."
 
-               if [[ -z ${GCC_TESTS_IGNORE_NO_BASELINE} ]] ; then
+               if [[ -n ${GCC_TESTS_IGNORE_NO_BASELINE} ]] ; then
+                       eerror "GCC_TESTS_IGNORE_NO_BASELINE is set, creating 
new baseline manifest..."
+               elif [[ ${ret} != 0 ]]; then
+                       eerror "(Set GCC_TESTS_IGNORE_NO_BASELINE=1 to make 
this non-fatal for initial run.)"
                        die "Tests failed (failures occurred with no reference 
data)"
                fi
        fi
 
-       einfo "Testing complete! Review the following output to check for 
success or failure."
-       einfo "Please ignore any 'mail' lines in the summary output below (no 
mail is sent)."
-       einfo "Summary:"
-       "${S}"/contrib/test_summary
-
-       # If previous results exist on the system, compare with it
-       # TODO: Distribute some baseline results in e.g. gcc-patches.git?
-       if [[ -d "${BROOT}"/var/cache/gcc/${CHOST}/${SLOT} ]] ; then
-               einfo "Comparing with previous cached results at 
${BROOT}/var/cache/gcc/${CHOST}/${SLOT}"
-
-               # Exit with the following values:
-               # 0 if there is nothing of interest
-               # 1 if there are errors when comparing single test case files
-               # N for the number of errors found when comparing directories
-               "${S}"/contrib/compare_tests 
"${BROOT}"/var/cache/gcc/${CHOST}/${SLOT}/ . || die "Comparison for tests 
results failed, error code: $?"
-       fi
+       # Produce an updated set of expected results
+       edo "${T}"/validate_failures.py \
+               --srcpath="${S}" \
+               --build_dir="${WORKDIR}"/build \
+               --manifest="${T}"/${CHOST}.xfail \
+               --produce_manifest &> /dev/null
 }
 
 #---->> src_install <<----
@@ -2259,15 +2327,19 @@ create_revdep_rebuild_entry() {
 
 toolchain_pkg_preinst() {
        if use test ; then
-               # Install as orphaned to allow comparison across more
-               # versions even after unmerged. Also useful for historical 
records
-               # and tracking down regressions a while after they first 
appeared,
-               # but were only just reported.
-               einfo "Copying test results to 
${BROOT}/var/cache/gcc/${CHOST}/${SLOT} for future comparison"
+               # Install as orphaned to allow comparison across more versions 
even
+               # after unmerged. Also useful for historical records and 
tracking
+               # down regressions a while after they first appeared, but were 
only
+               # just reported.
+               einfo "Copying test results to 
${GCC_TESTS_COMPARISON_DIR}/${SLOT}/${CHOST}.xfail for future comparison"
                (
-                       mkdir -p "${BROOT}"/var/cache/gcc/${CHOST}/${SLOT} || 
die
+                       mkdir -p "${GCC_TESTS_COMPARISON_DIR}/${SLOT}" || die
                        cd "${T}"/test-results || die
-                       find . -name \*.sum -exec cp --parents -v {} 
"${BROOT}"/var/cache/gcc/${CHOST}/${SLOT} \;
+                       # May not exist with test-fail-continue
+                       if [[ -f "${T}"/${CHOST}.xfail ]] ; then
+                               cp -v "${T}"/${CHOST}.xfail 
"${GCC_TESTS_COMPARISON_DIR}/${SLOT}" || die
+                       fi
+                       find . -name \*.sum -exec cp --parents -v {} 
"${GCC_TESTS_COMPARISON_DIR}/${SLOT}" \;
                 )
         fi
 }

diff --git a/sys-devel/gcc/Manifest b/sys-devel/gcc/Manifest
index 50d01bd975c4..4da929009489 100644
--- a/sys-devel/gcc/Manifest
+++ b/sys-devel/gcc/Manifest
@@ -40,3 +40,4 @@ DIST gcc-8.5.0-patches-4.tar.xz 18616 BLAKE2B 
7594cbaea5daecf1a0b3d526c06aeba0a8
 DIST gcc-8.5.0.tar.xz 63841008 BLAKE2B 
aa81a1a730fd7371360f6abed6ba78b5843fd18c58d5de5687acc320741b9e430e85df3535a1ef7a26051409be8d2f0945f503e5968480d919103123a99d4b12
 SHA512 
92f599680e6b7fbce88bcdda810f468777d541e5fddfbb287f7977d51093de2a5178bd0e6a08dfe37090ea10a0508a43ccd00220041abbbec33f1179bfc174d8
 DIST gcc-9.5.0-patches-2.tar.xz 14324 BLAKE2B 
1d3bf3e673108ad2fcdcb86daefb4603d1c9f6aa815e34d1591054d466b76d6f50cce124ab4760528c4951ea16eb00888a3e6485417f81ebf250548732df4a8e
 SHA512 
a6d6f650aaf0bd193a17ac279649f0544a282cea295824384c59341c3000eac4b574b60e00dd427585d928f9768166abf85168b47772132790ad98854acacbbf
 DIST gcc-9.5.0.tar.xz 72462752 BLAKE2B 
69e39314ee6bb46e3be491ba9c3cbc4914cb716f732c6d3f2b14d9382750b40c4f14b5d3051225b81f936ef8297b0ba8cb5439512e961dae5815d3bee2b0bfdb
 SHA512 
cdd144ce4f747e051480410afc8506c90a57cb45da89071ddae377b1453bca3014422455ade9fe4563ebe51f4b6348cbc0c61905a9b8801cd597d51ad0ec62b3
+DIST gcc-validate-failures-7bbfb01a32b73842f8908de028703510a0e12057.py 27533 
BLAKE2B 
58917750d247d3a9e7078c62fd4412027a7d02d06c659a9c0743697529754218257c00dc6e10dff467e78b4e019225c39b1627b48a5298d13481a7072748a15f
 SHA512 
b74d6358538d1b076f3d5b6632ea405b99627d5b5621b6f5101cb3453be13ba41e11d590039535b0c74b1624b69885a7093600d5395cc60bc63cea15ae7472b3

diff --git a/sys-devel/gcc/gcc-10.5.0.ebuild b/sys-devel/gcc/gcc-10.5.0.ebuild
index bd81637a76e6..0dc97e679afc 100644
--- a/sys-devel/gcc/gcc-10.5.0.ebuild
+++ b/sys-devel/gcc/gcc-10.5.0.ebuild
@@ -8,6 +8,7 @@ PATCH_GCC_VER="10.5.0"
 PATCH_VER="6"
 MUSL_VER="2"
 MUSL_GCC_VER="10.5.0"
+PYTHON_COMPAT=( python3_{10..11} )
 
 if [[ ${PV} == *.9999 ]] ; then
        MY_PV_2=$(ver_cut 2)

diff --git a/sys-devel/gcc/gcc-11.4.1_p20240111.ebuild 
b/sys-devel/gcc/gcc-11.4.1_p20240111.ebuild
index d4ed3934475a..7e0cd54888ec 100644
--- a/sys-devel/gcc/gcc-11.4.1_p20240111.ebuild
+++ b/sys-devel/gcc/gcc-11.4.1_p20240111.ebuild
@@ -8,6 +8,7 @@ PATCH_GCC_VER="11.4.0"
 PATCH_VER="12"
 MUSL_VER="2"
 MUSL_GCC_VER="11.4.0"
+PYTHON_COMPAT=( python3_{10..11} )
 
 if [[ ${PV} == *.9999 ]] ; then
        MY_PV_2=$(ver_cut 2)

diff --git a/sys-devel/gcc/gcc-11.4.1_p20240208.ebuild 
b/sys-devel/gcc/gcc-11.4.1_p20240208.ebuild
index 7f6f5f232c57..9b1b89ca2bff 100644
--- a/sys-devel/gcc/gcc-11.4.1_p20240208.ebuild
+++ b/sys-devel/gcc/gcc-11.4.1_p20240208.ebuild
@@ -8,6 +8,7 @@ PATCH_GCC_VER="11.4.0"
 PATCH_VER="12"
 MUSL_VER="2"
 MUSL_GCC_VER="11.4.0"
+PYTHON_COMPAT=( python3_{10..11} )
 
 if [[ ${PV} == *.9999 ]] ; then
        MY_PV_2=$(ver_cut 2)

diff --git a/sys-devel/gcc/gcc-11.4.1_p20240222.ebuild 
b/sys-devel/gcc/gcc-11.4.1_p20240222.ebuild
index 91a92b092972..5ab7ed2dbcfa 100644
--- a/sys-devel/gcc/gcc-11.4.1_p20240222.ebuild
+++ b/sys-devel/gcc/gcc-11.4.1_p20240222.ebuild
@@ -8,6 +8,7 @@ PATCH_GCC_VER="11.4.0"
 PATCH_VER="12"
 MUSL_VER="2"
 MUSL_GCC_VER="11.4.0"
+PYTHON_COMPAT=( python3_{10..11} )
 
 if [[ ${PV} == *.9999 ]] ; then
        MY_PV_2=$(ver_cut 2)

diff --git a/sys-devel/gcc/gcc-11.4.1_p20240229.ebuild 
b/sys-devel/gcc/gcc-11.4.1_p20240229.ebuild
index 91a92b092972..5ab7ed2dbcfa 100644
--- a/sys-devel/gcc/gcc-11.4.1_p20240229.ebuild
+++ b/sys-devel/gcc/gcc-11.4.1_p20240229.ebuild
@@ -8,6 +8,7 @@ PATCH_GCC_VER="11.4.0"
 PATCH_VER="12"
 MUSL_VER="2"
 MUSL_GCC_VER="11.4.0"
+PYTHON_COMPAT=( python3_{10..11} )
 
 if [[ ${PV} == *.9999 ]] ; then
        MY_PV_2=$(ver_cut 2)

diff --git a/sys-devel/gcc/gcc-11.4.1_p20240307.ebuild 
b/sys-devel/gcc/gcc-11.4.1_p20240307.ebuild
index 91a92b092972..5ab7ed2dbcfa 100644
--- a/sys-devel/gcc/gcc-11.4.1_p20240307.ebuild
+++ b/sys-devel/gcc/gcc-11.4.1_p20240307.ebuild
@@ -8,6 +8,7 @@ PATCH_GCC_VER="11.4.0"
 PATCH_VER="12"
 MUSL_VER="2"
 MUSL_GCC_VER="11.4.0"
+PYTHON_COMPAT=( python3_{10..11} )
 
 if [[ ${PV} == *.9999 ]] ; then
        MY_PV_2=$(ver_cut 2)

diff --git a/sys-devel/gcc/gcc-11.4.1_p20240314.ebuild 
b/sys-devel/gcc/gcc-11.4.1_p20240314.ebuild
index 91a92b092972..5ab7ed2dbcfa 100644
--- a/sys-devel/gcc/gcc-11.4.1_p20240314.ebuild
+++ b/sys-devel/gcc/gcc-11.4.1_p20240314.ebuild
@@ -8,6 +8,7 @@ PATCH_GCC_VER="11.4.0"
 PATCH_VER="12"
 MUSL_VER="2"
 MUSL_GCC_VER="11.4.0"
+PYTHON_COMPAT=( python3_{10..11} )
 
 if [[ ${PV} == *.9999 ]] ; then
        MY_PV_2=$(ver_cut 2)

diff --git a/sys-devel/gcc/gcc-11.5.9999.ebuild 
b/sys-devel/gcc/gcc-11.5.9999.ebuild
index ac7012a6e60d..124b2c1eeeb5 100644
--- a/sys-devel/gcc/gcc-11.5.9999.ebuild
+++ b/sys-devel/gcc/gcc-11.5.9999.ebuild
@@ -6,6 +6,7 @@ EAPI=8
 TOOLCHAIN_PATCH_DEV="sam"
 PATCH_GCC_VER="11.4.0"
 MUSL_GCC_VER="11.4.0"
+PYTHON_COMPAT=( python3_{10..11} )
 
 if [[ ${PV} == *.9999 ]] ; then
        MY_PV_2=$(ver_cut 2)

diff --git a/sys-devel/gcc/gcc-12.3.1_p20240112.ebuild 
b/sys-devel/gcc/gcc-12.3.1_p20240112.ebuild
index 6dad764a57ba..6c45c55e4a05 100644
--- a/sys-devel/gcc/gcc-12.3.1_p20240112.ebuild
+++ b/sys-devel/gcc/gcc-12.3.1_p20240112.ebuild
@@ -8,6 +8,7 @@ PATCH_GCC_VER="12.3.0"
 PATCH_VER="2"
 MUSL_VER="1"
 MUSL_GCC_VER="12.3.0"
+PYTHON_COMPAT=( python3_{10..11} )
 
 if [[ ${PV} == *.9999 ]] ; then
        MY_PV_2=$(ver_cut 2)

diff --git a/sys-devel/gcc/gcc-12.3.1_p20240209.ebuild 
b/sys-devel/gcc/gcc-12.3.1_p20240209.ebuild
index 1d23ca501654..f0ad270b596f 100644
--- a/sys-devel/gcc/gcc-12.3.1_p20240209.ebuild
+++ b/sys-devel/gcc/gcc-12.3.1_p20240209.ebuild
@@ -8,6 +8,7 @@ PATCH_GCC_VER="12.3.0"
 PATCH_VER="3"
 MUSL_VER="1"
 MUSL_GCC_VER="12.3.0"
+PYTHON_COMPAT=( python3_{10..11} )
 
 if [[ ${PV} == *.9999 ]] ; then
        MY_PV_2=$(ver_cut 2)

diff --git a/sys-devel/gcc/gcc-12.3.1_p20240223.ebuild 
b/sys-devel/gcc/gcc-12.3.1_p20240223.ebuild
index 44985e9fed07..2c4b89e72445 100644
--- a/sys-devel/gcc/gcc-12.3.1_p20240223.ebuild
+++ b/sys-devel/gcc/gcc-12.3.1_p20240223.ebuild
@@ -8,6 +8,7 @@ PATCH_GCC_VER="12.3.0"
 PATCH_VER="3"
 MUSL_VER="1"
 MUSL_GCC_VER="12.3.0"
+PYTHON_COMPAT=( python3_{10..11} )
 
 if [[ ${PV} == *.9999 ]] ; then
        MY_PV_2=$(ver_cut 2)

diff --git a/sys-devel/gcc/gcc-12.3.1_p20240301.ebuild 
b/sys-devel/gcc/gcc-12.3.1_p20240301.ebuild
index 44985e9fed07..2c4b89e72445 100644
--- a/sys-devel/gcc/gcc-12.3.1_p20240301.ebuild
+++ b/sys-devel/gcc/gcc-12.3.1_p20240301.ebuild
@@ -8,6 +8,7 @@ PATCH_GCC_VER="12.3.0"
 PATCH_VER="3"
 MUSL_VER="1"
 MUSL_GCC_VER="12.3.0"
+PYTHON_COMPAT=( python3_{10..11} )
 
 if [[ ${PV} == *.9999 ]] ; then
        MY_PV_2=$(ver_cut 2)

diff --git a/sys-devel/gcc/gcc-12.3.1_p20240308.ebuild 
b/sys-devel/gcc/gcc-12.3.1_p20240308.ebuild
index 44985e9fed07..2c4b89e72445 100644
--- a/sys-devel/gcc/gcc-12.3.1_p20240308.ebuild
+++ b/sys-devel/gcc/gcc-12.3.1_p20240308.ebuild
@@ -8,6 +8,7 @@ PATCH_GCC_VER="12.3.0"
 PATCH_VER="3"
 MUSL_VER="1"
 MUSL_GCC_VER="12.3.0"
+PYTHON_COMPAT=( python3_{10..11} )
 
 if [[ ${PV} == *.9999 ]] ; then
        MY_PV_2=$(ver_cut 2)

diff --git a/sys-devel/gcc/gcc-12.3.1_p20240315.ebuild 
b/sys-devel/gcc/gcc-12.3.1_p20240315.ebuild
index 44985e9fed07..2c4b89e72445 100644
--- a/sys-devel/gcc/gcc-12.3.1_p20240315.ebuild
+++ b/sys-devel/gcc/gcc-12.3.1_p20240315.ebuild
@@ -8,6 +8,7 @@ PATCH_GCC_VER="12.3.0"
 PATCH_VER="3"
 MUSL_VER="1"
 MUSL_GCC_VER="12.3.0"
+PYTHON_COMPAT=( python3_{10..11} )
 
 if [[ ${PV} == *.9999 ]] ; then
        MY_PV_2=$(ver_cut 2)

diff --git a/sys-devel/gcc/gcc-12.4.9999.ebuild 
b/sys-devel/gcc/gcc-12.4.9999.ebuild
index 99964a8549bf..4828fd444e14 100644
--- a/sys-devel/gcc/gcc-12.4.9999.ebuild
+++ b/sys-devel/gcc/gcc-12.4.9999.ebuild
@@ -6,6 +6,7 @@ EAPI=8
 TOOLCHAIN_PATCH_DEV="sam"
 PATCH_GCC_VER="12.3.0"
 MUSL_GCC_VER="12.3.0"
+PYTHON_COMPAT=( python3_{10..11} )
 
 if [[ ${PV} == *.9999 ]] ; then
        MY_PV_2=$(ver_cut 2)

diff --git a/sys-devel/gcc/gcc-13.2.1_p20240113-r1.ebuild 
b/sys-devel/gcc/gcc-13.2.1_p20240113-r1.ebuild
index 78cfe0160a15..27e1e5ab20bc 100644
--- a/sys-devel/gcc/gcc-13.2.1_p20240113-r1.ebuild
+++ b/sys-devel/gcc/gcc-13.2.1_p20240113-r1.ebuild
@@ -8,6 +8,7 @@ PATCH_GCC_VER="13.2.0"
 PATCH_VER="12"
 MUSL_VER="2"
 MUSL_GCC_VER="13.2.0"
+PYTHON_COMPAT=( python3_{10..11} )
 
 if [[ ${PV} == *.9999 ]] ; then
        MY_PV_2=$(ver_cut 2)

diff --git a/sys-devel/gcc/gcc-13.2.1_p20240210.ebuild 
b/sys-devel/gcc/gcc-13.2.1_p20240210.ebuild
index 025a27a0140d..e2094692e1f6 100644
--- a/sys-devel/gcc/gcc-13.2.1_p20240210.ebuild
+++ b/sys-devel/gcc/gcc-13.2.1_p20240210.ebuild
@@ -8,6 +8,7 @@ PATCH_GCC_VER="13.2.0"
 PATCH_VER="14"
 MUSL_VER="2"
 MUSL_GCC_VER="13.2.0"
+PYTHON_COMPAT=( python3_{10..11} )
 
 if [[ ${PV} == *.9999 ]] ; then
        MY_PV_2=$(ver_cut 2)

diff --git a/sys-devel/gcc/gcc-13.2.1_p20240224.ebuild 
b/sys-devel/gcc/gcc-13.2.1_p20240224.ebuild
index 7e4df3343e31..1e4b87a7546c 100644
--- a/sys-devel/gcc/gcc-13.2.1_p20240224.ebuild
+++ b/sys-devel/gcc/gcc-13.2.1_p20240224.ebuild
@@ -8,6 +8,7 @@ PATCH_GCC_VER="13.2.0"
 PATCH_VER="14"
 MUSL_VER="2"
 MUSL_GCC_VER="13.2.0"
+PYTHON_COMPAT=( python3_{10..11} )
 
 if [[ ${PV} == *.9999 ]] ; then
        MY_PV_2=$(ver_cut 2)

diff --git a/sys-devel/gcc/gcc-13.2.1_p20240302.ebuild 
b/sys-devel/gcc/gcc-13.2.1_p20240302.ebuild
index 7e4df3343e31..1e4b87a7546c 100644
--- a/sys-devel/gcc/gcc-13.2.1_p20240302.ebuild
+++ b/sys-devel/gcc/gcc-13.2.1_p20240302.ebuild
@@ -8,6 +8,7 @@ PATCH_GCC_VER="13.2.0"
 PATCH_VER="14"
 MUSL_VER="2"
 MUSL_GCC_VER="13.2.0"
+PYTHON_COMPAT=( python3_{10..11} )
 
 if [[ ${PV} == *.9999 ]] ; then
        MY_PV_2=$(ver_cut 2)

diff --git a/sys-devel/gcc/gcc-13.2.1_p20240309.ebuild 
b/sys-devel/gcc/gcc-13.2.1_p20240309.ebuild
index 7e4df3343e31..1e4b87a7546c 100644
--- a/sys-devel/gcc/gcc-13.2.1_p20240309.ebuild
+++ b/sys-devel/gcc/gcc-13.2.1_p20240309.ebuild
@@ -8,6 +8,7 @@ PATCH_GCC_VER="13.2.0"
 PATCH_VER="14"
 MUSL_VER="2"
 MUSL_GCC_VER="13.2.0"
+PYTHON_COMPAT=( python3_{10..11} )
 
 if [[ ${PV} == *.9999 ]] ; then
        MY_PV_2=$(ver_cut 2)

diff --git a/sys-devel/gcc/gcc-13.2.1_p20240316.ebuild 
b/sys-devel/gcc/gcc-13.2.1_p20240316.ebuild
index 7e4df3343e31..1e4b87a7546c 100644
--- a/sys-devel/gcc/gcc-13.2.1_p20240316.ebuild
+++ b/sys-devel/gcc/gcc-13.2.1_p20240316.ebuild
@@ -8,6 +8,7 @@ PATCH_GCC_VER="13.2.0"
 PATCH_VER="14"
 MUSL_VER="2"
 MUSL_GCC_VER="13.2.0"
+PYTHON_COMPAT=( python3_{10..11} )
 
 if [[ ${PV} == *.9999 ]] ; then
        MY_PV_2=$(ver_cut 2)

diff --git a/sys-devel/gcc/gcc-13.3.9999.ebuild 
b/sys-devel/gcc/gcc-13.3.9999.ebuild
index 8fb88041277d..b7539bd2eccf 100644
--- a/sys-devel/gcc/gcc-13.3.9999.ebuild
+++ b/sys-devel/gcc/gcc-13.3.9999.ebuild
@@ -6,6 +6,7 @@ EAPI=8
 TOOLCHAIN_PATCH_DEV="sam"
 PATCH_GCC_VER="13.2.0"
 MUSL_GCC_VER="13.2.0"
+PYTHON_COMPAT=( python3_{10..11} )
 
 if [[ ${PV} == *.9999 ]] ; then
        MY_PV_2=$(ver_cut 2)

diff --git a/sys-devel/gcc/gcc-14.0.1_pre20240218.ebuild 
b/sys-devel/gcc/gcc-14.0.1_pre20240218.ebuild
index 42dcf421f9c8..99c25e40e7da 100644
--- a/sys-devel/gcc/gcc-14.0.1_pre20240218.ebuild
+++ b/sys-devel/gcc/gcc-14.0.1_pre20240218.ebuild
@@ -8,6 +8,7 @@ PATCH_GCC_VER="14.0.0"
 PATCH_VER="23"
 MUSL_VER="1"
 MUSL_GCC_VER="14.0.0"
+PYTHON_COMPAT=( python3_{10..11} )
 
 if [[ ${PV} == *.9999 ]] ; then
        MY_PV_2=$(ver_cut 2)

diff --git a/sys-devel/gcc/gcc-14.0.1_pre20240225.ebuild 
b/sys-devel/gcc/gcc-14.0.1_pre20240225.ebuild
index b2ec3cf0207f..0345762de5b9 100644
--- a/sys-devel/gcc/gcc-14.0.1_pre20240225.ebuild
+++ b/sys-devel/gcc/gcc-14.0.1_pre20240225.ebuild
@@ -8,6 +8,7 @@ PATCH_GCC_VER="14.0.0"
 PATCH_VER="23"
 MUSL_VER="1"
 MUSL_GCC_VER="14.0.0"
+PYTHON_COMPAT=( python3_{10..11} )
 
 if [[ ${PV} == *.9999 ]] ; then
        MY_PV_2=$(ver_cut 2)

diff --git a/sys-devel/gcc/gcc-14.0.1_pre20240303-r1.ebuild 
b/sys-devel/gcc/gcc-14.0.1_pre20240303-r1.ebuild
index 6adc86384c34..b939f9d7fa98 100644
--- a/sys-devel/gcc/gcc-14.0.1_pre20240303-r1.ebuild
+++ b/sys-devel/gcc/gcc-14.0.1_pre20240303-r1.ebuild
@@ -8,6 +8,7 @@ PATCH_GCC_VER="14.0.0"
 PATCH_VER="24"
 MUSL_VER="1"
 MUSL_GCC_VER="14.0.0"
+PYTHON_COMPAT=( python3_{10..11} )
 
 if [[ ${PV} == *.9999 ]] ; then
        MY_PV_2=$(ver_cut 2)

diff --git a/sys-devel/gcc/gcc-14.0.1_pre20240310.ebuild 
b/sys-devel/gcc/gcc-14.0.1_pre20240310.ebuild
index bef7ad150c18..e809e40f6564 100644
--- a/sys-devel/gcc/gcc-14.0.1_pre20240310.ebuild
+++ b/sys-devel/gcc/gcc-14.0.1_pre20240310.ebuild
@@ -8,6 +8,7 @@ PATCH_GCC_VER="14.0.0"
 PATCH_VER="25"
 MUSL_VER="1"
 MUSL_GCC_VER="14.0.0"
+PYTHON_COMPAT=( python3_{10..11} )
 
 if [[ ${PV} == *.9999 ]] ; then
        MY_PV_2=$(ver_cut 2)

diff --git a/sys-devel/gcc/gcc-14.0.1_pre20240317.ebuild 
b/sys-devel/gcc/gcc-14.0.1_pre20240317.ebuild
index bef7ad150c18..e809e40f6564 100644
--- a/sys-devel/gcc/gcc-14.0.1_pre20240317.ebuild
+++ b/sys-devel/gcc/gcc-14.0.1_pre20240317.ebuild
@@ -8,6 +8,7 @@ PATCH_GCC_VER="14.0.0"
 PATCH_VER="25"
 MUSL_VER="1"
 MUSL_GCC_VER="14.0.0"
+PYTHON_COMPAT=( python3_{10..11} )
 
 if [[ ${PV} == *.9999 ]] ; then
        MY_PV_2=$(ver_cut 2)

diff --git a/sys-devel/gcc/gcc-14.0.9999.ebuild 
b/sys-devel/gcc/gcc-14.0.9999.ebuild
index e1e9864a4fe1..762b2f9aca6b 100644
--- a/sys-devel/gcc/gcc-14.0.9999.ebuild
+++ b/sys-devel/gcc/gcc-14.0.9999.ebuild
@@ -6,6 +6,7 @@ EAPI=8
 TOOLCHAIN_PATCH_DEV="sam"
 PATCH_GCC_VER="14.0.0"
 MUSL_GCC_VER="14.0.0"
+PYTHON_COMPAT=( python3_{10..11} )
 
 if [[ -n ${TOOLCHAIN_GCC_RC} ]] ; then
        # Cheesy hack for RCs

diff --git a/sys-devel/gcc/gcc-8.5.0-r1.ebuild 
b/sys-devel/gcc/gcc-8.5.0-r1.ebuild
index 2d77b92b0327..d28f4f80cd55 100644
--- a/sys-devel/gcc/gcc-8.5.0-r1.ebuild
+++ b/sys-devel/gcc/gcc-8.5.0-r1.ebuild
@@ -6,6 +6,7 @@ EAPI="7"
 TOOLCHAIN_PATCH_SUFFIX="xz"
 TOOLCHAIN_PATCH_DEV="sam"
 PATCH_VER="4"
+PYTHON_COMPAT=( python3_{10..11} )
 
 inherit toolchain
 

diff --git a/sys-devel/gcc/gcc-9.5.0.ebuild b/sys-devel/gcc/gcc-9.5.0.ebuild
index 530a5a440515..05e98780deb1 100644
--- a/sys-devel/gcc/gcc-9.5.0.ebuild
+++ b/sys-devel/gcc/gcc-9.5.0.ebuild
@@ -6,6 +6,7 @@ EAPI=8
 TOOLCHAIN_PATCH_DEV="sam"
 PATCH_GCC_VER="9.5.0"
 PATCH_VER="2"
+PYTHON_COMPAT=( python3_{10..11} )
 
 if [[ ${PV} == *.9999 ]] ; then
        MY_PV_2=$(ver_cut 2)

Reply via email to