diff options
Diffstat (limited to 'lib/portage/dep/_slot_operator.py')
-rw-r--r-- | lib/portage/dep/_slot_operator.py | 18 |
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 |