commit: dd81609ed029884a17171d42948313d42b3fd5e8
Author: Matt Turner <mattst88 <AT> gentoo <DOT> org>
AuthorDate: Sat Apr 2 18:47:14 2022 +0000
Commit: Matt Turner <mattst88 <AT> gentoo <DOT> org>
CommitDate: Sat Apr 2 19:14:04 2022 +0000
URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=dd81609e
Eliminate USE aliases
These were part of the 4-python and 5-progress EAPIs and were a branch
of the code deep enough to warrant its removal in its own patch.
Signed-off-by: Matt Turner <mattst88 <AT> gentoo.org>
lib/_emerge/Package.py | 39 ++---
lib/_emerge/depgraph.py | 16 +--
lib/_emerge/resolver/slot_collision.py | 8 +-
lib/portage/dbapi/__init__.py | 28 ++--
lib/portage/package/ebuild/_config/UseManager.py | 175 -----------------------
lib/portage/tests/resolver/ResolverPlayground.py | 2 -
6 files changed, 30 insertions(+), 238 deletions(-)
diff --git a/lib/_emerge/Package.py b/lib/_emerge/Package.py
index 7c4997aab..db42d836e 100644
--- a/lib/_emerge/Package.py
+++ b/lib/_emerge/Package.py
@@ -140,9 +140,8 @@ class Package(Task):
implicit_match = db._iuse_implicit_cnstr(self.cpv, self._metadata)
else:
implicit_match = db._repoman_iuse_implicit_cnstr(self.cpv,
self._metadata)
- usealiases = self.root_config.settings._use_manager.getUseAliases(self)
self.iuse = self._iuse(
- self, self._metadata["IUSE"].split(), implicit_match, usealiases,
self.eapi
+ self, self._metadata["IUSE"].split(), implicit_match, self.eapi
)
if (self.iuse.enabled or self.iuse.disabled) and not
eapi_attrs.iuse_defaults:
@@ -735,25 +734,19 @@ class Package(Task):
"__weakref__",
"_iuse_implicit_match",
"_pkg",
- "alias_mapping",
"all",
- "all_aliases",
"enabled",
"disabled",
"tokens",
)
- def __init__(self, pkg, tokens, iuse_implicit_match, aliases, eapi):
+ def __init__(self, pkg, tokens, iuse_implicit_match, eapi):
self._pkg = pkg
self.tokens = tuple(tokens)
self._iuse_implicit_match = iuse_implicit_match
enabled = []
disabled = []
other = []
- enabled_aliases = []
- disabled_aliases = []
- other_aliases = []
- self.alias_mapping = {}
for x in tokens:
prefix = x[:1]
if prefix == "+":
@@ -762,12 +755,9 @@ class Package(Task):
disabled.append(x[1:])
else:
other.append(x)
- self.enabled = frozenset(chain(enabled, enabled_aliases))
- self.disabled = frozenset(chain(disabled, disabled_aliases))
+ self.enabled = frozenset(enabled)
+ self.disabled = frozenset(disabled)
self.all = frozenset(chain(enabled, disabled, other))
- self.all_aliases = frozenset(
- chain(enabled_aliases, disabled_aliases, other_aliases)
- )
def is_valid_flag(self, flags):
"""
@@ -778,11 +768,7 @@ class Package(Task):
flags = [flags]
for flag in flags:
- if (
- not flag in self.all
- and not flag in self.all_aliases
- and not self._iuse_implicit_match(flag)
- ):
+ if self.get_flag(flag) is None:
return False
return True
@@ -794,27 +780,18 @@ class Package(Task):
flags = [flags]
missing_iuse = []
for flag in flags:
- if (
- not flag in self.all
- and not flag in self.all_aliases
- and not self._iuse_implicit_match(flag)
- ):
+ if self.get_flag(flag) is None:
missing_iuse.append(flag)
return missing_iuse
- def get_real_flag(self, flag):
+ def get_flag(self, flag):
"""
Returns the flag's name within the scope of this package
- (accounting for aliases), or None if the flag is unknown.
+ or None if the flag is unknown.
"""
if flag in self.all:
return flag
- if flag in self.all_aliases:
- for k, v in self.alias_mapping.items():
- if flag in v:
- return k
-
if self._iuse_implicit_match(flag):
return flag
diff --git a/lib/_emerge/depgraph.py b/lib/_emerge/depgraph.py
index 14a71a610..c3f872c43 100644
--- a/lib/_emerge/depgraph.py
+++ b/lib/_emerge/depgraph.py
@@ -7182,21 +7182,21 @@ class depgraph:
new_changes = {}
for flag, state in target_use.items():
- real_flag = pkg.iuse.get_real_flag(flag)
- if real_flag is None:
+ flag = pkg.iuse.get_flag(flag)
+ if flag is None:
# Triggered by use-dep defaults.
continue
if state:
- if real_flag not in old_use:
- if new_changes.get(real_flag) == False:
+ if flag not in old_use:
+ if new_changes.get(flag) == False:
return old_use
- new_changes[real_flag] = True
+ new_changes[flag] = True
new_use.add(flag)
else:
- if real_flag in old_use:
- if new_changes.get(real_flag) == True:
+ if flag in old_use:
+ if new_changes.get(flag) == True:
return old_use
- new_changes[real_flag] = False
+ new_changes[flag] = False
new_use |= old_use.difference(target_use)
def want_restart_for_use_change(pkg, new_use):
diff --git a/lib/_emerge/resolver/slot_collision.py
b/lib/_emerge/resolver/slot_collision.py
index 4f30cb675..17d6fa395 100644
--- a/lib/_emerge/resolver/slot_collision.py
+++ b/lib/_emerge/resolver/slot_collision.py
@@ -228,14 +228,14 @@ class slot_conflict_handler:
new_change = {}
for pkg in solution:
for flag, state in solution[pkg].items():
- real_flag = pkg.iuse.get_real_flag(flag)
- if real_flag is None:
+ flag = pkg.iuse.get_flag(flag)
+ if flag is None:
# Triggered by use-dep defaults.
continue
if state == "enabled" and flag not in _pkg_use_enabled(pkg):
- new_change.setdefault(pkg, {})[real_flag] = True
+ new_change.setdefault(pkg, {})[flag] = True
elif state == "disabled" and flag in _pkg_use_enabled(pkg):
- new_change.setdefault(pkg, {})[real_flag] = False
+ new_change.setdefault(pkg, {})[flag] = False
return new_change
def _prepare_conflict_msg_and_check_for_specificity(self):
diff --git a/lib/portage/dbapi/__init__.py b/lib/portage/dbapi/__init__.py
index 717ab95d5..43c3283e8 100644
--- a/lib/portage/dbapi/__init__.py
+++ b/lib/portage/dbapi/__init__.py
@@ -273,17 +273,15 @@ class dbapi:
def _match_use(self, atom, pkg, metadata, ignore_profile=False):
iuse_implicit_match = self._iuse_implicit_cnstr(pkg, metadata)
- usealiases = self.settings._use_manager.getUseAliases(pkg)
iuse = Package._iuse(
None,
metadata["IUSE"].split(),
iuse_implicit_match,
- usealiases,
metadata["EAPI"],
)
for x in atom.unevaluated_atom.use.required:
- if iuse.get_real_flag(x) is None:
+ if iuse.get_flag(x) is None:
return False
if atom.use is None:
@@ -297,18 +295,16 @@ class dbapi:
# with implicit IUSE, in order to avoid potential
# inconsistencies in USE dep matching (see bug #453400).
use = frozenset(
- x for x in metadata["USE"].split() if iuse.get_real_flag(x) is
not None
+ x for x in metadata["USE"].split() if iuse.get_flag(x) is not
None
)
missing_enabled = frozenset(
- x for x in atom.use.missing_enabled if iuse.get_real_flag(x)
is None
+ x for x in atom.use.missing_enabled if iuse.get_flag(x) is None
)
missing_disabled = frozenset(
- x for x in atom.use.missing_disabled if iuse.get_real_flag(x)
is None
- )
- enabled = frozenset((iuse.get_real_flag(x) or x) for x in
atom.use.enabled)
- disabled = frozenset(
- (iuse.get_real_flag(x) or x) for x in atom.use.disabled
+ x for x in atom.use.missing_disabled if iuse.get_flag(x) is
None
)
+ enabled = frozenset((iuse.get_flag(x) or x) for x in
atom.use.enabled)
+ disabled = frozenset((iuse.get_flag(x) or x) for x in
atom.use.disabled)
if enabled:
if any(x in enabled for x in missing_disabled):
@@ -333,7 +329,7 @@ class dbapi:
pkg, stable=self.settings._parent_stable
)
if any(
- x in usemask and iuse.get_real_flag(x) is not None
+ x in usemask and iuse.get_flag(x) is not None
for x in atom.use.enabled
):
return False
@@ -342,9 +338,7 @@ class dbapi:
pkg, stable=self.settings._parent_stable
)
if any(
- x in useforce
- and x not in usemask
- and iuse.get_real_flag(x) is not None
+ x in useforce and x not in usemask and iuse.get_flag(x) is
not None
for x in atom.use.disabled
):
return False
@@ -352,15 +346,13 @@ class dbapi:
# Check unsatisfied use-default deps
if atom.use.enabled:
missing_disabled = frozenset(
- x
- for x in atom.use.missing_disabled
- if iuse.get_real_flag(x) is None
+ x for x in atom.use.missing_disabled if iuse.get_flag(x)
is None
)
if any(x in atom.use.enabled for x in missing_disabled):
return False
if atom.use.disabled:
missing_enabled = frozenset(
- x for x in atom.use.missing_enabled if
iuse.get_real_flag(x) is None
+ x for x in atom.use.missing_enabled if iuse.get_flag(x) is
None
)
if any(x in atom.use.disabled for x in missing_enabled):
return False
diff --git a/lib/portage/package/ebuild/_config/UseManager.py
b/lib/portage/package/ebuild/_config/UseManager.py
index ea5ba1b42..3827ba27a 100644
--- a/lib/portage/package/ebuild/_config/UseManager.py
+++ b/lib/portage/package/ebuild/_config/UseManager.py
@@ -6,23 +6,19 @@ __all__ = ("UseManager",)
from _emerge.Package import Package
from portage import os
from portage.dep import (
- Atom,
dep_getrepo,
dep_getslot,
ExtendedAtomDict,
remove_slot,
_get_useflag_re,
- _repo_separator,
)
from portage.eapi import (
eapi_supports_stable_use_forcing_and_masking,
)
-from portage.exception import InvalidAtom
from portage.localization import _
from portage.repository.config import allow_profile_repo_deps
from portage.util import (
grabfile,
- grabdict,
grabdict_package,
read_corresponding_eapi_file,
stack_lists,
@@ -45,12 +41,10 @@ class UseManager:
# use.stable.mask _repo_usestablemask_dict
# use.force _repo_useforce_dict
# use.stable.force _repo_usestableforce_dict
- # use.aliases _repo_usealiases_dict
# package.use.mask _repo_pusemask_dict
# package.use.stable.mask _repo_pusestablemask_dict
# package.use.force _repo_puseforce_dict
# package.use.stable.force _repo_pusestableforce_dict
- # package.use.aliases _repo_pusealiases_dict
# --------------------------------
# profiles
# --------------------------------
@@ -157,11 +151,6 @@ class UseManager:
"package.use", abs_user_config, user_config
)
- self._repo_usealiases_dict =
self._parse_repository_usealiases(repositories)
- self._repo_pusealiases_dict = self._parse_repository_packageusealiases(
- repositories
- )
-
self.repositories = repositories
def _parse_file_to_tuple(
@@ -408,111 +397,6 @@ class UseManager:
for profile in locations
)
- def _parse_repository_usealiases(self, repositories):
- ret = {}
- for repo in repositories.repos_with_profiles():
- file_name = os.path.join(repo.location, "profiles", "use.aliases")
- eapi = read_corresponding_eapi_file(file_name, default=repo.eapi)
- useflag_re = _get_useflag_re(eapi)
- raw_file_dict = grabdict(file_name, recursive=True)
- file_dict = {}
- for real_flag, aliases in raw_file_dict.items():
- if useflag_re.match(real_flag) is None:
- writemsg(
- _("--- Invalid real USE flag in '%s': '%s'\n")
- % (file_name, real_flag),
- noiselevel=-1,
- )
- else:
- for alias in aliases:
- if useflag_re.match(alias) is None:
- writemsg(
- _(
- "--- Invalid USE flag alias for '%s' real
USE flag in '%s': '%s'\n"
- )
- % (real_flag, file_name, alias),
- noiselevel=-1,
- )
- else:
- if any(
- alias in v
- for k, v in file_dict.items()
- if k != real_flag
- ):
- writemsg(
- _("--- Duplicated USE flag alias in '%s':
'%s'\n")
- % (file_name, alias),
- noiselevel=-1,
- )
- else:
- file_dict.setdefault(real_flag,
[]).append(alias)
- ret[repo.name] = file_dict
- return ret
-
- def _parse_repository_packageusealiases(self, repositories):
- ret = {}
- for repo in repositories.repos_with_profiles():
- file_name = os.path.join(repo.location, "profiles",
"package.use.aliases")
- eapi = read_corresponding_eapi_file(file_name, default=repo.eapi)
- useflag_re = _get_useflag_re(eapi)
- lines = grabfile(file_name, recursive=True)
- file_dict = {}
- for line in lines:
- elements = line.split()
- atom = elements[0]
- try:
- atom = Atom(atom, eapi=eapi)
- except InvalidAtom:
- writemsg(_("--- Invalid atom in '%s': '%s'\n") %
(file_name, atom))
- continue
- if len(elements) == 1:
- writemsg(
- _("--- Missing real USE flag for '%s' in '%s'\n")
- % (atom, file_name),
- noiselevel=-1,
- )
- continue
- real_flag = elements[1]
- if useflag_re.match(real_flag) is None:
- writemsg(
- _("--- Invalid real USE flag for '%s' in '%s': '%s'\n")
- % (atom, file_name, real_flag),
- noiselevel=-1,
- )
- else:
- for alias in elements[2:]:
- if useflag_re.match(alias) is None:
- writemsg(
- _(
- "--- Invalid USE flag alias for '%s' real
USE flag for '%s' in '%s': '%s'\n"
- )
- % (real_flag, atom, file_name, alias),
- noiselevel=-1,
- )
- else:
- # Duplicated USE flag aliases in entries for
different atoms
- # matching the same package version are detected
in getUseAliases().
- if any(
- alias in v
- for k, v in file_dict.get(atom.cp, {})
- .get(atom, {})
- .items()
- if k != real_flag
- ):
- writemsg(
- _(
- "--- Duplicated USE flag alias for
'%s' in '%s': '%s'\n"
- )
- % (atom, file_name, alias),
- noiselevel=-1,
- )
- else:
- file_dict.setdefault(atom.cp, {}).setdefault(
- atom, {}
- ).setdefault(real_flag, []).append(alias)
- ret[repo.name] = file_dict
- return ret
-
def _isStable(self, pkg):
if self._user_config:
try:
@@ -649,65 +533,6 @@ class UseManager:
return frozenset(stack_lists(useforce, incremental=True))
- def getUseAliases(self, pkg):
- if hasattr(pkg, "eapi"):
- return {}
-
- cp = getattr(pkg, "cp", None)
- if cp is None:
- slot = dep_getslot(pkg)
- repo = dep_getrepo(pkg)
- pkg = _pkg_str(remove_slot(pkg), slot=slot, repo=repo)
- cp = pkg.cp
-
- usealiases = {}
-
- if hasattr(pkg, "repo") and pkg.repo != Package.UNKNOWN_REPO:
- repos = []
- try:
- repos.extend(repo.name for repo in
self.repositories[pkg.repo].masters)
- except KeyError:
- pass
- repos.append(pkg.repo)
- for repo in repos:
- usealiases_dict = self._repo_usealiases_dict.get(repo, {})
- for real_flag, aliases in usealiases_dict.items():
- for alias in aliases:
- if any(
- alias in v for k, v in usealiases.items() if k !=
real_flag
- ):
- writemsg(
- _("--- Duplicated USE flag alias for '%s%s%s':
'%s'\n")
- % (pkg.cpv, _repo_separator, pkg.repo, alias),
- noiselevel=-1,
- )
- else:
- usealiases.setdefault(real_flag, []).append(alias)
- cp_usealiases_dict = self._repo_pusealiases_dict.get(repo,
{}).get(cp)
- if cp_usealiases_dict:
- usealiases_dict_list = ordered_by_atom_specificity(
- cp_usealiases_dict, pkg
- )
- for usealiases_dict in usealiases_dict_list:
- for real_flag, aliases in usealiases_dict.items():
- for alias in aliases:
- if any(
- alias in v
- for k, v in usealiases.items()
- if k != real_flag
- ):
- writemsg(
- _(
- "--- Duplicated USE flag alias for
'%s%s%s': '%s'\n"
- )
- % (pkg.cpv, _repo_separator, pkg.repo,
alias),
- noiselevel=-1,
- )
- else:
- usealiases.setdefault(real_flag,
[]).append(alias)
-
- return usealiases
-
def getPUSE(self, pkg):
cp = getattr(pkg, "cp", None)
if cp is None:
diff --git a/lib/portage/tests/resolver/ResolverPlayground.py
b/lib/portage/tests/resolver/ResolverPlayground.py
index 7852d0aaf..8811354b5 100644
--- a/lib/portage/tests/resolver/ResolverPlayground.py
+++ b/lib/portage/tests/resolver/ResolverPlayground.py
@@ -63,13 +63,11 @@ class ResolverPlayground:
"packages",
"package.unmask",
"package.use",
- "package.use.aliases",
"package.use.force",
"package.use.mask",
"package.use.stable.force",
"package.use.stable.mask",
"soname.provided",
- "use.aliases",
"use.force",
"use.mask",
"layout.conf",