sys-libs/glibc: fix glibc-headers bootstrap on non-multilib host
authorSergei Trofimovich <slyfox@gentoo.org>
Fri, 30 Mar 2018 11:41:50 +0000 (12:41 +0100)
committerSergei Trofimovich <slyfox@gentoo.org>
Fri, 30 Mar 2018 11:43:08 +0000 (12:43 +0100)
The error is found by wm_ attempting to build a cross-compiler
    CHOST=powerpc-unknown-linux-gnu CTARGET=mips64-unknown-linux-gnu
Boostrap failed on glibc-headers (./configure phase) as:

  configure:2623: powerpc-unknown-linux-gnu-gcc -mabi=n32 -c \
      -O1 -pipe -U_FORTIFY_SOURCE conftest.c >&5
  powerpc-unknown-linux-gnu-gcc: error: \
      unrecognized command line option '-mabi=n32'; did you mean '-mabi=d32'?

Note how target's ABI is mexed into host's compiler flags.

The error above happens on every host=non-multilib target=multilib combination.
I've reproduced it on:
    CHOST=i686-pc-linux-gnu CTARGET=mips64-unknown-linux-gnu

The fix is not to inject target's CFLAGS ABI into CC for
USE=headers-only bootstrap step as we don't have cross-compiler yet.

Tested by successfully bootstrapping cross-compiler on
    CHOST=i686-pc-linux-gnu CTARGET=mips64-unknown-linux-gnu

Package-Manager: Portage-2.3.26, Repoman-2.3.7

sys-libs/glibc/glibc-2.27-r1.ebuild
sys-libs/glibc/glibc-9999.ebuild

index a175b225e1816e894c6b04326ba9badae5c9f35e..b281c00fac39c60db358eead67f0cfd7d60a5ccb 100644 (file)
@@ -457,6 +457,13 @@ setup_env() {
 
        export ABI=${ABI:-${DEFAULT_ABI:-default}}
 
+       if use headers-only ; then
+               # Avoid mixing host's CC and target's CFLAGS_${ABI}:
+               # At this bootstrap stage we have only binutils for
+               # target but not compiler yet.
+               einfo "Skip CC ABI injection. We can't use (cross-)compiler yet."
+               return 0
+       fi
        local VAR=CFLAGS_${ABI}
        # We need to export CFLAGS with abi information in them because glibc's
        # configure script checks CFLAGS for some targets (like mips).  Keep
index 52fe095e5fdce84a2de37482c8f220c3ce1c2777..17f8cdafed54aaf3bd2c2ded3ae72dee21b264b8 100644 (file)
@@ -457,6 +457,13 @@ setup_env() {
 
        export ABI=${ABI:-${DEFAULT_ABI:-default}}
 
+       if use headers-only ; then
+               # Avoid mixing host's CC and target's CFLAGS_${ABI}:
+               # At this bootstrap stage we have only binutils for
+               # target but not compiler yet.
+               einfo "Skip CC ABI injection. We can't use (cross-)compiler yet."
+               return 0
+       fi
        local VAR=CFLAGS_${ABI}
        # We need to export CFLAGS with abi information in them because glibc's
        # configure script checks CFLAGS for some targets (like mips).  Keep