When searching for slot operator rebuilds, respect non slot-operator components of parent dependencies, so that a <foo-version:= dependency like the <dev-libs/libgit2-1:0=[ssh?] dependency from bug 717140 will not be completely ignored. This will prevent erroneous attempts to trigger slot operator rebuilds for upgrades that would break <foo-version:= dependencies (which triggered upgrade/downgrade loops when backtracking tried to resolve the breakage).
Bug: https://bugs.gentoo.org/717140 Signed-off-by: Zac Medico <zmed...@gentoo.org> --- lib/_emerge/depgraph.py | 12 +++++++++--- .../resolver/test_slot_operator_reverse_deps.py | 1 - 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/_emerge/depgraph.py b/lib/_emerge/depgraph.py index 6d1f62178..ec90e59df 100644 --- a/lib/_emerge/depgraph.py +++ b/lib/_emerge/depgraph.py @@ -2068,9 +2068,15 @@ class depgraph(object): for parent, atom in self._dynamic_config._parent_atoms.get(existing_pkg, []): if isinstance(parent, Package): if parent in built_slot_operator_parents: - # This parent may need to be rebuilt, so its - # dependencies aren't necessarily relevant. - continue + # This parent may need to be rebuilt, therefore + # discard its soname and built slot operator + # dependency components which are not necessarily + # relevant. + if atom.soname: + continue + elif atom.package and atom.slot_operator_built: + # This discards the slot/subslot component. + atom = atom.with_slot("=") if replacement_parent is not None and \ (replacement_parent.slot_atom == parent.slot_atom diff --git a/lib/portage/tests/resolver/test_slot_operator_reverse_deps.py b/lib/portage/tests/resolver/test_slot_operator_reverse_deps.py index 5c5295510..e0e738d6b 100644 --- a/lib/portage/tests/resolver/test_slot_operator_reverse_deps.py +++ b/lib/portage/tests/resolver/test_slot_operator_reverse_deps.py @@ -122,7 +122,6 @@ class SlotOperatorReverseDepsLibGit2TestCase(TestCase): trigger an upgrade to dev-libs/libgit2-1.0.0-r1, ultimately resulting in an undesirable downgrade to dev-libs/libgit2-0.28.4-r1. """ - self.todo = True ebuilds = { -- 2.24.1