Gentoo Archives: gentoo-commits

From: Matt Turner <mattst88@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/portage:master commit in: lib/portage/tests/resolver/, lib/_emerge/, lib/portage/package/ebuild/_config/, ...
Date: Mon, 04 Apr 2022 18:29:29
Message-Id: 1648926844.dd81609ed029884a17171d42948313d42b3fd5e8.mattst88@gentoo
1 commit: dd81609ed029884a17171d42948313d42b3fd5e8
2 Author: Matt Turner <mattst88 <AT> gentoo <DOT> org>
3 AuthorDate: Sat Apr 2 18:47:14 2022 +0000
4 Commit: Matt Turner <mattst88 <AT> gentoo <DOT> org>
5 CommitDate: Sat Apr 2 19:14:04 2022 +0000
6 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=dd81609e
7
8 Eliminate USE aliases
9
10 These were part of the 4-python and 5-progress EAPIs and were a branch
11 of the code deep enough to warrant its removal in its own patch.
12
13 Signed-off-by: Matt Turner <mattst88 <AT> gentoo.org>
14
15 lib/_emerge/Package.py | 39 ++---
16 lib/_emerge/depgraph.py | 16 +--
17 lib/_emerge/resolver/slot_collision.py | 8 +-
18 lib/portage/dbapi/__init__.py | 28 ++--
19 lib/portage/package/ebuild/_config/UseManager.py | 175 -----------------------
20 lib/portage/tests/resolver/ResolverPlayground.py | 2 -
21 6 files changed, 30 insertions(+), 238 deletions(-)
22
23 diff --git a/lib/_emerge/Package.py b/lib/_emerge/Package.py
24 index 7c4997aab..db42d836e 100644
25 --- a/lib/_emerge/Package.py
26 +++ b/lib/_emerge/Package.py
27 @@ -140,9 +140,8 @@ class Package(Task):
28 implicit_match = db._iuse_implicit_cnstr(self.cpv, self._metadata)
29 else:
30 implicit_match = db._repoman_iuse_implicit_cnstr(self.cpv, self._metadata)
31 - usealiases = self.root_config.settings._use_manager.getUseAliases(self)
32 self.iuse = self._iuse(
33 - self, self._metadata["IUSE"].split(), implicit_match, usealiases, self.eapi
34 + self, self._metadata["IUSE"].split(), implicit_match, self.eapi
35 )
36
37 if (self.iuse.enabled or self.iuse.disabled) and not eapi_attrs.iuse_defaults:
38 @@ -735,25 +734,19 @@ class Package(Task):
39 "__weakref__",
40 "_iuse_implicit_match",
41 "_pkg",
42 - "alias_mapping",
43 "all",
44 - "all_aliases",
45 "enabled",
46 "disabled",
47 "tokens",
48 )
49
50 - def __init__(self, pkg, tokens, iuse_implicit_match, aliases, eapi):
51 + def __init__(self, pkg, tokens, iuse_implicit_match, eapi):
52 self._pkg = pkg
53 self.tokens = tuple(tokens)
54 self._iuse_implicit_match = iuse_implicit_match
55 enabled = []
56 disabled = []
57 other = []
58 - enabled_aliases = []
59 - disabled_aliases = []
60 - other_aliases = []
61 - self.alias_mapping = {}
62 for x in tokens:
63 prefix = x[:1]
64 if prefix == "+":
65 @@ -762,12 +755,9 @@ class Package(Task):
66 disabled.append(x[1:])
67 else:
68 other.append(x)
69 - self.enabled = frozenset(chain(enabled, enabled_aliases))
70 - self.disabled = frozenset(chain(disabled, disabled_aliases))
71 + self.enabled = frozenset(enabled)
72 + self.disabled = frozenset(disabled)
73 self.all = frozenset(chain(enabled, disabled, other))
74 - self.all_aliases = frozenset(
75 - chain(enabled_aliases, disabled_aliases, other_aliases)
76 - )
77
78 def is_valid_flag(self, flags):
79 """
80 @@ -778,11 +768,7 @@ class Package(Task):
81 flags = [flags]
82
83 for flag in flags:
84 - if (
85 - not flag in self.all
86 - and not flag in self.all_aliases
87 - and not self._iuse_implicit_match(flag)
88 - ):
89 + if self.get_flag(flag) is None:
90 return False
91 return True
92
93 @@ -794,27 +780,18 @@ class Package(Task):
94 flags = [flags]
95 missing_iuse = []
96 for flag in flags:
97 - if (
98 - not flag in self.all
99 - and not flag in self.all_aliases
100 - and not self._iuse_implicit_match(flag)
101 - ):
102 + if self.get_flag(flag) is None:
103 missing_iuse.append(flag)
104 return missing_iuse
105
106 - def get_real_flag(self, flag):
107 + def get_flag(self, flag):
108 """
109 Returns the flag's name within the scope of this package
110 - (accounting for aliases), or None if the flag is unknown.
111 + or None if the flag is unknown.
112 """
113 if flag in self.all:
114 return flag
115
116 - if flag in self.all_aliases:
117 - for k, v in self.alias_mapping.items():
118 - if flag in v:
119 - return k
120 -
121 if self._iuse_implicit_match(flag):
122 return flag
123
124
125 diff --git a/lib/_emerge/depgraph.py b/lib/_emerge/depgraph.py
126 index 14a71a610..c3f872c43 100644
127 --- a/lib/_emerge/depgraph.py
128 +++ b/lib/_emerge/depgraph.py
129 @@ -7182,21 +7182,21 @@ class depgraph:
130 new_changes = {}
131
132 for flag, state in target_use.items():
133 - real_flag = pkg.iuse.get_real_flag(flag)
134 - if real_flag is None:
135 + flag = pkg.iuse.get_flag(flag)
136 + if flag is None:
137 # Triggered by use-dep defaults.
138 continue
139 if state:
140 - if real_flag not in old_use:
141 - if new_changes.get(real_flag) == False:
142 + if flag not in old_use:
143 + if new_changes.get(flag) == False:
144 return old_use
145 - new_changes[real_flag] = True
146 + new_changes[flag] = True
147 new_use.add(flag)
148 else:
149 - if real_flag in old_use:
150 - if new_changes.get(real_flag) == True:
151 + if flag in old_use:
152 + if new_changes.get(flag) == True:
153 return old_use
154 - new_changes[real_flag] = False
155 + new_changes[flag] = False
156 new_use |= old_use.difference(target_use)
157
158 def want_restart_for_use_change(pkg, new_use):
159
160 diff --git a/lib/_emerge/resolver/slot_collision.py b/lib/_emerge/resolver/slot_collision.py
161 index 4f30cb675..17d6fa395 100644
162 --- a/lib/_emerge/resolver/slot_collision.py
163 +++ b/lib/_emerge/resolver/slot_collision.py
164 @@ -228,14 +228,14 @@ class slot_conflict_handler:
165 new_change = {}
166 for pkg in solution:
167 for flag, state in solution[pkg].items():
168 - real_flag = pkg.iuse.get_real_flag(flag)
169 - if real_flag is None:
170 + flag = pkg.iuse.get_flag(flag)
171 + if flag is None:
172 # Triggered by use-dep defaults.
173 continue
174 if state == "enabled" and flag not in _pkg_use_enabled(pkg):
175 - new_change.setdefault(pkg, {})[real_flag] = True
176 + new_change.setdefault(pkg, {})[flag] = True
177 elif state == "disabled" and flag in _pkg_use_enabled(pkg):
178 - new_change.setdefault(pkg, {})[real_flag] = False
179 + new_change.setdefault(pkg, {})[flag] = False
180 return new_change
181
182 def _prepare_conflict_msg_and_check_for_specificity(self):
183
184 diff --git a/lib/portage/dbapi/__init__.py b/lib/portage/dbapi/__init__.py
185 index 717ab95d5..43c3283e8 100644
186 --- a/lib/portage/dbapi/__init__.py
187 +++ b/lib/portage/dbapi/__init__.py
188 @@ -273,17 +273,15 @@ class dbapi:
189
190 def _match_use(self, atom, pkg, metadata, ignore_profile=False):
191 iuse_implicit_match = self._iuse_implicit_cnstr(pkg, metadata)
192 - usealiases = self.settings._use_manager.getUseAliases(pkg)
193 iuse = Package._iuse(
194 None,
195 metadata["IUSE"].split(),
196 iuse_implicit_match,
197 - usealiases,
198 metadata["EAPI"],
199 )
200
201 for x in atom.unevaluated_atom.use.required:
202 - if iuse.get_real_flag(x) is None:
203 + if iuse.get_flag(x) is None:
204 return False
205
206 if atom.use is None:
207 @@ -297,18 +295,16 @@ class dbapi:
208 # with implicit IUSE, in order to avoid potential
209 # inconsistencies in USE dep matching (see bug #453400).
210 use = frozenset(
211 - x for x in metadata["USE"].split() if iuse.get_real_flag(x) is not None
212 + x for x in metadata["USE"].split() if iuse.get_flag(x) is not None
213 )
214 missing_enabled = frozenset(
215 - x for x in atom.use.missing_enabled if iuse.get_real_flag(x) is None
216 + x for x in atom.use.missing_enabled if iuse.get_flag(x) is None
217 )
218 missing_disabled = frozenset(
219 - x for x in atom.use.missing_disabled if iuse.get_real_flag(x) is None
220 - )
221 - enabled = frozenset((iuse.get_real_flag(x) or x) for x in atom.use.enabled)
222 - disabled = frozenset(
223 - (iuse.get_real_flag(x) or x) for x in atom.use.disabled
224 + x for x in atom.use.missing_disabled if iuse.get_flag(x) is None
225 )
226 + enabled = frozenset((iuse.get_flag(x) or x) for x in atom.use.enabled)
227 + disabled = frozenset((iuse.get_flag(x) or x) for x in atom.use.disabled)
228
229 if enabled:
230 if any(x in enabled for x in missing_disabled):
231 @@ -333,7 +329,7 @@ class dbapi:
232 pkg, stable=self.settings._parent_stable
233 )
234 if any(
235 - x in usemask and iuse.get_real_flag(x) is not None
236 + x in usemask and iuse.get_flag(x) is not None
237 for x in atom.use.enabled
238 ):
239 return False
240 @@ -342,9 +338,7 @@ class dbapi:
241 pkg, stable=self.settings._parent_stable
242 )
243 if any(
244 - x in useforce
245 - and x not in usemask
246 - and iuse.get_real_flag(x) is not None
247 + x in useforce and x not in usemask and iuse.get_flag(x) is not None
248 for x in atom.use.disabled
249 ):
250 return False
251 @@ -352,15 +346,13 @@ class dbapi:
252 # Check unsatisfied use-default deps
253 if atom.use.enabled:
254 missing_disabled = frozenset(
255 - x
256 - for x in atom.use.missing_disabled
257 - if iuse.get_real_flag(x) is None
258 + x for x in atom.use.missing_disabled if iuse.get_flag(x) is None
259 )
260 if any(x in atom.use.enabled for x in missing_disabled):
261 return False
262 if atom.use.disabled:
263 missing_enabled = frozenset(
264 - x for x in atom.use.missing_enabled if iuse.get_real_flag(x) is None
265 + x for x in atom.use.missing_enabled if iuse.get_flag(x) is None
266 )
267 if any(x in atom.use.disabled for x in missing_enabled):
268 return False
269
270 diff --git a/lib/portage/package/ebuild/_config/UseManager.py b/lib/portage/package/ebuild/_config/UseManager.py
271 index ea5ba1b42..3827ba27a 100644
272 --- a/lib/portage/package/ebuild/_config/UseManager.py
273 +++ b/lib/portage/package/ebuild/_config/UseManager.py
274 @@ -6,23 +6,19 @@ __all__ = ("UseManager",)
275 from _emerge.Package import Package
276 from portage import os
277 from portage.dep import (
278 - Atom,
279 dep_getrepo,
280 dep_getslot,
281 ExtendedAtomDict,
282 remove_slot,
283 _get_useflag_re,
284 - _repo_separator,
285 )
286 from portage.eapi import (
287 eapi_supports_stable_use_forcing_and_masking,
288 )
289 -from portage.exception import InvalidAtom
290 from portage.localization import _
291 from portage.repository.config import allow_profile_repo_deps
292 from portage.util import (
293 grabfile,
294 - grabdict,
295 grabdict_package,
296 read_corresponding_eapi_file,
297 stack_lists,
298 @@ -45,12 +41,10 @@ class UseManager:
299 # use.stable.mask _repo_usestablemask_dict
300 # use.force _repo_useforce_dict
301 # use.stable.force _repo_usestableforce_dict
302 - # use.aliases _repo_usealiases_dict
303 # package.use.mask _repo_pusemask_dict
304 # package.use.stable.mask _repo_pusestablemask_dict
305 # package.use.force _repo_puseforce_dict
306 # package.use.stable.force _repo_pusestableforce_dict
307 - # package.use.aliases _repo_pusealiases_dict
308 # --------------------------------
309 # profiles
310 # --------------------------------
311 @@ -157,11 +151,6 @@ class UseManager:
312 "package.use", abs_user_config, user_config
313 )
314
315 - self._repo_usealiases_dict = self._parse_repository_usealiases(repositories)
316 - self._repo_pusealiases_dict = self._parse_repository_packageusealiases(
317 - repositories
318 - )
319 -
320 self.repositories = repositories
321
322 def _parse_file_to_tuple(
323 @@ -408,111 +397,6 @@ class UseManager:
324 for profile in locations
325 )
326
327 - def _parse_repository_usealiases(self, repositories):
328 - ret = {}
329 - for repo in repositories.repos_with_profiles():
330 - file_name = os.path.join(repo.location, "profiles", "use.aliases")
331 - eapi = read_corresponding_eapi_file(file_name, default=repo.eapi)
332 - useflag_re = _get_useflag_re(eapi)
333 - raw_file_dict = grabdict(file_name, recursive=True)
334 - file_dict = {}
335 - for real_flag, aliases in raw_file_dict.items():
336 - if useflag_re.match(real_flag) is None:
337 - writemsg(
338 - _("--- Invalid real USE flag in '%s': '%s'\n")
339 - % (file_name, real_flag),
340 - noiselevel=-1,
341 - )
342 - else:
343 - for alias in aliases:
344 - if useflag_re.match(alias) is None:
345 - writemsg(
346 - _(
347 - "--- Invalid USE flag alias for '%s' real USE flag in '%s': '%s'\n"
348 - )
349 - % (real_flag, file_name, alias),
350 - noiselevel=-1,
351 - )
352 - else:
353 - if any(
354 - alias in v
355 - for k, v in file_dict.items()
356 - if k != real_flag
357 - ):
358 - writemsg(
359 - _("--- Duplicated USE flag alias in '%s': '%s'\n")
360 - % (file_name, alias),
361 - noiselevel=-1,
362 - )
363 - else:
364 - file_dict.setdefault(real_flag, []).append(alias)
365 - ret[repo.name] = file_dict
366 - return ret
367 -
368 - def _parse_repository_packageusealiases(self, repositories):
369 - ret = {}
370 - for repo in repositories.repos_with_profiles():
371 - file_name = os.path.join(repo.location, "profiles", "package.use.aliases")
372 - eapi = read_corresponding_eapi_file(file_name, default=repo.eapi)
373 - useflag_re = _get_useflag_re(eapi)
374 - lines = grabfile(file_name, recursive=True)
375 - file_dict = {}
376 - for line in lines:
377 - elements = line.split()
378 - atom = elements[0]
379 - try:
380 - atom = Atom(atom, eapi=eapi)
381 - except InvalidAtom:
382 - writemsg(_("--- Invalid atom in '%s': '%s'\n") % (file_name, atom))
383 - continue
384 - if len(elements) == 1:
385 - writemsg(
386 - _("--- Missing real USE flag for '%s' in '%s'\n")
387 - % (atom, file_name),
388 - noiselevel=-1,
389 - )
390 - continue
391 - real_flag = elements[1]
392 - if useflag_re.match(real_flag) is None:
393 - writemsg(
394 - _("--- Invalid real USE flag for '%s' in '%s': '%s'\n")
395 - % (atom, file_name, real_flag),
396 - noiselevel=-1,
397 - )
398 - else:
399 - for alias in elements[2:]:
400 - if useflag_re.match(alias) is None:
401 - writemsg(
402 - _(
403 - "--- Invalid USE flag alias for '%s' real USE flag for '%s' in '%s': '%s'\n"
404 - )
405 - % (real_flag, atom, file_name, alias),
406 - noiselevel=-1,
407 - )
408 - else:
409 - # Duplicated USE flag aliases in entries for different atoms
410 - # matching the same package version are detected in getUseAliases().
411 - if any(
412 - alias in v
413 - for k, v in file_dict.get(atom.cp, {})
414 - .get(atom, {})
415 - .items()
416 - if k != real_flag
417 - ):
418 - writemsg(
419 - _(
420 - "--- Duplicated USE flag alias for '%s' in '%s': '%s'\n"
421 - )
422 - % (atom, file_name, alias),
423 - noiselevel=-1,
424 - )
425 - else:
426 - file_dict.setdefault(atom.cp, {}).setdefault(
427 - atom, {}
428 - ).setdefault(real_flag, []).append(alias)
429 - ret[repo.name] = file_dict
430 - return ret
431 -
432 def _isStable(self, pkg):
433 if self._user_config:
434 try:
435 @@ -649,65 +533,6 @@ class UseManager:
436
437 return frozenset(stack_lists(useforce, incremental=True))
438
439 - def getUseAliases(self, pkg):
440 - if hasattr(pkg, "eapi"):
441 - return {}
442 -
443 - cp = getattr(pkg, "cp", None)
444 - if cp is None:
445 - slot = dep_getslot(pkg)
446 - repo = dep_getrepo(pkg)
447 - pkg = _pkg_str(remove_slot(pkg), slot=slot, repo=repo)
448 - cp = pkg.cp
449 -
450 - usealiases = {}
451 -
452 - if hasattr(pkg, "repo") and pkg.repo != Package.UNKNOWN_REPO:
453 - repos = []
454 - try:
455 - repos.extend(repo.name for repo in self.repositories[pkg.repo].masters)
456 - except KeyError:
457 - pass
458 - repos.append(pkg.repo)
459 - for repo in repos:
460 - usealiases_dict = self._repo_usealiases_dict.get(repo, {})
461 - for real_flag, aliases in usealiases_dict.items():
462 - for alias in aliases:
463 - if any(
464 - alias in v for k, v in usealiases.items() if k != real_flag
465 - ):
466 - writemsg(
467 - _("--- Duplicated USE flag alias for '%s%s%s': '%s'\n")
468 - % (pkg.cpv, _repo_separator, pkg.repo, alias),
469 - noiselevel=-1,
470 - )
471 - else:
472 - usealiases.setdefault(real_flag, []).append(alias)
473 - cp_usealiases_dict = self._repo_pusealiases_dict.get(repo, {}).get(cp)
474 - if cp_usealiases_dict:
475 - usealiases_dict_list = ordered_by_atom_specificity(
476 - cp_usealiases_dict, pkg
477 - )
478 - for usealiases_dict in usealiases_dict_list:
479 - for real_flag, aliases in usealiases_dict.items():
480 - for alias in aliases:
481 - if any(
482 - alias in v
483 - for k, v in usealiases.items()
484 - if k != real_flag
485 - ):
486 - writemsg(
487 - _(
488 - "--- Duplicated USE flag alias for '%s%s%s': '%s'\n"
489 - )
490 - % (pkg.cpv, _repo_separator, pkg.repo, alias),
491 - noiselevel=-1,
492 - )
493 - else:
494 - usealiases.setdefault(real_flag, []).append(alias)
495 -
496 - return usealiases
497 -
498 def getPUSE(self, pkg):
499 cp = getattr(pkg, "cp", None)
500 if cp is None:
501
502 diff --git a/lib/portage/tests/resolver/ResolverPlayground.py b/lib/portage/tests/resolver/ResolverPlayground.py
503 index 7852d0aaf..8811354b5 100644
504 --- a/lib/portage/tests/resolver/ResolverPlayground.py
505 +++ b/lib/portage/tests/resolver/ResolverPlayground.py
506 @@ -63,13 +63,11 @@ class ResolverPlayground:
507 "packages",
508 "package.unmask",
509 "package.use",
510 - "package.use.aliases",
511 "package.use.force",
512 "package.use.mask",
513 "package.use.stable.force",
514 "package.use.stable.mask",
515 "soname.provided",
516 - "use.aliases",
517 "use.force",
518 "use.mask",
519 "layout.conf",