summaryrefslogtreecommitdiffstats
path: root/pym/portage/dbapi/__init__.py
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2013-01-21 13:30:13 -0800
committerZac Medico <zmedico@gentoo.org>2013-01-21 13:30:13 -0800
commit2f9ee1635ca33f347e6eaa523e965c7172cd481e (patch)
treee19242a6763b358ea70156c911886e34c250c592 /pym/portage/dbapi/__init__.py
parent24e65d4490c9650bc446cf342a2fc04326d17fb8 (diff)
downloadportage-2f9ee1635ca33f347e6eaa523e965c7172cd481e.tar.gz
portage-2f9ee1635ca33f347e6eaa523e965c7172cd481e.tar.bz2
portage-2f9ee1635ca33f347e6eaa523e965c7172cd481e.zip
Fix default use match for implicit IUSE.v2.2.0_alpha159
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.
Diffstat (limited to 'pym/portage/dbapi/__init__.py')
-rw-r--r--pym/portage/dbapi/__init__.py16
1 files changed, 12 insertions, 4 deletions
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