summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Trofimovich <slyfox@gentoo.org>2019-10-19 22:10:52 +0100
committerSergei Trofimovich <slyfox@gentoo.org>2019-10-19 22:20:35 +0100
commitcd38a4bf6a3a966d4066645279dbbe118823368f (patch)
tree2e7845d5545869ec0284acc229bd9a9d5236b692 /eclass/toolchain.eclass
parenttoolchain.eclass: drop support for deprecated mingw-runtime (diff)
downloadgentoo-cd38a4bf6a3a966d4066645279dbbe118823368f.tar.gz
gentoo-cd38a4bf6a3a966d4066645279dbbe118823368f.tar.bz2
gentoo-cd38a4bf6a3a966d4066645279dbbe118823368f.zip
toolchain.eclass: enable selective stipping for EAPI=7
Before the change we stripped no binaries or object files for gcc on any EAPI. After the change we strip all native binaries, libraries and object files (only on EAPI=7). Non-native binaries (cross-compiler case) is skipped by means of 'dostrip -x'. Bug: https://bugs.gentoo.org/686512 Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
Diffstat (limited to 'eclass/toolchain.eclass')
-rw-r--r--eclass/toolchain.eclass20
1 files changed, 16 insertions, 4 deletions
diff --git a/eclass/toolchain.eclass b/eclass/toolchain.eclass
index fe8944833a97..43cacd813267 100644
--- a/eclass/toolchain.eclass
+++ b/eclass/toolchain.eclass
@@ -6,7 +6,6 @@
DESCRIPTION="The GNU Compiler Collection"
HOMEPAGE="https://gcc.gnu.org/"
-RESTRICT="strip" # cross-compilers need controlled stripping
inherit eutils fixheadtails flag-o-matic gnuconfig libtool multilib pax-utils toolchain-funcs prefix
@@ -30,6 +29,17 @@ case ${EAPI:-0} in
7) ;;
*) die "I don't speak EAPI ${EAPI}." ;;
esac
+
+tc_supports_dostrip() {
+ case ${EAPI:-0} in
+ 5*|6) return 1 ;;
+ 7) return 0 ;;
+ *) die "Update apply_patches() for ${EAPI}." ;;
+ esac
+}
+
+tc_supports_dostrip || RESTRICT="strip" # cross-compilers need controlled stripping
+
EXPORT_FUNCTIONS pkg_pretend pkg_setup src_unpack src_prepare src_configure \
src_compile src_test src_install pkg_postinst pkg_postrm
@@ -1852,15 +1862,17 @@ toolchain_src_install() {
fi
fi
- # TODO(bug #686512): implement stripping (we use RESTRICT=strip)
- # As gcc installs object files both build against ${CHOST} and ${CTARGET}
- # we will ned to run stripping using different tools:
+ # As gcc installs object files built against bost ${CHOST} and ${CTARGET}
+ # ideally we will need to strip them using different tools:
# Using ${CHOST} tools:
# - "${D}${BINPATH}"
# - (for is_crosscompile) "${D}${HOSTLIBPATH}"
# - "${D}${PREFIX}/libexec/gcc/${CTARGET}/${GCC_CONFIG_VER}"
# Using ${CTARGET} tools:
# - "${D}${LIBPATH}"
+ # As dostrip does not specify host to override ${CHOST} tools just skip
+ # non-native binary stripping.
+ is_crosscompile && tc_supports_dostrip && dostrip -x "${LIBPATH}"
cd "${S}"
if is_crosscompile; then