From: Paul Eggleton Date: Thu, 23 Jun 2016 10:59:08 +0000 (+1200) Subject: knotty: add code to support showing progress for sstate object querying X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=070ae856da0715dbaf4c560c837ea796ffc29f00;p=thirdparty%2Fopenembedded%2Fopenembedded-core-contrib.git knotty: add code to support showing progress for sstate object querying Add support code on the BitBake side to allow sstate.bbclass in OpenEmbedded to report progress when it is checking for availability of artifacts from shared state mirrors. Part of the implementation for [YOCTO #5853]. Signed-off-by: Paul Eggleton Signed-off-by: Richard Purdie --- diff --git a/lib/bb/event.py b/lib/bb/event.py index 9b4a4f97b5d..a5f026e151f 100644 --- a/lib/bb/event.py +++ b/lib/bb/event.py @@ -647,6 +647,33 @@ class MetadataEvent(Event): self.type = eventtype self._localdata = eventdata +class ProcessStarted(Event): + """ + Generic process started event (usually part of the initial startup) + where further progress events will be delivered + """ + def __init__(self, processname, total): + Event.__init__(self) + self.processname = processname + self.total = total + +class ProcessProgress(Event): + """ + Generic process progress event (usually part of the initial startup) + """ + def __init__(self, processname, progress): + Event.__init__(self) + self.processname = processname + self.progress = progress + +class ProcessFinished(Event): + """ + Generic process finished event (usually part of the initial startup) + """ + def __init__(self, processname): + Event.__init__(self) + self.processname = processname + class SanityCheck(Event): """ Event to run sanity checks, either raise errors or generate events as return status. diff --git a/lib/bb/ui/knotty.py b/lib/bb/ui/knotty.py index 25135015006..6fdaafedb7b 100644 --- a/lib/bb/ui/knotty.py +++ b/lib/bb/ui/knotty.py @@ -90,7 +90,7 @@ class NonInteractiveProgress(object): self.msg = msg self.maxval = maxval - def start(self): + def start(self, update=True): self.fobj.write("%s..." % self.msg) self.fobj.flush() return self @@ -304,7 +304,7 @@ _evt_list = [ "bb.runqueue.runQueueExitWait", "bb.event.LogExecTTY", "logging.Lo "bb.event.MultipleProviders", "bb.event.NoProvider", "bb.runqueue.sceneQueueTaskStarted", "bb.runqueue.runQueueTaskStarted", "bb.runqueue.runQueueTaskFailed", "bb.runqueue.sceneQueueTaskFailed", "bb.event.BuildBase", "bb.build.TaskStarted", "bb.build.TaskSucceeded", "bb.build.TaskFailedSilent", - "bb.build.TaskProgress"] + "bb.build.TaskProgress", "bb.event.ProcessStarted", "bb.event.ProcessProgress", "bb.event.ProcessFinished"] def main(server, eventHandler, params, tf = TerminalFilter): @@ -579,6 +579,17 @@ def main(server, eventHandler, params, tf = TerminalFilter): if isinstance(event, bb.event.DepTreeGenerated): continue + if isinstance(event, bb.event.ProcessStarted): + parseprogress = new_progress(event.processname, event.total) + parseprogress.start(False) + continue + if isinstance(event, bb.event.ProcessProgress): + parseprogress.update(event.progress) + continue + if isinstance(event, bb.event.ProcessFinished): + parseprogress.finish() + continue + # ignore if isinstance(event, (bb.event.BuildBase, bb.event.MetadataEvent,