From: Elliot Smith Date: Mon, 11 Jul 2016 15:23:05 +0000 (+0100) Subject: cooker: add BuildInit event X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ac02fda870965bf7d44ff5688eda54d2d11ab9c7;p=thirdparty%2Fopenembedded%2Fopenembedded-core-contrib.git cooker: add BuildInit event In situations where a bitbake run fails before the build properly starts and BuildStarted is fired, a UI has no way to get at the targets passed to the build. This makes it difficult for the UI to report on the targets which failed. Fire a BuildInit event before running buildTargets() or buildFile(). This enables a UI to capture targets passed to buildTargets(), even if the build fails (e.g. the targets themselves are invalid). [YOCTO #8440] Signed-off-by: Elliot Smith --- diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py index a73a55de964..d4dd23f09cd 100644 --- a/lib/bb/cooker.py +++ b/lib/bb/cooker.py @@ -1235,6 +1235,7 @@ class BBCooker: """ Build the file matching regexp buildfile """ + bb.event.fire(bb.event.BuildInit(), self.expanded_data) # Too many people use -b because they think it's how you normally # specify a target to be built, so show a warning @@ -1377,6 +1378,9 @@ class BBCooker: if not task.startswith("do_"): task = "do_%s" % task + packages = ["%s:%s" % (target, task) for target in targets] + bb.event.fire(bb.event.BuildInit(packages), self.expanded_data) + taskdata, runlist, fulltargetlist = self.buildTaskData(targets, task, self.configuration.abort) buildname = self.data.getVar("BUILDNAME", False) diff --git a/lib/bb/event.py b/lib/bb/event.py index a5f026e151f..1f3200e196e 100644 --- a/lib/bb/event.py +++ b/lib/bb/event.py @@ -382,7 +382,11 @@ class BuildBase(Event): - +class BuildInit(BuildBase): + """buildFile or buildTargets was invoked""" + def __init__(self, p=[]): + name = None + BuildBase.__init__(self, name, p) class BuildStarted(BuildBase, OperationStarted): """bbmake build run started"""