From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id 816C913888F for ; Fri, 23 Oct 2015 06:01:12 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 5C452E0848; Fri, 23 Oct 2015 06:01:07 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id D0D76E083A for ; Fri, 23 Oct 2015 06:01:06 +0000 (UTC) Received: from localhost.localdomain (ip174-67-193-3.oc.oc.cox.net [174.67.193.3]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: zmedico) by smtp.gentoo.org (Postfix) with ESMTPSA id 7219A3406F1; Fri, 23 Oct 2015 06:01:04 +0000 (UTC) From: Zac Medico To: gentoo-portage-dev@lists.gentoo.org Cc: Zac Medico Subject: [gentoo-portage-dev] [PATCH] calc_depclean: do not abort for broken soname dependencies (bug 563844) Date: Thu, 22 Oct 2015 23:00:29 -0700 Message-Id: <1445580029-27665-1-git-send-email-zmedico@gentoo.org> X-Mailer: git-send-email 2.4.9 Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-portage-dev@lists.gentoo.org Reply-to: gentoo-portage-dev@lists.gentoo.org X-Archives-Salt: c61a72be-8809-4147-977c-b79f457b9f1b X-Archives-Hash: 47f1065e449ce5234efe983831c3ecb9 X-Gentoo-Bug: 563844 X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=563844 --- pym/_emerge/actions.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/pym/_emerge/actions.py b/pym/_emerge/actions.py index 602715b..7f1cb59 100644 --- a/pym/_emerge/actions.py +++ b/pym/_emerge/actions.py @@ -863,11 +863,31 @@ def calc_depclean(settings, trees, ldpath_mtimes, def unresolved_deps(): + soname_deps = set() unresolvable = set() for dep in resolver._dynamic_config._initially_unsatisfied_deps: if isinstance(dep.parent, Package) and \ (dep.priority > UnmergeDepPriority.SOFT): - unresolvable.add((dep.atom, dep.parent.cpv)) + if dep.atom.soname: + soname_deps.add((dep.atom, dep.parent.cpv)) + else: + unresolvable.add((dep.atom, dep.parent.cpv)) + + if soname_deps: + # Generally, broken soname dependencies can safely be + # suppressed by a REQUIRES_EXCLUDE setting in the ebuild, + # so they should only trigger a warning message. + prefix = warn(" * ") + msg = [] + msg.append("Broken soname dependencies found:") + msg.append("") + for atom, parent in soname_deps: + msg.append(" %s required by:" % (atom,)) + msg.append(" %s" % (parent,)) + msg.append("") + + writemsg_level("".join("%s%s\n" % (prefix, line) for line in msg), + level=logging.WARNING, noiselevel=-1) if not unresolvable: return False -- 2.4.9