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'), -- 2.13.6