commit: 3ff56613857700dd0dfe2937539ae13fc3212eb4
Author: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Tue Jun 26 07:54:33 2018 +0000
Commit: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Tue Jun 26 09:48:14 2018 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=3ff56613
sys-libs/glibc: pass user's CFLAGS over CC/XX, not CPPFLAGS
Breakage example (before this change):
# CFLAGS="-O2 -march=core2 -mno-sse4.2" emerge -v1 =glibc-2.27-r4
Here user's CFLAGS were able to override (this bug) glibc's
CFLAGS additions like:
sysdeps/i386/i686/multiarch/Makefile:CFLAGS-strspn-c.c += -msse4
'strspn' was built as 'gcc -msse4 -mno-sse4.2' and failed:
smmintrin.h:631:1: error: inlining failed in call to always_inline
‘_mm_cmpistri’: target specific option mismatch
This happens because we passed user's CFLAGS via CPPFLAGS:
Makerules:COMPILE.c = $(CC) -c $(CFLAGS) $(CPPFLAGS)
To avoid this kind of overrides this change injects user's CFLAGS
into CC/CXX. Above example will use 'gcc -mno-sse4.2 -msse4' order.
Reported-by: Philipp Psurek
Bug: https://bugs.gentoo.org/657760
Closes: https://bugs.gentoo.org/659030
Package-Manager: Portage-2.3.40, Repoman-2.3.9
.../{glibc-9999.ebuild => glibc-2.27-r5.ebuild} | 26 ++++++++++------------
sys-libs/glibc/glibc-9999.ebuild | 16 ++++++-------
2 files changed, 20 insertions(+), 22 deletions(-)
diff --git a/sys-libs/glibc/glibc-9999.ebuild
b/sys-libs/glibc/glibc-2.27-r5.ebuild
similarity index 98%
copy from sys-libs/glibc/glibc-9999.ebuild
copy to sys-libs/glibc/glibc-2.27-r5.ebuild
index 11e503dd7aa..0e9283a66ca 100644
--- a/sys-libs/glibc/glibc-9999.ebuild
+++ b/sys-libs/glibc/glibc-2.27-r5.ebuild
@@ -18,8 +18,7 @@ if [[ ${PV} == 9999* ]]; then
EGIT_REPO_URI="https://sourceware.org/git/glibc.git"
inherit git-r3
else
- # KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc
~ppc64 ~s390 ~sh ~sparc ~x86"
- KEYWORDS=""
+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64
~s390 ~sh ~sparc ~x86"
SRC_URI="mirror://gnu/glibc/${P}.tar.xz"
fi
@@ -28,12 +27,12 @@ RELEASE_VER=${PV}
GCC_BOOTSTRAP_VER=20180511
# Gentoo patchset
-PATCH_VER=6
+PATCH_VER=2
SRC_URI+="
https://dev.gentoo.org/~dilfridge/distfiles/${P}-patches-${PATCH_VER}.tar.bz2"
SRC_URI+=" multilib? (
https://dev.gentoo.org/~dilfridge/distfiles/gcc-multilib-bootstrap-${GCC_BOOTSTRAP_VER}.tar.xz
)"
-IUSE="audit caps compile-locales doc gd hardened headers-only multilib nscd
profile selinux suid systemtap test vanilla"
+IUSE="audit caps compile-locales doc gd hardened headers-only multilib nscd
profile selinux suid systemtap vanilla"
# Minimum kernel version that glibc requires
MIN_KERN_VER="3.2.0"
@@ -78,10 +77,8 @@ DEPEND="${COMMON_DEPEND}
!<sys-apps/portage-2.1.2
!<sys-devel/bison-2.7
doc? ( sys-apps/texinfo )
- test? ( >=net-dns/libidn2-2.0.5 )
"
RDEPEND="${COMMON_DEPEND}
- >=net-dns/libidn2-2.0.5
sys-apps/gentoo-functions
!sys-kernel/ps3-sources
!sys-libs/nss-db
@@ -793,20 +790,21 @@ glibc_do_configure() {
einfo " $(printf '%15s' ${v}:) ${!v}"
done
+ # CFLAGS can contain ABI-specific flags like -mfpu=neon, see bug #657760
+ # To build .S (assembly) files with the same ABI-specific flags
+ # upstream currently recommends adding CFLAGS to CC/CXX:
+ # https://sourceware.org/PR23273
+ # Note: Passing CFLAGS via CPPFLAGS overrides glibc's arch-specific
CFLAGS
+ # and breaks multiarch support. See 659030#c3 for an example.
+
# The glibc configure script doesn't properly use LDFLAGS all the time.
- export CC="$(tc-getCC ${CTARGET}) ${LDFLAGS}"
+ export CC="$(tc-getCC ${CTARGET}) ${CFLAGS} ${LDFLAGS}"
einfo " $(printf '%15s' 'Manual CC:') ${CC}"
# Some of the tests are written in C++, so we need to force our multlib
abis in, bug 623548
- export CXX="$(tc-getCXX ${CTARGET}) $(get_abi_CFLAGS)"
+ export CXX="$(tc-getCXX ${CTARGET}) $(get_abi_CFLAGS) ${CFLAGS}"
einfo " $(printf '%15s' 'Manual CXX:') ${CXX}"
- # CFLAGS can contain ABI-specific flags like -mfpu=neon, see bug #657760
- # To build .S (assembly) files with the same ABI-specific flags
- # upstream currently recommends adding CFLAGS to CPPFLAGS:
https://sourceware.org/PR23273
- export CPPFLAGS="${CPPFLAGS} ${CFLAGS}"
- einfo " $(printf '%15s' 'Manual CPPFLAGS:') ${CPPFLAGS}"
-
echo
local myconf=()
diff --git a/sys-libs/glibc/glibc-9999.ebuild b/sys-libs/glibc/glibc-9999.ebuild
index 11e503dd7aa..9417381e164 100644
--- a/sys-libs/glibc/glibc-9999.ebuild
+++ b/sys-libs/glibc/glibc-9999.ebuild
@@ -793,20 +793,20 @@ glibc_do_configure() {
einfo " $(printf '%15s' ${v}:) ${!v}"
done
+ # CFLAGS can contain ABI-specific flags like -mfpu=neon, see bug #657760
+ # To build .S (assembly) files with the same ABI-specific flags
+ # upstream currently recommends adding CFLAGS to CC/CXX:
+ # https://sourceware.org/PR23273
+ # Note: Passing CFLAGS via CPPFLAGS overrides glibc's arch-specific
CFLAGS
+ # and breaks multiarch support. See 659030#c3 for an example.
# The glibc configure script doesn't properly use LDFLAGS all the time.
- export CC="$(tc-getCC ${CTARGET}) ${LDFLAGS}"
+ export CC="$(tc-getCC ${CTARGET}) ${CFLAGS} ${LDFLAGS}"
einfo " $(printf '%15s' 'Manual CC:') ${CC}"
# Some of the tests are written in C++, so we need to force our multlib
abis in, bug 623548
- export CXX="$(tc-getCXX ${CTARGET}) $(get_abi_CFLAGS)"
+ export CXX="$(tc-getCXX ${CTARGET}) $(get_abi_CFLAGS) ${CFLAGS}"
einfo " $(printf '%15s' 'Manual CXX:') ${CXX}"
- # CFLAGS can contain ABI-specific flags like -mfpu=neon, see bug #657760
- # To build .S (assembly) files with the same ABI-specific flags
- # upstream currently recommends adding CFLAGS to CPPFLAGS:
https://sourceware.org/PR23273
- export CPPFLAGS="${CPPFLAGS} ${CFLAGS}"
- einfo " $(printf '%15s' 'Manual CPPFLAGS:') ${CPPFLAGS}"
-
echo
local myconf=()