From: Richard Purdie Date: Sun, 10 Jan 2016 18:01:01 +0000 (+0000) Subject: runqueue: Fix setscene task dependencies X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f8bcb0a1e3b008b71c9a7cd21f76d0906f2d8068;p=thirdparty%2Fopenembedded%2Fopenembedded-core-contrib.git runqueue: Fix setscene task dependencies Debugging suggests that setscene tasks are being a little greedy about their dependencies, for example, lsof is insisting that gcc-runtime's do_package is installed. If it isn't, its requiring gcc to rebuild. If gcc-runtime do_package_write_xxx and do_packagedata is available, there is no reason do_package should be needed. The reason this is happening appears to be from the batching up of task dependencies code, rather than setscene tasks stopping when passing over a setscene task, they were being carried forward. This patch fixes it so the data is 'zeroed' when passing over a setscene task boundary, which gives the dependency graph that is expected. After this patch, lsof will rebuild quite happily without gcc-runtime:do_package being present, as expected. This should lead to less dependencies being installed for builds from sstate and generally better performance in general. Signed-off-by: Richard Purdie --- diff --git a/lib/bb/runqueue.py b/lib/bb/runqueue.py index 57b1cca525f..44f270be526 100644 --- a/lib/bb/runqueue.py +++ b/lib/bb/runqueue.py @@ -1721,6 +1721,7 @@ class RunQueueExecuteScenequeue(RunQueueExecute): sq_revdeps_new[point] = set() if point in self.rqdata.runq_setscene: sq_revdeps_new[point] = tasks + tasks = set() for dep in self.rqdata.runq_depends[point]: if point in sq_revdeps[dep]: sq_revdeps[dep].remove(point)