Dnia 12 czerwca 2016 09:28:14 CEST, Zac Medico <zmed...@gentoo.org> napisał(a): >On 06/12/2016 12:19 AM, Zac Medico wrote: >> On 05/21/2016 11:56 PM, Michał Górny wrote: >>> diff --git a/pym/portage/package/ebuild/config.py >b/pym/portage/package/ebuild/config.py >>> index 45b7d08..fcc7ce5 100644 >>> --- a/pym/portage/package/ebuild/config.py >>> +++ b/pym/portage/package/ebuild/config.py >>> @@ -1773,6 +1773,16 @@ class config(object): >>> # setcpv triggers lazy instantiation of things like >>> _use_manager. >>> _eapi_cache.clear() >>> >>> + # Prepare the final value of INSTALL_MASK >>> + install_mask = self["INSTALL_MASK"].split() >>> + if 'nodoc' in self.features: >>> + install_mask.append("/usr/share/doc") >>> + if 'noinfo' in self.features: >>> + install_mask.append("/usr/share/info") >>> + if 'noman' in self.features: >>> + install_mask.append("/usr/share/man") >>> + self["INSTALL_MASK"] = ' '.join(install_mask) >>> + >>> def _grab_pkg_env(self, penv, container, protected_keys=None): >>> if protected_keys is None: >>> protected_keys = () >>> >> >> I'm concerned that these values can be appended more than once, >causing >> the variable to contain duplicate values, because setcpv only calls >> reset when the has_changed variable is True. So, we only want to call >> this code when has_changed is True. In fact, this code can go >> immediately after the reset call here: >> >> if has_changed: >> self.reset(keeping_pkg=1) >> > >Actually, it's more tricky than that, because we need to account for >both global FEATURES settings and package.env FEATURES settings, and my >above statements do not account for the global settings. > >Also need to consider the case where these features are enabled >globally, and then *disabled* via package.env!
Then maybe we should just ban them and tell people to use INSTALL_MASK directly instead. Their behavior is quite unclear anyway, considering later possible exclusions. -- Best regards, Michał Górny (by phone)