Account for repoman modifications of the portdbapi self.settings reference, and treat all flags as valid for the empty profile because it does not have any implicit IUSE settings.
Bug: https://bugs.gentoo.org/660982 --- pym/_emerge/Package.py | 5 ++++- pym/portage/dbapi/__init__.py | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/pym/_emerge/Package.py b/pym/_emerge/Package.py index a7ce00bc9..5f34f3d27 100644 --- a/pym/_emerge/Package.py +++ b/pym/_emerge/Package.py @@ -93,7 +93,10 @@ class Package(Task): # sync metadata with validated repo (may be UNKNOWN_REPO) self._metadata['repository'] = self.cpv.repo - implicit_match = db._iuse_implicit_cnstr(self.cpv, self._metadata) + if self.root_config.settings.local_config: + implicit_match = db._iuse_implicit_cnstr(self.cpv, self._metadata) + else: + implicit_match = db._repoman_iuse_implicit_cnstr(self.cpv, self._metadata) usealiases = self.root_config.settings._use_manager.getUseAliases(self) self.iuse = self._iuse(self, self._metadata["IUSE"].split(), implicit_match, usealiases, self.eapi) diff --git a/pym/portage/dbapi/__init__.py b/pym/portage/dbapi/__init__.py index d320cc75f..61d301839 100644 --- a/pym/portage/dbapi/__init__.py +++ b/pym/portage/dbapi/__init__.py @@ -216,6 +216,22 @@ class dbapi(object): yield cpv + def _repoman_iuse_implicit_cnstr(self, pkg, metadata): + """ + In repoman's version of _iuse_implicit_cnstr, account for modifications + of the self.settings reference between calls, and treat all flags as + valid for the empty profile because it does not have any implicit IUSE + settings. See bug 660982. + """ + eapi_attrs = _get_eapi_attrs(metadata["EAPI"]) + if eapi_attrs.iuse_effective: + iuse_implicit_match = lambda flag: (True if not self.settings.profile_path + else self.settings._iuse_effective_match(flag)) + else: + iuse_implicit_match = lambda flag: (True if not self.settings.profile_path + else self.settings._iuse_implicit_match(flag)) + return iuse_implicit_match + def _iuse_implicit_cnstr(self, pkg, metadata): """ Construct a callable that checks if a given USE flag should -- 2.13.6