Gentoo Archives: gentoo-commits

From: Zac Medico <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/portage:master commit in: pym/portage/tests/resolver/, pym/_emerge/
Date: Mon, 23 May 2011 05:40:29
Message-Id: b84449fae4abf40ff3721002952dc37ccef24030.zmedico@gentoo
1 commit: b84449fae4abf40ff3721002952dc37ccef24030
2 Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
3 AuthorDate: Mon May 23 05:39:57 2011 +0000
4 Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
5 CommitDate: Mon May 23 05:39:57 2011 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=b84449fa
7
8 _serialize_tasks: prefer unsatisfied asap child
9
10 Optimally, satisfied deps are always merged after the asap nodes that
11 depend on them.
12
13 ---
14 pym/_emerge/depgraph.py | 28 ++++++++++++++++++-----
15 pym/portage/tests/resolver/test_merge_order.py | 9 +++++--
16 2 files changed, 28 insertions(+), 9 deletions(-)
17
18 diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py
19 index 37fdeed..ca1fe0d 100644
20 --- a/pym/_emerge/depgraph.py
21 +++ b/pym/_emerge/depgraph.py
22 @@ -4931,6 +4931,7 @@ class depgraph(object):
23 if nodes:
24 # If there is a mixture of merges and uninstalls,
25 # do the uninstalls first.
26 + good_uninstalls = None
27 if len(nodes) > 1:
28 good_uninstalls = []
29 for node in nodes:
30 @@ -4942,7 +4943,9 @@ class depgraph(object):
31 else:
32 nodes = nodes
33
34 - if ignore_priority is None and not tree_mode:
35 + if good_uninstalls or len(nodes) == 1 or \
36 + (ignore_priority is None and \
37 + not asap_nodes and not tree_mode):
38 # Greedily pop all of these nodes since no
39 # relationship has been ignored. This optimization
40 # destroys --tree output, so it's disabled in tree
41 @@ -4955,12 +4958,25 @@ class depgraph(object):
42 # will not produce a leaf node, so avoid it.
43 # * It's normal for a selected uninstall to be a
44 # root node, so don't check them for parents.
45 - for node in nodes:
46 - if node.operation == "uninstall" or \
47 - mygraph.parent_nodes(node):
48 - selected_nodes = [node]
49 + if asap_nodes:
50 + prefer_asap_parents = (True, False)
51 + else:
52 + prefer_asap_parents = (False,)
53 + for check_asap_parent in prefer_asap_parents:
54 + if check_asap_parent:
55 + for node in nodes:
56 + parents = mygraph.parent_nodes(node,
57 + ignore_priority=DepPrioritySatisfiedRange.ignore_soft)
58 + if parents and set(parents).intersection(asap_nodes):
59 + selected_nodes = [node]
60 + break
61 + else:
62 + for node in nodes:
63 + if mygraph.parent_nodes(node):
64 + selected_nodes = [node]
65 + break
66 + if selected_nodes:
67 break
68 -
69 if selected_nodes:
70 break
71
72
73 diff --git a/pym/portage/tests/resolver/test_merge_order.py b/pym/portage/tests/resolver/test_merge_order.py
74 index ee3c786..1057300 100644
75 --- a/pym/portage/tests/resolver/test_merge_order.py
76 +++ b/pym/portage/tests/resolver/test_merge_order.py
77 @@ -112,12 +112,13 @@ class MergeOrderTestCase(TestCase):
78 "app-misc/some-app-c-1": {
79 "RDEPEND": "app-misc/circ-buildtime-a app-misc/circ-buildtime-b",
80 },
81 + "app-admin/eselect-python-20100321" : {},
82 "sys-apps/portage-2.1.9.42" : {
83 "DEPEND" : "dev-lang/python",
84 "RDEPEND" : "dev-lang/python",
85 },
86 "sys-apps/portage-2.1.9.49" : {
87 - "DEPEND" : "dev-lang/python",
88 + "DEPEND" : "dev-lang/python >=app-admin/eselect-python-20091230",
89 "RDEPEND" : "dev-lang/python",
90 },
91 "dev-lang/python-3.1" : {},
92 @@ -318,12 +319,14 @@ class MergeOrderTestCase(TestCase):
93 ["app-misc/blocker-runtime-hard-a"],
94 success = False,
95 mergelist = ['app-misc/blocker-runtime-hard-a-1', '!!app-misc/blocker-runtime-hard-a']),
96 - # Test that PORTAGE_PACKAGE_ATOM is merged asap.
97 + # Test that PORTAGE_PACKAGE_ATOM is merged asap. Optimally,
98 + # satisfied deps are always merged after the asap nodes that
99 + # depend on them.
100 ResolverPlaygroundTestCase(
101 ["dev-lang/python", portage.const.PORTAGE_PACKAGE_ATOM],
102 success = True,
103 all_permutations = True,
104 - mergelist = ['sys-apps/portage-2.1.9.49', 'dev-lang/python-3.2']),
105 + mergelist = ['app-admin/eselect-python-20100321', 'sys-apps/portage-2.1.9.49', 'dev-lang/python-3.2']),
106 # Test that OS_HEADERS_PACKAGE_ATOM and LIBC_PACKAGE_ATOM
107 # are merged asap, in order to account for implicit
108 # dependencies. See bug #303567.