From 2f9ee1635ca33f347e6eaa523e965c7172cd481e Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Mon, 21 Jan 2013 13:30:13 -0800 Subject: Fix default use match for implicit IUSE. This will fix bug #453400, which was triggered by inconsistency between the enabled USE and the effective missing_disabled set used in matching logic, due to implicit IUSE. --- pym/portage/dbapi/__init__.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'pym/portage/dbapi/__init__.py') diff --git a/pym/portage/dbapi/__init__.py b/pym/portage/dbapi/__init__.py index 5828bcacd..3540c6dc6 100644 --- a/pym/portage/dbapi/__init__.py +++ b/pym/portage/dbapi/__init__.py @@ -220,8 +220,12 @@ class dbapi(object): # data corruption). use = frozenset(x for x in metadata["USE"].split() if x in iuse or iuse_implicit_match(x)) - missing_enabled = atom.use.missing_enabled.difference(iuse) - missing_disabled = atom.use.missing_disabled.difference(iuse) + missing_enabled = frozenset(x for x in + atom.use.missing_enabled if not + (x in iuse or iuse_implicit_match(x))) + missing_disabled = frozenset(x for x in + atom.use.missing_disabled if not + (x in iuse or iuse_implicit_match(x))) if atom.use.enabled: if any(x in atom.use.enabled for x in missing_disabled): @@ -258,11 +262,15 @@ class dbapi(object): # Check unsatisfied use-default deps if atom.use.enabled: - missing_disabled = atom.use.missing_disabled.difference(iuse) + missing_disabled = frozenset(x for x in + atom.use.missing_disabled if not + (x in iuse or iuse_implicit_match(x))) if any(x in atom.use.enabled for x in missing_disabled): return False if atom.use.disabled: - missing_enabled = atom.use.missing_enabled.difference(iuse) + missing_enabled = frozenset(x for x in + atom.use.missing_enabled if not + (x in iuse or iuse_implicit_match(x))) if any(x in atom.use.disabled for x in missing_enabled): return False -- cgit v1.2.3-1-g7c22