commit:     dc0564d9e7675dad5603d5e8cfbf50e0154891b5
Author:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Fri Apr  6 19:13:27 2018 +0000
Commit:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Fri Apr  6 19:13:38 2018 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=dc0564d9

sys-libs/glibc: tweak riscv preconfigure mangling

Changed 'preconfigure' mangling from using sed to using CPPFLAGS.
While at it move the hack closer to ./configure call.

Package-Manager: Portage-2.3.28, Repoman-2.3.9

 sys-libs/glibc/glibc-2.27-r1.ebuild | 43 ++++++++++++++++++------------------
 sys-libs/glibc/glibc-9999.ebuild    | 44 +++++++++++++++++++------------------
 2 files changed, 45 insertions(+), 42 deletions(-)

diff --git a/sys-libs/glibc/glibc-2.27-r1.ebuild 
b/sys-libs/glibc/glibc-2.27-r1.ebuild
index c61cf3e2929..3cc1a137ada 100644
--- a/sys-libs/glibc/glibc-2.27-r1.ebuild
+++ b/sys-libs/glibc/glibc-2.27-r1.ebuild
@@ -754,26 +754,6 @@ src_prepare() {
                einfo "Done."
        fi
 
-       if just_headers ; then
-               if [[ -e sysdeps/riscv/preconfigure ]] ; then
-                       # RISC-V interrogates the compiler to determine which 
target to
-                       # build.  If building the headers then we don't 
strictly need a
-                       # RISC-V compiler, so the built-in definitions that are 
provided
-                       # along with all RISC-V compiler might not exist.  This 
causes
-                       # glibc's RISC-V preconfigure script to blow up.  Since 
we're just
-                       # building the headers any value will actually work 
here, so just
-                       # pick the standard one (rv64g/lp64d) to make the build 
scripts
-                       # happy for now -- the headers are all the same anyway 
so it
-                       # doesn't matter.
-                       sed -i 's/^    xlen=.*/    xlen=64/g' 
sysdeps/riscv/preconfigure || die
-                       sed -i 's/^    flen=.*/    flen=64/g' 
sysdeps/riscv/preconfigure || die
-                       sed -i 's/^    float_abi=.*/    float_abi=double/g' 
sysdeps/riscv/preconfigure || die
-                       sed -i 's/^    atomic=.*/    atomic=__riscv_atomic/g' 
sysdeps/riscv/preconfigure || die
-                       sed -i 
's/^libc_cv_riscv_float_abi=no/libc_cv_riscv_float_abi=d/g' 
sysdeps/unix/sysv/linux/riscv/configure.ac || die
-                       sed -i 
's/^libc_cv_riscv_float_abi=no/libc_cv_riscv_float_abi=d/g' 
sysdeps/unix/sysv/linux/riscv/configure || die
-               fi
-       fi
-
        default
 
        gnuconfig_update
@@ -1009,6 +989,8 @@ glibc_headers_configure() {
                export ${v}
        done
 
+       local headers_only_arch_CPPFLAGS=()
+
        # Blow away some random CC settings that screw things up. #550192
        if [[ -d ${S}/sysdeps/mips ]]; then
                pushd "${S}"/sysdeps/mips >/dev/null
@@ -1025,6 +1007,25 @@ glibc_headers_configure() {
                popd >/dev/null
        fi
 
+       case ${CTARGET} in
+       riscv*)
+               # RISC-V interrogates the compiler to determine which target to
+               # build.  If building the headers then we don't strictly need a
+               # RISC-V compiler, so the built-in definitions that are provided
+               # along with all RISC-V compiler might not exist.  This causes
+               # glibc's RISC-V preconfigure script to blow up.  Since we're 
just
+               # building the headers any value will actually work here, so 
just
+               # pick the standard one (rv64g/lp64d) to make the build scripts
+               # happy for now -- the headers are all the same anyway so it
+               # doesn't matter.
+               headers_only_arch_CPPFLAGS+=(
+                       -D__riscv_xlen=64
+                       -D__riscv_flen=64
+                       -D__riscv_float_abi_double=1
+                       -D__riscv_atomic=1
+               ) ;;
+       esac
+
        local myconf=()
        myconf+=(
                --disable-sanity-checks
@@ -1043,7 +1044,7 @@ glibc_headers_configure() {
        # So forcing CC/CFLAGS is sane.
        local headers_only_CC=$(tc-getBUILD_CC)
        local headers_only_CFLAGS="-O1 -pipe"
-       local headers_only_CPPFLAGS="-U_FORTIFY_SOURCE"
+       local headers_only_CPPFLAGS="-U_FORTIFY_SOURCE 
${headers_only_arch_CPPFLAGS[*]}"
        local headers_only_LDFLAGS=""
        set -- "${S}"/configure "${myconf[@]}"
        echo \

diff --git a/sys-libs/glibc/glibc-9999.ebuild b/sys-libs/glibc/glibc-9999.ebuild
index 12272c31f35..519bc28c954 100644
--- a/sys-libs/glibc/glibc-9999.ebuild
+++ b/sys-libs/glibc/glibc-9999.ebuild
@@ -754,26 +754,6 @@ src_prepare() {
                einfo "Done."
        fi
 
-       if just_headers ; then
-               if [[ -e sysdeps/riscv/preconfigure ]] ; then
-                       # RISC-V interrogates the compiler to determine which 
target to
-                       # build.  If building the headers then we don't 
strictly need a
-                       # RISC-V compiler, so the built-in definitions that are 
provided
-                       # along with all RISC-V compiler might not exist.  This 
causes
-                       # glibc's RISC-V preconfigure script to blow up.  Since 
we're just
-                       # building the headers any value will actually work 
here, so just
-                       # pick the standard one (rv64g/lp64d) to make the build 
scripts
-                       # happy for now -- the headers are all the same anyway 
so it
-                       # doesn't matter.
-                       sed -i 's/^    xlen=.*/    xlen=64/g' 
sysdeps/riscv/preconfigure || die
-                       sed -i 's/^    flen=.*/    flen=64/g' 
sysdeps/riscv/preconfigure || die
-                       sed -i 's/^    float_abi=.*/    float_abi=double/g' 
sysdeps/riscv/preconfigure || die
-                       sed -i 's/^    atomic=.*/    atomic=__riscv_atomic/g' 
sysdeps/riscv/preconfigure || die
-                       sed -i 
's/^libc_cv_riscv_float_abi=no/libc_cv_riscv_float_abi=d/g' 
sysdeps/unix/sysv/linux/riscv/configure.ac || die
-                       sed -i 
's/^libc_cv_riscv_float_abi=no/libc_cv_riscv_float_abi=d/g' 
sysdeps/unix/sysv/linux/riscv/configure || die
-               fi
-       fi
-
        default
 
        gnuconfig_update
@@ -1009,6 +989,8 @@ glibc_headers_configure() {
                export ${v}
        done
 
+       local headers_only_arch_CPPFLAGS=()
+
        # Blow away some random CC settings that screw things up. #550192
        if [[ -d ${S}/sysdeps/mips ]]; then
                pushd "${S}"/sysdeps/mips >/dev/null
@@ -1025,6 +1007,25 @@ glibc_headers_configure() {
                popd >/dev/null
        fi
 
+       case ${CTARGET} in
+       riscv*)
+               # RISC-V interrogates the compiler to determine which target to
+               # build.  If building the headers then we don't strictly need a
+               # RISC-V compiler, so the built-in definitions that are provided
+               # along with all RISC-V compiler might not exist.  This causes
+               # glibc's RISC-V preconfigure script to blow up.  Since we're 
just
+               # building the headers any value will actually work here, so 
just
+               # pick the standard one (rv64g/lp64d) to make the build scripts
+               # happy for now -- the headers are all the same anyway so it
+               # doesn't matter.
+               headers_only_arch_CPPFLAGS+=(
+                       -D__riscv_xlen=64
+                       -D__riscv_flen=64
+                       -D__riscv_float_abi_double=1
+                       -D__riscv_atomic=1
+               ) ;;
+       esac
+
        local myconf=()
        myconf+=(
                --disable-sanity-checks
@@ -1043,7 +1044,7 @@ glibc_headers_configure() {
        # So forcing CC/CFLAGS is sane.
        local headers_only_CC=$(tc-getBUILD_CC)
        local headers_only_CFLAGS="-O1 -pipe"
-       local headers_only_CPPFLAGS="-U_FORTIFY_SOURCE"
+       local headers_only_CPPFLAGS="-U_FORTIFY_SOURCE 
${headers_only_arch_CPPFLAGS[*]}"
        local headers_only_LDFLAGS=""
        set -- "${S}"/configure "${myconf[@]}"
        echo \
@@ -1101,6 +1102,7 @@ src_test() {
        if just_headers ; then
                return
        fi
+
        # Give tests more time to complete.
        export TIMEOUTFACTOR=5
 

Reply via email to