aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/portage/dep/_slot_operator.py')
-rw-r--r--lib/portage/dep/_slot_operator.py18
1 files changed, 9 insertions, 9 deletions
diff --git a/lib/portage/dep/_slot_operator.py b/lib/portage/dep/_slot_operator.py
index bdaf5f328..d3f506450 100644
--- a/lib/portage/dep/_slot_operator.py
+++ b/lib/portage/dep/_slot_operator.py
@@ -1,4 +1,4 @@
-# Copyright 2012-2018 Gentoo Foundation
+# Copyright 2012-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
from portage.dep import Atom, paren_enclose, use_reduce
@@ -41,8 +41,7 @@ def find_built_slot_operator_atoms(pkg):
def _find_built_slot_operator(dep_struct):
for x in dep_struct:
if isinstance(x, list):
- for atom in _find_built_slot_operator(x):
- yield atom
+ yield from _find_built_slot_operator(x)
elif isinstance(x, Atom) and x.slot_operator_built:
yield x
@@ -59,7 +58,6 @@ def ignore_built_slot_operator_deps(dep_struct):
def evaluate_slot_operator_equal_deps(settings, use, trees):
-
metadata = settings.configdict["pkg"]
eapi = metadata["EAPI"]
eapi_attrs = _get_eapi_attrs(eapi)
@@ -93,6 +91,7 @@ def _eval_deps(dep_struct, vardbs):
# and B installed should record subslot on A only since the package is
# supposed to link against that anyway, and we have no guarantee that B
# has matching ABI.
+ # See bug #455904, bug #489458, bug #586238.
for i, x in enumerate(dep_struct):
if isinstance(x, list):
@@ -103,14 +102,15 @@ def _eval_deps(dep_struct, vardbs):
if best_version:
best_version = best_version[-1]
try:
- best_version = vardb._pkg_str(best_version, None)
+ best_version = (
+ best_version
+ if hasattr(best_version, "slot")
+ else vardb._pkg_str(best_version, None)
+ )
except (KeyError, InvalidData):
pass
else:
- slot_part = "%s/%s=" % (
- best_version.slot,
- best_version.sub_slot,
- )
+ slot_part = f"{best_version.slot}/{best_version.sub_slot}="
x = x.with_slot(slot_part)
dep_struct[i] = x
break