public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/portage:master commit in: bin/, pym/portage/dbapi/
@ 2018-03-30  2:27 Zac Medico
  0 siblings, 0 replies; only message in thread
From: Zac Medico @ 2018-03-30  2:27 UTC (permalink / raw
  To: gentoo-commits

commit:     cc0349c549b3024615fb8fb5c72c78b9509ee5bb
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Thu Mar 29 21:51:13 2018 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Thu Mar 29 22:33:42 2018 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=cc0349c5

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

 bin/misc-functions.sh        | 23 +++++++++++++++++++++++
 bin/phase-functions.sh       | 10 +---------
 pym/portage/dbapi/vartree.py |  5 +++++
 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'),


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2018-03-30  2:27 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-03-30  2:27 [gentoo-commits] proj/portage:master commit in: bin/, pym/portage/dbapi/ Zac Medico

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox