Gentoo Archives: gentoo-commits

From: Arfrever Frehtes Taifersar Arahesis <arfrever.fta@×××××.com>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/portage:master commit in: pym/portage/dbapi/
Date: Fri, 07 Jun 2013 20:52:47
Message-Id: 1370637688.c8530deda6b85dad1f7557d490f8a200e8bfa54e.arfrever@gentoo
1 commit: c8530deda6b85dad1f7557d490f8a200e8bfa54e
2 Author: Arfrever Frehtes Taifersar Arahesis <Arfrever <AT> Apache <DOT> Org>
3 AuthorDate: Fri Jun 7 20:41:28 2013 +0000
4 Commit: Arfrever Frehtes Taifersar Arahesis <arfrever.fta <AT> gmail <DOT> com>
5 CommitDate: Fri Jun 7 20:41:28 2013 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=c8530ded
7
8 portage.dbapi.dbapi._match_use(): Use _emerge.Package.Package._iuse.get_real_flag().
9
10 It fixes support for USE aliases in:
11 best_version
12 has_version
13 emerge --keep-going
14 emerge --resume
15
16 ---
17 pym/portage/dbapi/__init__.py | 40 +++++++++++++++++-----------------------
18 1 file changed, 17 insertions(+), 23 deletions(-)
19
20 diff --git a/pym/portage/dbapi/__init__.py b/pym/portage/dbapi/__init__.py
21 index ab4306d..f954bad 100644
22 --- a/pym/portage/dbapi/__init__.py
23 +++ b/pym/portage/dbapi/__init__.py
24 @@ -204,10 +204,11 @@ class dbapi(object):
25 iuse_implicit_match = self.settings._iuse_effective_match
26 else:
27 iuse_implicit_match = self.settings._iuse_implicit_match
28 - iuse = frozenset(x.lstrip('+-') for x in metadata["IUSE"].split())
29 + usealiases = self.settings._use_manager.getUseAliases(self._pkg_str(cpv, metadata["repository"]))
30 + iuse = Package._iuse(None, metadata["IUSE"].split(), iuse_implicit_match, usealiases, metadata["EAPI"])
31
32 for x in atom.unevaluated_atom.use.required:
33 - if x not in iuse and not iuse_implicit_match(x):
34 + if iuse.get_real_flag(x) is None:
35 return False
36
37 if atom.use is None:
38 @@ -220,27 +221,24 @@ class dbapi(object):
39 # data corruption). The enabled flags must be consistent
40 # with implicit IUSE, in order to avoid potential
41 # inconsistencies in USE dep matching (see bug #453400).
42 - use = frozenset(x for x in metadata["USE"].split()
43 - if x in iuse or iuse_implicit_match(x))
44 - missing_enabled = frozenset(x for x in
45 - atom.use.missing_enabled if not
46 - (x in iuse or iuse_implicit_match(x)))
47 - missing_disabled = frozenset(x for x in
48 - atom.use.missing_disabled if not
49 - (x in iuse or iuse_implicit_match(x)))
50 -
51 - if atom.use.enabled:
52 - if any(x in atom.use.enabled for x in missing_disabled):
53 + use = frozenset(x for x in metadata["USE"].split() if iuse.get_real_flag(x) is not None)
54 + missing_enabled = frozenset(x for x in atom.use.missing_enabled if iuse.get_real_flag(x) is None)
55 + missing_disabled = frozenset(x for x in atom.use.missing_disabled if iuse.get_real_flag(x) is None)
56 + enabled = frozenset((iuse.get_real_flag(x) or x) for x in atom.use.enabled)
57 + disabled = frozenset((iuse.get_real_flag(x) or x) for x in atom.use.disabled)
58 +
59 + if enabled:
60 + if any(x in enabled for x in missing_disabled):
61 return False
62 - need_enabled = atom.use.enabled.difference(use)
63 + need_enabled = enabled.difference(use)
64 if need_enabled:
65 if any(x not in missing_enabled for x in need_enabled):
66 return False
67
68 - if atom.use.disabled:
69 - if any(x in atom.use.disabled for x in missing_enabled):
70 + if disabled:
71 + if any(x in disabled for x in missing_enabled):
72 return False
73 - need_disabled = atom.use.disabled.intersection(use)
74 + need_disabled = disabled.intersection(use)
75 if need_disabled:
76 if any(x not in missing_disabled for x in need_disabled):
77 return False
78 @@ -266,15 +264,11 @@ class dbapi(object):
79
80 # Check unsatisfied use-default deps
81 if atom.use.enabled:
82 - missing_disabled = frozenset(x for x in
83 - atom.use.missing_disabled if not
84 - (x in iuse or iuse_implicit_match(x)))
85 + missing_disabled = frozenset(x for x in atom.use.missing_disabled if iuse.get_real_flag(x) is None)
86 if any(x in atom.use.enabled for x in missing_disabled):
87 return False
88 if atom.use.disabled:
89 - missing_enabled = frozenset(x for x in
90 - atom.use.missing_enabled if not
91 - (x in iuse or iuse_implicit_match(x)))
92 + missing_enabled = frozenset(x for x in atom.use.missing_enabled if iuse.get_real_flag(x) is None)
93 if any(x in atom.use.disabled for x in missing_enabled):
94 return False