[dunfell,1.46,2/3] tinfoil: When sending commands we need to process events

Message ID f20da5247dea524e837c5b6fdeccc79cbafedf90.1638136822.git.steve@sakoman.com
State Accepted, archived
Commit f20da5247dea524e837c5b6fdeccc79cbafedf90
Headers show
Series [dunfell,1.46,1/3] command: Ensure exceptions inheriting from BBHandledException are visible | expand

Commit Message

Steve Sakoman Nov. 28, 2021, 10:02 p.m. UTC
From: Richard Purdie <richard.purdie@linuxfoundation.org>

The server may be displaying useful information for the user through log
messages so we should display anything that has been sent. Its either this
or expecting every UI to implement this code around every command call
which isn't good API.

[YOCTO #14054]

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 64ae9d7e2fad804dd9e12706c6d76b4b22f9586b)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
---
 lib/bb/tinfoil.py | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

Patch

diff --git a/lib/bb/tinfoil.py b/lib/bb/tinfoil.py
index 8c9b6b8c..ae690389 100644
--- a/lib/bb/tinfoil.py
+++ b/lib/bb/tinfoil.py
@@ -465,7 +465,16 @@  class Tinfoil:
         commandline = [command]
         if params:
             commandline.extend(params)
-        result = self.server_connection.connection.runCommand(commandline)
+        try:
+            result = self.server_connection.connection.runCommand(commandline)
+        finally:
+            while True:
+                event = self.wait_event()
+                if not event:
+                    break
+                if isinstance(event, logging.LogRecord):
+                    if event.taskpid == 0 or event.levelno > logging.INFO:
+                        self.logger.handle(event)
         if result[1]:
             raise TinfoilCommandFailed(result[1])
         return result[0]