Cooker commands and the arguments passed to them are currently inaccessible to UI components which may need that data. For example, knowing the targets passed on the command line could enable a UI to show the targets in cases where the build failed due to an invalid target.
Add events to Command which are fired just before a sync or async command is started, containing data about the command which is going to run and its arguments. Add the new event to knotty's event mask to avoid seeing "Unknown event" errors when bitbake is run on the command line. Signed-off-by: Elliot Smith <[email protected]> --- bitbake/lib/bb/command.py | 7 +++++++ bitbake/lib/bb/ui/knotty.py | 10 ++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/bitbake/lib/bb/command.py b/bitbake/lib/bb/command.py index 74106d1..3f3a7a7 100644 --- a/bitbake/lib/bb/command.py +++ b/bitbake/lib/bb/command.py @@ -31,6 +31,11 @@ Commands are queued in a CommandQueue import bb.event import bb.cooker +class CommandExecution(bb.event.Event): + def __init__(self, command, commandline): + self.command = command + self.commandline = commandline + class CommandCompleted(bb.event.Event): pass @@ -70,6 +75,7 @@ class Command: try: if getattr(command_method, 'needconfig', False): self.cooker.updateCacheSync() + bb.event.fire(CommandExecution(command, commandline), self.cooker.expanded_data) result = command_method(self, commandline) except CommandError as exc: return None, exc.args[0] @@ -101,6 +107,7 @@ class Command: self.cooker.updateCache() return True else: + bb.event.fire(CommandExecution(command, options), self.cooker.expanded_data) commandmethod(self.cmds_async, self, options) return False else: diff --git a/bitbake/lib/bb/ui/knotty.py b/bitbake/lib/bb/ui/knotty.py index a8b968c..335e6f9 100644 --- a/bitbake/lib/bb/ui/knotty.py +++ b/bitbake/lib/bb/ui/knotty.py @@ -245,9 +245,10 @@ _evt_list = [ "bb.runqueue.runQueueExitWait", "bb.event.LogExecTTY", "logging.Lo "bb.build.TaskFailed", "bb.build.TaskBase", "bb.event.ParseStarted", "bb.event.ParseProgress", "bb.event.ParseCompleted", "bb.event.CacheLoadStarted", "bb.event.CacheLoadProgress", "bb.event.CacheLoadCompleted", "bb.command.CommandFailed", - "bb.command.CommandExit", "bb.command.CommandCompleted", "bb.cooker.CookerExit", - "bb.event.MultipleProviders", "bb.event.NoProvider", "bb.runqueue.sceneQueueTaskStarted", - "bb.runqueue.runQueueTaskStarted", "bb.runqueue.runQueueTaskFailed", "bb.runqueue.sceneQueueTaskFailed", + "bb.command.CommandExit", "bb.command.CommandCompleted", "bb.cooker.CommandExecution", + "bb.cooker.CookerExit", "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"] def main(server, eventHandler, params, tf = TerminalFilter): @@ -514,7 +515,8 @@ def main(server, eventHandler, params, tf = TerminalFilter): bb.event.OperationStarted, bb.event.OperationCompleted, bb.event.OperationProgress, - bb.event.DiskFull)): + bb.event.DiskFull, + bb.command.CommandExecution)): continue logger.error("Unknown event: %s", event) -- Elliot Smith Software Engineer Intel OTC --------------------------------------------------------------------- Intel Corporation (UK) Limited Registered No. 1134945 (England) Registered Office: Pipers Way, Swindon SN3 1RJ VAT No: 860 2173 47 This e-mail and any attachments may contain confidential material for the sole use of the intended recipient(s). Any review or distribution by others is strictly prohibited. If you are not the intended recipient, please contact the sender and delete all copies. -- _______________________________________________ toaster mailing list [email protected] https://lists.yoctoproject.org/listinfo/toaster
