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: Tue, 03 May 2011 22:59:25
Message-Id: 5d26fe64b1f8b56f1f3e588921f33bc9df4da78d.zmedico@gentoo
1 commit: 5d26fe64b1f8b56f1f3e588921f33bc9df4da78d
2 Author: David James <davidjames <AT> chromium <DOT> org>
3 AuthorDate: Tue May 3 20:10:28 2011 +0000
4 Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
5 CommitDate: Tue May 3 22:47:25 2011 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=5d26fe64
7
8 rebuild_config: propagate runtime deps to parents
9
10 Update rebuild option to propagate runtime deps to parents.
11
12 Suggested by SebastianLuther <AT> gmx.de
13
14 BUG=chromium-os:14858
15 TEST=Added unit test. Ran unit tests.
16
17 Change-Id: I7228a8558eddd1956c590de39430172476c66228
18
19 Review URL: http://gerrit.chromium.org/gerrit/202
20
21 ---
22 pym/_emerge/depgraph.py | 12 ++++++++----
23 pym/portage/tests/resolver/test_rebuild.py | 9 +++++++--
24 2 files changed, 15 insertions(+), 6 deletions(-)
25
26 diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py
27 index 8a76863..0de443b 100644
28 --- a/pym/_emerge/depgraph.py
29 +++ b/pym/_emerge/depgraph.py
30 @@ -267,15 +267,21 @@ class _rebuild_config(object):
31 # Remove our leaf node from the graph, keeping track of deps.
32 parents = graph.nodes[node][1].items()
33 graph.remove(node)
34 + node_build_deps = build_deps.get(node, {})
35 + node_runtime_deps = runtime_deps.get(node, {})
36 for parent, priorities in parents:
37 if parent == node:
38 # Ignore a direct cycle.
39 continue
40 + parent_bdeps = build_deps.setdefault(parent, {})
41 + parent_rdeps = runtime_deps.setdefault(parent, {})
42 for priority in priorities:
43 if priority.buildtime:
44 - build_deps.setdefault(parent, {})[slot_atom] = node
45 + parent_bdeps[slot_atom] = node
46 if priority.runtime:
47 - runtime_deps.setdefault(parent, {})[slot_atom] = node
48 + parent_rdeps[slot_atom] = node
49 + if slot_atom in parent_bdeps and slot_atom in parent_rdeps:
50 + parent_rdeps.update(node_runtime_deps)
51 if not graph.child_nodes(parent):
52 leaf_nodes.append(parent)
53
54 @@ -284,8 +290,6 @@ class _rebuild_config(object):
55 # completely filled in, and self.rebuild_list / self.reinstall_list
56 # will tell us whether any of our children need to be rebuilt or
57 # reinstalled.
58 - node_build_deps = build_deps.get(node, {})
59 - node_runtime_deps = runtime_deps.get(node, {})
60 if self._trigger_rebuild(node, node_build_deps, node_runtime_deps):
61 need_restart = True
62
63
64 diff --git a/pym/portage/tests/resolver/test_rebuild.py b/pym/portage/tests/resolver/test_rebuild.py
65 index 809dbed..fda289c 100644
66 --- a/pym/portage/tests/resolver/test_rebuild.py
67 +++ b/pym/portage/tests/resolver/test_rebuild.py
68 @@ -26,6 +26,8 @@ class RebuildTestCase(TestCase):
69 "sys-apps/d-2": { "RDEPEND" : "sys-libs/x"},
70 "sys-apps/e-2": { "DEPEND" : "sys-libs/x", "RDEPEND" : "sys-libs/x"},
71 "sys-apps/f-2": { "DEPEND" : "sys-apps/a", "RDEPEND" : "sys-apps/a"},
72 + "sys-apps/g-2": { "DEPEND" : "sys-apps/b sys-libs/x",
73 + "RDEPEND" : "sys-apps/b"},
74 }
75
76 installed = {
77 @@ -36,10 +38,12 @@ class RebuildTestCase(TestCase):
78 "sys-apps/d-1": { "RDEPEND" : "sys-libs/x"},
79 "sys-apps/e-1": { "DEPEND" : "sys-libs/x", "RDEPEND" : "sys-libs/x"},
80 "sys-apps/f-1": { "DEPEND" : "sys-apps/a", "RDEPEND" : "sys-apps/a"},
81 + "sys-apps/g-1": { "DEPEND" : "sys-apps/b sys-libs/x",
82 + "RDEPEND" : "sys-apps/b"},
83 }
84
85 world = ["sys-apps/a", "sys-apps/b", "sys-apps/c", "sys-apps/d",
86 - "sys-apps/e", "sys-apps/f"]
87 + "sys-apps/e", "sys-apps/f", "sys-apps/g"]
88
89 test_cases = (
90 ResolverPlaygroundTestCase(
91 @@ -53,7 +57,8 @@ class RebuildTestCase(TestCase):
92 ResolverPlaygroundTestCase(
93 ["sys-libs/x"],
94 options = {"--rebuild" : True},
95 - mergelist = ['sys-libs/x-2', 'sys-apps/a-2', 'sys-apps/b-2', 'sys-apps/e-2'],
96 + mergelist = ['sys-libs/x-2', 'sys-apps/a-2', 'sys-apps/b-2',
97 + 'sys-apps/e-2', 'sys-apps/g-2'],
98 ignore_mergelist_order = True,
99 success = True),
100 )