From 5d26fe64b1f8b56f1f3e588921f33bc9df4da78d Mon Sep 17 00:00:00 2001 From: David James Date: Tue, 3 May 2011 13:10:28 -0700 Subject: rebuild_config: propagate runtime deps to parents Update rebuild option to propagate runtime deps to parents. Suggested by SebastianLuther@gmx.de BUG=chromium-os:14858 TEST=Added unit test. Ran unit tests. Change-Id: I7228a8558eddd1956c590de39430172476c66228 Review URL: http://gerrit.chromium.org/gerrit/202 --- pym/_emerge/depgraph.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'pym/_emerge/depgraph.py') diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py index 8a7686365..0de443b3d 100644 --- a/pym/_emerge/depgraph.py +++ b/pym/_emerge/depgraph.py @@ -267,15 +267,21 @@ class _rebuild_config(object): # Remove our leaf node from the graph, keeping track of deps. parents = graph.nodes[node][1].items() graph.remove(node) + node_build_deps = build_deps.get(node, {}) + node_runtime_deps = runtime_deps.get(node, {}) for parent, priorities in parents: if parent == node: # Ignore a direct cycle. continue + parent_bdeps = build_deps.setdefault(parent, {}) + parent_rdeps = runtime_deps.setdefault(parent, {}) for priority in priorities: if priority.buildtime: - build_deps.setdefault(parent, {})[slot_atom] = node + parent_bdeps[slot_atom] = node if priority.runtime: - runtime_deps.setdefault(parent, {})[slot_atom] = node + parent_rdeps[slot_atom] = node + if slot_atom in parent_bdeps and slot_atom in parent_rdeps: + parent_rdeps.update(node_runtime_deps) if not graph.child_nodes(parent): leaf_nodes.append(parent) @@ -284,8 +290,6 @@ class _rebuild_config(object): # completely filled in, and self.rebuild_list / self.reinstall_list # will tell us whether any of our children need to be rebuilt or # reinstalled. - node_build_deps = build_deps.get(node, {}) - node_runtime_deps = runtime_deps.get(node, {}) if self._trigger_rebuild(node, node_build_deps, node_runtime_deps): need_restart = True -- cgit v1.2.3-1-g7c22