diff options
author | Sam James <sam@gentoo.org> | 2024-02-19 05:02:09 +0000 |
---|---|---|
committer | Sam James <sam@gentoo.org> | 2024-02-19 05:05:32 +0000 |
commit | 0b75d3ce0bae8240c28c6a8f191f5130548f8475 (patch) | |
tree | 4cb9dae7ff08cf2b46f055957e2da74d16f0fd66 /eclass | |
parent | dev-python/evdev: Bump to 1.7.0 (diff) | |
download | gentoo-0b75d3ce0bae8240c28c6a8f191f5130548f8475.tar.gz gentoo-0b75d3ce0bae8240c28c6a8f191f5130548f8475.tar.bz2 gentoo-0b75d3ce0bae8240c28c6a8f191f5130548f8475.zip |
toolchain.eclass: rework fixincludes again
* Only run fixincludes for >= GCC 13 with <sys-libs/glibc-2.38.
* Refactor the logic while at it to make it easier to control (as we do some
bits depending on it in src_install).
Doing this after getting for cross:
```
The directory (BUILD_SYSTEM_HEADER_DIR) that should contain system headers does not exist:
/usr/lib/gcc/aarch64_be-unknown-linux-gnu/14/include
make[2]: *** [Makefile:3448: stmp-fixinc] Error 1
make[2]: *** Waiting for unfinished jobs....
```
This should also let us drop the patch for bug #905118 now.
Bug: https://bugs.gentoo.org/905118
Bug: https://gcc.gnu.org/PR107128
Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'eclass')
-rw-r--r-- | eclass/toolchain.eclass | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/eclass/toolchain.eclass b/eclass/toolchain.eclass index 6a4b59972fa3..5de1329347ee 100644 --- a/eclass/toolchain.eclass +++ b/eclass/toolchain.eclass @@ -140,6 +140,11 @@ GCCMINOR=$(ver_cut 2 ${GCC_PV}) # @DESCRIPTION: # GCC micro version. GCCMICRO=$(ver_cut 3 ${GCC_PV}) +# @ECLASS_VARIABLE: GCC_RUN_FIXINCLUDES +# @INTERNAL +# @DESCRIPTION: +# Controls whether fixincludes should be used. +GCC_RUN_FIXINCLUDES=0 tc_use_major_version_only() { local use_major_version_only=0 @@ -1297,6 +1302,20 @@ toolchain_src_configure() { ) fi + if tc_version_is_at_least 13.1 ; then + # Re-enable fixincludes for >= GCC 13 with older glibc + # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107128 + if use elibc_glibc && has_version "<sys-libs/glibc-2.38" ; then + GCC_RUN_FIXINCLUDES=1 + fi + + if [[ ${GCC_RUN_FIXINCLUDES} == 1 ]] ; then + confgcc+=( --enable-fixincludes ) + else + confgcc+=( --disable-fixincludes ) + fi + fi + # TODO: Ignore RCs here (but TOOLCHAIN_IS_RC isn't yet an eclass var) if [[ ${PV} == *_p* && -f "${S}"/gcc/doc/gcc.info ]] ; then # Safeguard against https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106899 being fixed @@ -1831,9 +1850,7 @@ toolchain_src_install() { # Don't allow symlinks in private gcc include dir as this can break the build find gcc/include*/ -type l -delete || die - # Re-enable fixincludes for >= GCC 13 - # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107128 - if [[ ${GCCMAJOR} -lt 13 ]] ; then + if [[ ${GCC_RUN_FIXINCLUDES} == 0 ]] ; then # We remove the generated fixincludes, as they can cause things to break # (ncurses, openssl, etc). We do not prevent them from being built, as # in the following commit which we revert: |