On 04/01/2018 06:54 AM, Michał Górny wrote:
> W dniu czw, 29.03.2018 o godzinie 15∶34 -0700, użytkownik Zac Medico
> napisał:
>> 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
>
> This loop along with the whole indirection is entirely pointless, given
> that you're processing exactly one variable.
I did this for consistency with the related loop in dyn_install, since
we might save values of other variables from the binary package
environment. In fact, I think we should record DOC_SYMLINKS_DIR here,
since it affects CONTENTS, much like INSTALL_MASK.
>> + x=$(echo -n ${!f})
>> + [[ -n ${x} ]] && echo "${x}" > "${f}"
>
> There's probably no point in this [[ -n ... ]], as that:
>
> a. requires you to special-handle missing INSTALL_MASK file, while it's
> easier to just ensure that it's there (and I think you requested
> the same thing from me before you rewritten my commit into breakage),
>
> b. makes it impossible to distinguish packages from before INSTALL_MASK
> storing was added from those where it is empty.
Maybe this only matters within the context of bug 364633 [1], and for
that I think we need to introduce a separate CONTENTS.INSTALL_MASK file
so that we can easily toggle collision-protect behavior to use
CONTENTS.INSTALL_MASK when desired.
[1] https://bugs.gentoo.org/364633
--
Thanks,
Zac
signature.asc
Description: OpenPGP digital signature
