aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2018-03-29 14:51:13 -0700
committerZac Medico <zmedico@gentoo.org>2018-03-29 15:33:42 -0700
commitcc0349c549b3024615fb8fb5c72c78b9509ee5bb (patch)
tree065157712253af8e5670b40b5de706badf7135bf
parentUpdates for portage-2.3.26 release (diff)
downloadportage-cc0349c549b3024615fb8fb5c72c78b9509ee5bb.tar.gz
portage-cc0349c549b3024615fb8fb5c72c78b9509ee5bb.tar.bz2
portage-cc0349c549b3024615fb8fb5c72c78b9509ee5bb.zip
INSTALL_MASK: honor install time config for binary packages (bug 651952)
For binary packages, honor the INSTALL_MASK configuration that exists at install time, since it might differ from the build time setting. Fixes: 3416876c0ee7 ("{,PKG_}INSTALL_MASK: python implementation") Bug: https://bugs.gentoo.org/651952
-rwxr-xr-xbin/misc-functions.sh23
-rw-r--r--bin/phase-functions.sh10
-rw-r--r--pym/portage/dbapi/vartree.py5
3 files changed, 29 insertions, 9 deletions
diff --git a/bin/misc-functions.sh b/bin/misc-functions.sh
index 26f589915..a6330ee93 100755
--- a/bin/misc-functions.sh
+++ b/bin/misc-functions.sh
@@ -323,6 +323,29 @@ postinst_qa_check() {
done < <(printf "%s\0" "${qa_checks[@]}" | LC_ALL=C sort -u -z)
}
+preinst_mask() {
+ # Remove man pages, info pages, docs if requested. This is
+ # implemented in bash in order to respect INSTALL_MASK settings
+ # from bashrc.
+ local f x
+ for f in man info doc; do
+ if has no${f} ${FEATURES}; then
+ INSTALL_MASK+=" /usr/share/${f}"
+ fi
+ done
+
+ # Store modified variables in build-info.
+ cd "${PORTAGE_BUILDDIR}"/build-info || die
+ set -f
+
+ IFS=$' \t\n\r'
+ for f in INSTALL_MASK; do
+ x=$(echo -n ${!f})
+ [[ -n ${x} ]] && echo "${x}" > "${f}"
+ done
+ set +f
+}
+
preinst_sfperms() {
if [ -z "${D}" ]; then
eerror "${FUNCNAME}: D is unset"
diff --git a/bin/phase-functions.sh b/bin/phase-functions.sh
index bdae68f79..3de8d01b5 100644
--- a/bin/phase-functions.sh
+++ b/bin/phase-functions.sh
@@ -661,14 +661,6 @@ __dyn_install() {
set -f
local f x
- # remove man pages, info pages, docs if requested
- for f in man info doc; do
- if has no${f} ${FEATURES} && \
- ! has "/usr/share/${f}" ${INSTALL_MASK}; then
- INSTALL_MASK+=" /usr/share/${f}"
- fi
- done
-
IFS=$' \t\n\r'
for f in CATEGORY DEFINED_PHASES FEATURES INHERITED IUSE \
PF PKGUSE SLOT KEYWORDS HOMEPAGE DESCRIPTION \
@@ -676,7 +668,7 @@ __dyn_install() {
CXXFLAGS EXTRA_ECONF EXTRA_EINSTALL EXTRA_MAKE \
LDFLAGS LIBCFLAGS LIBCXXFLAGS QA_CONFIGURE_OPTIONS \
QA_DESKTOP_FILE QA_PREBUILT PROVIDES_EXCLUDE REQUIRES_EXCLUDE \
- INSTALL_MASK PKG_INSTALL_MASK; do
+ PKG_INSTALL_MASK; do
x=$(echo -n ${!f})
[[ -n $x ]] && echo "$x" > $f
diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py
index 378d42dc0..a136c38f1 100644
--- a/pym/portage/dbapi/vartree.py
+++ b/pym/portage/dbapi/vartree.py
@@ -3846,6 +3846,11 @@ class dblink(object):
# be useful to avoid collisions in some scenarios.
# We cannot detect if this is needed or not here as INSTALL_MASK can be
# modified by bashrc files.
+ phase = MiscFunctionsProcess(background=False,
+ commands=["preinst_mask"], phase="preinst",
+ scheduler=self._scheduler, settings=self.settings)
+ phase.start()
+ phase.wait()
try:
with io.open(_unicode_encode(os.path.join(inforoot, "INSTALL_MASK"),
encoding=_encodings['fs'], errors='strict'),