commit:     036a0785d2595defc55ef03e424ffdf739a108b1
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Wed Dec  6 00:26:17 2023 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Wed Dec  6 16:06:00 2023 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=036a0785

circular_dependency: Handle SonameAtom

Treat soname deps is as unconditional for now. In some
cases they can be avoided by a rebuild with changed
USE, but ebuilds sometimes do not specify the
corresponding conditional dependency (especially for
system packages like gcc which provides libstdc++.so.6
and libgcc_s.so.1).

Bug: https://bugs.gentoo.org/919311
Signed-off-by: Zac Medico <zmedico <AT> gentoo.org>

 lib/_emerge/resolver/circular_dependency.py | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/lib/_emerge/resolver/circular_dependency.py 
b/lib/_emerge/resolver/circular_dependency.py
index c88b18a574..cd612e3130 100644
--- a/lib/_emerge/resolver/circular_dependency.py
+++ b/lib/_emerge/resolver/circular_dependency.py
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Gentoo Authors
+# Copyright 2010-2023 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 import logging
@@ -132,9 +132,20 @@ class circular_dependency_handler:
             for ppkg, atom in parent_atoms:
                 if ppkg == parent:
                     changed_parent = ppkg
-                    parent_atom = atom.unevaluated_atom
+                    parent_atom = atom
                     break
 
+            if parent_atom.package:
+                parent_atom = parent_atom.unevaluated_atom
+            else:
+                # Treat soname deps as unconditional for now. In some
+                # cases they can be avoided by a rebuild with changed
+                # USE, but ebuilds sometimes do not specify the
+                # corresponding conditional dependency (especially for
+                # system packages like gcc which provides libstdc++.so.6
+                # and libgcc_s.so.1).
+                continue
+
             try:
                 affecting_use = extract_affecting_use(
                     dep, parent_atom, eapi=parent.eapi

Reply via email to