summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2018-11-05 20:21:28 +0100
committerMichał Górny <mgorny@gentoo.org>2018-11-05 21:30:07 +0100
commitb3a6959b9d383bb602c616668c3866e312ff6dbf (patch)
treeb897bbe57bb9e4f73512518550506ab7a65a57d1
parentSupport disabling docompress for binary package builds (diff)
downloadportage-b3a6959b9d383bb602c616668c3866e312ff6dbf.tar.gz
portage-b3a6959b9d383bb602c616668c3866e312ff6dbf.tar.bz2
portage-b3a6959b9d383bb602c616668c3866e312ff6dbf.zip
Support disabling stripping for binary packages
Similarly to FEATURES=binpkg-docompress, implement FEATURES=binpkg-dostrip that controls whether stripping occurs before or after building the binary package. This makes it possible to build binary packages with some debug information that is stripped upon installing. Afterwards, the binary packages can be reinstalled with debug info (either via nostrip or splitdebug). Real usability of this feature will be limited by optimization levels applied but still, it's better than nothing. Signed-off-by: Michał Górny <mgorny@gentoo.org> Reviewed-by: Zac Medico <zmedico@gentoo.org>
-rwxr-xr-xbin/misc-functions.sh34
-rw-r--r--cnf/make.globals4
-rw-r--r--lib/portage/const.py3
-rw-r--r--man/make.conf.515
4 files changed, 42 insertions, 14 deletions
diff --git a/bin/misc-functions.sh b/bin/misc-functions.sh
index 3b3a5e09c..5de26b44d 100755
--- a/bin/misc-functions.sh
+++ b/bin/misc-functions.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 1999-2018 Gentoo Foundation
+# Copyright 1999-2018 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
#
# Miscellaneous shell functions that make use of the ebuild env but don't need
@@ -117,13 +117,18 @@ install_qa_check() {
"${PORTAGE_BIN_PATH}"/ecompress --dequeue
fi
- export STRIP_MASK
- if ___eapi_has_dostrip; then
- "${PORTAGE_BIN_PATH}"/estrip --queue "${PORTAGE_DOSTRIP[@]}"
- "${PORTAGE_BIN_PATH}"/estrip --ignore "${PORTAGE_DOSTRIP_SKIP[@]}"
- "${PORTAGE_BIN_PATH}"/estrip --dequeue
- else
- prepallstrip
+ # If binpkg-dostrip is enabled, apply stripping before creating
+ # the binary package.
+ # Note: disabling it won't help with packages calling prepstrip directly.
+ if has binpkg-dostrip ${FEATURES}; then
+ export STRIP_MASK
+ if ___eapi_has_dostrip; then
+ "${PORTAGE_BIN_PATH}"/estrip --queue "${PORTAGE_DOSTRIP[@]}"
+ "${PORTAGE_BIN_PATH}"/estrip --ignore "${PORTAGE_DOSTRIP_SKIP[@]}"
+ "${PORTAGE_BIN_PATH}"/estrip --dequeue
+ else
+ prepallstrip
+ fi
fi
if has chflags $FEATURES ; then
@@ -186,6 +191,19 @@ __dyn_instprep() {
"${PORTAGE_BIN_PATH}"/ecompress --dequeue
fi
+ # If binpkg-dostrip is disabled, apply stripping before creating
+ # the binary package.
+ if ! has binpkg-dostrip ${FEATURES}; then
+ export STRIP_MASK
+ if ___eapi_has_dostrip; then
+ "${PORTAGE_BIN_PATH}"/estrip --queue "${PORTAGE_DOSTRIP[@]}"
+ "${PORTAGE_BIN_PATH}"/estrip --ignore "${PORTAGE_DOSTRIP_SKIP[@]}"
+ "${PORTAGE_BIN_PATH}"/estrip --dequeue
+ else
+ prepallstrip
+ fi
+ fi
+
if has chflags ${FEATURES}; then
# Restore all the file flags that were saved earlier on.
mtree -U -e -p "${ED}" -k flags < "${T}/bsdflags.mtree" &> /dev/null
diff --git a/cnf/make.globals b/cnf/make.globals
index 72b567e98..d394a1890 100644
--- a/cnf/make.globals
+++ b/cnf/make.globals
@@ -1,4 +1,4 @@
-# Copyright 1999-2013 Gentoo Foundation
+# Copyright 1999-2018 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# System-wide defaults for the Portage system
@@ -50,7 +50,7 @@ RESUMECOMMAND_SSH=${FETCHCOMMAND_SSH}
FETCHCOMMAND_SFTP="bash -c \"x=\\\${2#sftp://} ; host=\\\${x%%/*} ; port=\\\${host##*:} ; host=\\\${host%:*} ; [[ \\\${host} = \\\${port} ]] && port= ; eval \\\"declare -a ssh_opts=(\\\${3})\\\" ; exec sftp \\\${port:+-P \\\${port}} \\\"\\\${ssh_opts[@]}\\\" \\\"\\\${host}:/\\\${x#*/}\\\" \\\"\\\$1\\\"\" sftp \"\${DISTDIR}/\${FILE}\" \"\${URI}\" \"\${PORTAGE_SSH_OPTS}\""
# Default user options
-FEATURES="assume-digests binpkg-docompress binpkg-logs
+FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs
config-protect-if-modified distlocks ebuild-locks
fixlafiles merge-sync multilib-strict news
parallel-fetch preserve-libs protect-owned
diff --git a/lib/portage/const.py b/lib/portage/const.py
index a343fc040..602caeb34 100644
--- a/lib/portage/const.py
+++ b/lib/portage/const.py
@@ -1,5 +1,5 @@
# portage: Constants
-# Copyright 1998-2018 Gentoo Foundation
+# Copyright 1998-2018 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
from __future__ import unicode_literals
@@ -123,6 +123,7 @@ EBUILD_PHASES = (
SUPPORTED_FEATURES = frozenset([
"assume-digests",
"binpkg-docompress",
+ "binpkg-dostrip",
"binpkg-logs",
"binpkg-multi-instance",
"buildpkg",
diff --git a/man/make.conf.5 b/man/make.conf.5
index ec03c93ca..f69afd015 100644
--- a/man/make.conf.5
+++ b/man/make.conf.5
@@ -1,4 +1,4 @@
-.TH "MAKE.CONF" "5" "Feb 2016" "Portage VERSION" "Portage"
+.TH "MAKE.CONF" "5" "Nov 2018" "Portage VERSION" "Portage"
.SH "NAME"
make.conf \- custom settings for Portage
.SH "SYNOPSIS"
@@ -281,6 +281,14 @@ package. When this option is enabled (the default), documentation files are
already compressed inside binary packages. When it is disabled, binary packages
contain uncompressed documentation and Portage compresses it before installing.
.TP
+.B binpkg\-dostrip
+Perform file stripping before creating binary package. When this option is
+enabled (the default), executables are already stripped inside binary packages.
+When it is disabled, binary packages contain unstripped executables and Portage
+strips (or splits) them before installing.
+
+\fBbinpkg\-dostrip\fR must be enabled for \fBinstallsources\fR to work.
+.TP
.B binpkg\-logs
Keep logs from successful binary package merges. This is relevant only when
\fBPORT_LOGDIR\fR is set.
@@ -445,8 +453,9 @@ Enable portage support for the icecream package.
.TP
.B installsources
Install source code into /usr/src/debug/${CATEGORY}/${PF} (also see
-\fBsplitdebug\fR). This feature works only if debugedit is installed and CFLAGS
-is set to include debug information (such as with the \-ggdb flag).
+\fBsplitdebug\fR). This feature works only if debugedit is installed, CFLAGS
+is set to include debug information (such as with the \-ggdb flag)
+and \fBbinpkg-dostrip\fR is enabled.
.TP
.B ipc\-sandbox
Isolate the ebuild phase functions from host IPC namespace. Supported