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 ) id 1QONsT-0001cp-B1 for garchives@archives.gentoo.org; Mon, 23 May 2011 05:40:29 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id E063FE058A; Mon, 23 May 2011 05:40:20 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id 912C5E058A for ; Mon, 23 May 2011 05:40:20 +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 EAA281B401E for ; Mon, 23 May 2011 05:40:19 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by pelican.gentoo.org (Postfix) with ESMTP id EAB6780505 for ; Mon, 23 May 2011 05:40:18 +0000 (UTC) From: "Zac Medico" To: gentoo-commits@lists.gentoo.org Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Zac Medico" Message-ID: Subject: [gentoo-commits] proj/portage:master commit in: pym/portage/tests/resolver/, pym/_emerge/ X-VCS-Repository: proj/portage X-VCS-Files: pym/_emerge/depgraph.py pym/portage/tests/resolver/test_merge_order.py X-VCS-Directories: pym/portage/tests/resolver/ pym/_emerge/ X-VCS-Committer: zmedico X-VCS-Committer-Name: Zac Medico X-VCS-Revision: b84449fae4abf40ff3721002952dc37ccef24030 Date: Mon, 23 May 2011 05:40:18 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: quoted-printable X-Archives-Salt: X-Archives-Hash: 6ea88fcdf582f7f15a200ffcd693f0e9 commit: b84449fae4abf40ff3721002952dc37ccef24030 Author: Zac Medico gentoo org> AuthorDate: Mon May 23 05:39:57 2011 +0000 Commit: Zac Medico gentoo org> CommitDate: Mon May 23 05:39:57 2011 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/portage.git;a= =3Dcommit;h=3Db84449fa _serialize_tasks: prefer unsatisfied asap child Optimally, satisfied deps are always merged after the asap nodes that depend on them. --- pym/_emerge/depgraph.py | 28 ++++++++++++++++++= ----- pym/portage/tests/resolver/test_merge_order.py | 9 +++++-- 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py index 37fdeed..ca1fe0d 100644 --- a/pym/_emerge/depgraph.py +++ b/pym/_emerge/depgraph.py @@ -4931,6 +4931,7 @@ class depgraph(object): if nodes: # If there is a mixture of merges and uninstalls, # do the uninstalls first. + good_uninstalls =3D None if len(nodes) > 1: good_uninstalls =3D [] for node in nodes: @@ -4942,7 +4943,9 @@ class depgraph(object): else: nodes =3D nodes =20 - if ignore_priority is None and not tree_mode: + if good_uninstalls or len(nodes) =3D=3D 1 or \ + (ignore_priority is None and \ + not asap_nodes and not tree_mode): # Greedily pop all of these nodes since no # relationship has been ignored. This optimization # destroys --tree output, so it's disabled in tree @@ -4955,12 +4958,25 @@ class depgraph(object): # will not produce a leaf node, so avoid it. # * It's normal for a selected uninstall to be a # root node, so don't check them for parents. - for node in nodes: - if node.operation =3D=3D "uninstall" or \ - mygraph.parent_nodes(node): - selected_nodes =3D [node] + if asap_nodes: + prefer_asap_parents =3D (True, False) + else: + prefer_asap_parents =3D (False,) + for check_asap_parent in prefer_asap_parents: + if check_asap_parent: + for node in nodes: + parents =3D mygraph.parent_nodes(node, + ignore_priority=3DDepPrioritySatisfiedRange.ignore_soft) + if parents and set(parents).intersection(asap_nodes): + selected_nodes =3D [node] + break + else: + for node in nodes: + if mygraph.parent_nodes(node): + selected_nodes =3D [node] + break + if selected_nodes: break - if selected_nodes: break =20 diff --git a/pym/portage/tests/resolver/test_merge_order.py b/pym/portage= /tests/resolver/test_merge_order.py index ee3c786..1057300 100644 --- a/pym/portage/tests/resolver/test_merge_order.py +++ b/pym/portage/tests/resolver/test_merge_order.py @@ -112,12 +112,13 @@ class MergeOrderTestCase(TestCase): "app-misc/some-app-c-1": { "RDEPEND": "app-misc/circ-buildtime-a app-misc/circ-buildtime-b", }, + "app-admin/eselect-python-20100321" : {}, "sys-apps/portage-2.1.9.42" : { "DEPEND" : "dev-lang/python", "RDEPEND" : "dev-lang/python", }, "sys-apps/portage-2.1.9.49" : { - "DEPEND" : "dev-lang/python", + "DEPEND" : "dev-lang/python >=3Dapp-admin/eselect-python-20091230", "RDEPEND" : "dev-lang/python", }, "dev-lang/python-3.1" : {}, @@ -318,12 +319,14 @@ class MergeOrderTestCase(TestCase): ["app-misc/blocker-runtime-hard-a"], success =3D False, mergelist =3D ['app-misc/blocker-runtime-hard-a-1', '!!app-misc/bloc= ker-runtime-hard-a']), - # Test that PORTAGE_PACKAGE_ATOM is merged asap. + # Test that PORTAGE_PACKAGE_ATOM is merged asap. Optimally, + # satisfied deps are always merged after the asap nodes that + # depend on them. ResolverPlaygroundTestCase( ["dev-lang/python", portage.const.PORTAGE_PACKAGE_ATOM], success =3D True, all_permutations =3D True, - mergelist =3D ['sys-apps/portage-2.1.9.49', 'dev-lang/python-3.2']), + mergelist =3D ['app-admin/eselect-python-20100321', 'sys-apps/portag= e-2.1.9.49', 'dev-lang/python-3.2']), # Test that OS_HEADERS_PACKAGE_ATOM and LIBC_PACKAGE_ATOM # are merged asap, in order to account for implicit # dependencies. See bug #303567.