On 07/12/2018 06:36 AM, Brian Dolbec wrote: > On Thu, 12 Jul 2018 02:59:03 -0700 > Zac Medico <zmed...@gentoo.org> wrote: > >> 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 > > looks good thanks.
Thanks, merged: https://gitweb.gentoo.org/proj/portage.git/commit/?id=e691f07bf0572fad7686a54d628c1a29aec4ebe4 > Please add the test case ebuild that was supplied to the repoman > gen-b0rk repo "not-broken" category. > > https://gitweb.gentoo.org/repo/proj/gen-b0rk.git/ Well, these ebuilds are broken in the sense that they normally produce these results: RepoMan scours the neighborhood... KEYWORDS.missing 1 net-im/a/a-0.ebuild KEYWORDS.unsorted 1 net-im/b/b-0.ebuild contains unsorted keywords metadata.missing [fatal] 2 net-im/a/metadata.xml net-im/b/metadata.xml -- Thanks, Zac
signature.asc
Description: OpenPGP digital signature