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

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to