Skip to contentSkip to conversation

runqueue: Fix setscene task dependencies

PATCH New Richard Purdie 1 participant 1 message Jan 10, 2016

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 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, which is simply wrong. 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.

bitbake/lib/bb/runqueue.py +1 -0
index da7059b..daf4c3d 100644
@@ -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)