Gentoo Archives: gentoo-commits

From: Thomas Sachau <tommy@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/portage:multilib commit in: pym/_emerge/resolver/, pym/portage/package/ebuild/, ...
Date: Sun, 06 Feb 2011 13:15:44
Message-Id: 2a2b9e6485950757c59a1d5aa026d7f875311def.tommy@gentoo
1 commit: 2a2b9e6485950757c59a1d5aa026d7f875311def
2 Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
3 AuthorDate: Mon Jan 31 10:01:48 2011 +0000
4 Commit: Thomas Sachau <tommy <AT> gentoo <DOT> org>
5 CommitDate: Mon Jan 31 10:01:48 2011 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=2a2b9e64
7
8 Display: Simplify mask code for bug #58416.
9
10 Hopefully this makes the logic more understandable, though it may
11 support fewer cases. If we want to handle more cases then hopefully
12 we can do it without making the code too complex.
13
14 ---
15 pym/_emerge/Package.py | 31 ++++++++++---------
16 pym/_emerge/resolver/output.py | 11 ++++---
17 .../package/ebuild/_config/KeywordsManager.py | 23 ++------------
18 pym/portage/package/ebuild/config.py | 10 +-----
19 4 files changed, 28 insertions(+), 47 deletions(-)
20
21 diff --git a/pym/_emerge/Package.py b/pym/_emerge/Package.py
22 index 9f21057..dcc6a0c 100644
23 --- a/pym/_emerge/Package.py
24 +++ b/pym/_emerge/Package.py
25 @@ -237,25 +237,26 @@ class Package(Task):
26
27 return True
28
29 - def accepted_keyword(self):
30 - """returns the keyword used from the ebuild's KEYWORDS string"""
31 + def get_keyword_mask(self):
32 + """returns None, 'missing', or 'unstable'."""
33
34 - missing, _keywords = \
35 - self.root_config.settings._getRawMissingKeywords(
36 - self.cpv, self.metadata)
37 - unmasks = self.root_config.settings._getPKeywords(
38 + missing = self.root_config.settings._getRawMissingKeywords(
39 self.cpv, self.metadata)
40
41 + if not missing:
42 + return None
43 +
44 if '**' in missing:
45 - return '**'
46 - if missing: # keywords to evaluate
47 - for keyword in _keywords + unmasks:
48 - if keyword == '**':
49 - return keyword
50 - used_keyword = '~' + keyword
51 - if used_keyword in missing:
52 - return used_keyword
53 - return ''
54 + return 'missing'
55 +
56 + global_accept_keywords = frozenset(
57 + self.root_config.settings.get("ACCEPT_KEYWORDS", "").split())
58 +
59 + for keyword in missing:
60 + if keyword.lstrip("~") in global_accept_keywords:
61 + return 'unstable'
62 +
63 + return 'missing'
64
65 def isHardMasked(self):
66 """returns a bool if the cpv is in the list of
67
68 diff --git a/pym/_emerge/resolver/output.py b/pym/_emerge/resolver/output.py
69 index be07656..46e2280 100644
70 --- a/pym/_emerge/resolver/output.py
71 +++ b/pym/_emerge/resolver/output.py
72 @@ -164,16 +164,17 @@ class Display(object):
73 """
74 @param pkg: _emerge.Package instance
75 """
76 - used_keyword = pkg.accepted_keyword()
77 hardmasked = pkg.isHardMasked()
78 mask_str = " "
79
80 if hardmasked:
81 mask_str = colorize("BAD", "#")
82 - elif not used_keyword:
83 - pass
84 - elif used_keyword not in self.pkgsettings['ACCEPT_KEYWORDS'].split():
85 - if used_keyword == "**":
86 + else:
87 + keyword_mask = pkg.get_keyword_mask()
88 +
89 + if keyword_mask is None:
90 + pass
91 + elif keyword_mask == "missing":
92 mask_str = colorize("BAD", "*")
93 else:
94 mask_str = colorize("WARN", "~")
95
96 diff --git a/pym/portage/package/ebuild/_config/KeywordsManager.py b/pym/portage/package/ebuild/_config/KeywordsManager.py
97 index 0b593f6..51270f2 100644
98 --- a/pym/portage/package/ebuild/_config/KeywordsManager.py
99 +++ b/pym/portage/package/ebuild/_config/KeywordsManager.py
100 @@ -142,14 +142,13 @@ class KeywordsManager(object):
101 slot,
102 keywords,
103 repo,
104 - global_accept_keywords,
105 - backuped_accept_keywords):
106 + global_accept_keywords):
107 """
108 Take a package and return a list of any KEYWORDS that the user may
109 need to accept for the given package. If the KEYWORDS are empty,
110 the returned list will contain ** alone (in order to distinguish
111 from the case of "none missing"). This DOES NOT apply any user config
112 - keywording acceptance.
113 + package.accept_keywords acceptance.
114
115 @param cpv: The package name (for package.keywords support)
116 @type cpv: String
117 @@ -159,29 +158,15 @@ class KeywordsManager(object):
118 @type keywords: String
119 @param global_accept_keywords: The current value of ACCEPT_KEYWORDS
120 @type global_accept_keywords: String
121 - @param backuped_accept_keywords: ACCEPT_KEYWORDS from the backup env
122 - @type backuped_accept_keywords: String
123 @rtype: List
124 @return: lists of KEYWORDS that have not been accepted
125 and the keywords it looked for.
126 """
127
128 mygroups = self.getKeywords(cpv, slot, keywords, repo)
129 - # Repoman may modify this attribute as necessary.
130 pgroups = global_accept_keywords.split()
131 -
132 - # Hack: Need to check the env directly here as otherwise stacking
133 - # doesn't work properly as negative values are lost in the config
134 - # object (bug #139600)
135 - if backuped_accept_keywords:
136 - pgroups = self._getEgroups(backuped_accept_keywords.split(),
137 - pgroups)
138 - else:
139 - pgroups = set(pgroups)
140 -
141 - missing = self._getMissingKeywords(cpv, pgroups, mygroups)
142 -
143 - return missing, list(pgroups)
144 + pgroups = set(pgroups)
145 + return self._getMissingKeywords(cpv, pgroups, mygroups)
146
147
148 @staticmethod
149
150 diff --git a/pym/portage/package/ebuild/config.py b/pym/portage/package/ebuild/config.py
151 index 81657aa..1f943e4 100644
152 --- a/pym/portage/package/ebuild/config.py
153 +++ b/pym/portage/package/ebuild/config.py
154 @@ -1456,7 +1456,7 @@ class config(object):
155 need to accept for the given package. If the KEYWORDS are empty,
156 the returned list will contain ** alone (in order to distinguish
157 from the case of "none missing"). This DOES NOT apply any user config
158 - keywording acceptance.
159 + package.accept_keywords acceptance.
160
161 @param cpv: The package name (for package.keywords support)
162 @type cpv: String
163 @@ -1466,15 +1466,9 @@ class config(object):
164 @return: lists of KEYWORDS that have not been accepted
165 and the keywords it looked for.
166 """
167 -
168 - # Hack: Need to check the env directly here as otherwise stacking
169 - # doesn't work properly as negative values are lost in the config
170 - # object (bug #139600)
171 - backuped_accept_keywords = self.configdict["backupenv"].get("ACCEPT_KEYWORDS", "")
172 -
173 return self._keywords_manager.getRawMissingKeywords(cpv, metadata["SLOT"], \
174 metadata.get("KEYWORDS", ""), metadata.get('repository'), \
175 - self.get("ACCEPT_KEYWORDS", ""), backuped_accept_keywords)
176 + self.get("ACCEPT_KEYWORDS", ""))
177
178 def _getPKeywords(self, cpv, metadata):
179 global_accept_keywords = self.get("ACCEPT_KEYWORDS", "")