From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from <gentoo-commits+bounces-316451-garchives=archives.gentoo.org@lists.gentoo.org>) id 1Pop7n-0000MB-8S for garchives@archives.gentoo.org; Mon, 14 Feb 2011 03:29:19 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 1E6F2E073C; Mon, 14 Feb 2011 03:29:11 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id CC9B5E073C for <gentoo-commits@lists.gentoo.org>; Mon, 14 Feb 2011 03:29:10 +0000 (UTC) Received: from pelican.gentoo.org (unknown [66.219.59.40]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 30AEC1B40B4 for <gentoo-commits@lists.gentoo.org>; Mon, 14 Feb 2011 03:29:10 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by pelican.gentoo.org (Postfix) with ESMTP id 7FB0A8006A for <gentoo-commits@lists.gentoo.org>; Mon, 14 Feb 2011 03:29:09 +0000 (UTC) From: "Zac Medico" <zmedico@gentoo.org> To: gentoo-commits@lists.gentoo.org Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Zac Medico" <zmedico@gentoo.org> Message-ID: <b4f98ec5a1eb2e010a455b19db5bef8d61def241.zmedico@gentoo> Subject: [gentoo-commits] proj/portage:master commit in: pym/_emerge/ X-VCS-Repository: proj/portage X-VCS-Files: pym/_emerge/depgraph.py X-VCS-Directories: pym/_emerge/ X-VCS-Committer: zmedico X-VCS-Committer-Name: Zac Medico X-VCS-Revision: b4f98ec5a1eb2e010a455b19db5bef8d61def241 Date: Mon, 14 Feb 2011 03:29:09 +0000 (UTC) Precedence: bulk List-Post: <mailto:gentoo-commits@lists.gentoo.org> List-Help: <mailto:gentoo-commits+help@lists.gentoo.org> List-Unsubscribe: <mailto:gentoo-commits+unsubscribe@lists.gentoo.org> List-Subscribe: <mailto:gentoo-commits+subscribe@lists.gentoo.org> List-Id: Gentoo Linux mail <gentoo-commits.gentoo.org> X-BeenThere: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: quoted-printable X-Archives-Salt: X-Archives-Hash: 62b043d981b56eb17d73ae544216adb6 commit: b4f98ec5a1eb2e010a455b19db5bef8d61def241 Author: Zac Medico <zmedico <AT> gentoo <DOT> org> AuthorDate: Mon Feb 14 03:28:07 2011 +0000 Commit: Zac Medico <zmedico <AT> gentoo <DOT> org> CommitDate: Mon Feb 14 03:28:07 2011 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/portage.git;a= =3Dcommit;h=3Db4f98ec5 get_dep_chain: prefer parents in merge list This will fix bug #354747. --- pym/_emerge/depgraph.py | 30 ++++++++++++++++++++---------- 1 files changed, 20 insertions(+), 10 deletions(-) diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py index 30e7046..ef4d1f0 100644 --- a/pym/_emerge/depgraph.py +++ b/pym/_emerge/depgraph.py @@ -2359,20 +2359,20 @@ class depgraph(object): # When traversing to parents, prefer arguments over packages # since arguments are root nodes. Never traverse the same # package twice, in order to prevent an infinite loop. + child =3D node selected_parent =3D None + parent_arg =3D None + parent_merge =3D None + for parent in self._dynamic_config.digraph.parent_nodes(node): if parent in traversed_nodes: continue if isinstance(parent, DependencyArg): - if self._dynamic_config.digraph.parent_nodes(parent): - selected_parent =3D parent - child =3D node - else: - dep_chain.append( - (_unicode_decode("%s") % (parent,), "argument")) - selected_parent =3D None - break + parent_arg =3D parent else: + if isinstance(parent, Package) and \ + parent.operation =3D=3D "merge": + parent_merge =3D parent if unsatisfied_dependency and node is start_node: # Make sure that pkg doesn't satisfy parent's dependency. # This ensures that we select the correct parent for use @@ -2382,11 +2382,21 @@ class depgraph(object): atom_set =3D InternalPackageSet(initial_atoms=3D(atom,)) if not atom_set.findAtomForPackage(start_node): selected_parent =3D parent - child =3D node break else: selected_parent =3D parent - child =3D node + + if parent_merge is not None: + # Prefer parent in the merge list (bug #354747). + selected_parent =3D parent_merge + elif parent_arg is not None: + if self._dynamic_config.digraph.parent_nodes(parent_arg): + selected_parent =3D parent_arg + else: + dep_chain.append( + (_unicode_decode("%s") % (parent,), "argument")) + selected_parent =3D None + node =3D selected_parent return dep_chain =20