[oe-commits] [bitbake] 02/03: bitbake: knotty: Treat verbconsole as a console output

git at git.openembedded.org git at git.openembedded.org
Thu Mar 12 22:53:07 UTC 2020


This is an automated email from the git hooks/post-receive script.

rpurdie pushed a commit to branch master-next
in repository bitbake.

commit 5a3234af144fcead97114737c9887caa54d0c403
Author: Joshua Watt <jpewhacker at gmail.com>
AuthorDate: Thu Mar 12 13:30:03 2020 -0500

    bitbake: knotty: Treat verbconsole as a console output
    
    The BitBake.verbconsole needs to be treated like a console output logger
    (meaning that the TerminalFilter attaches an InteractConsoleLogFilter to
    it), even if it's not directly attached to the root 'BitBake' logger.
    First, assign a special "is_console" property to the relevant handlers,
    then look for the property in the handlers from the configuration object
    return by bb.msg.setLoggingConfig(). Finally, pass the list of all
    handlers to the TerminalFilter object; it doesn't care about the
    difference between console and errconsole, so pass all the relevant
    handlers as a list.
    
    This fixes cases where the console output was corrupted when messages
    were sent to the 'BitBake.verbconsole' handler.
    
    Signed-off-by: Joshua Watt <JPEWhacker at gmail.com>
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 lib/bb/ui/knotty.py | 40 ++++++++++++++++++----------------------
 1 file changed, 18 insertions(+), 22 deletions(-)

diff --git a/lib/bb/ui/knotty.py b/lib/bb/ui/knotty.py
index 24b7a77..826aa8c 100644
--- a/lib/bb/ui/knotty.py
+++ b/lib/bb/ui/knotty.py
@@ -149,7 +149,7 @@ class TerminalFilter(object):
                 cr = (25, 80)
         return cr
 
-    def __init__(self, main, helper, console, errconsole, quiet):
+    def __init__(self, main, helper, handlers, quiet):
         self.main = main
         self.helper = helper
         self.cuu = None
@@ -179,14 +179,9 @@ class TerminalFilter(object):
             termios.tcsetattr(fd, termios.TCSADRAIN, new)
             curses.setupterm()
             if curses.tigetnum("colors") > 2:
-                if console:
+                for h in handlers:
                     try:
-                        console.formatter.enable_color()
-                    except AttributeError:
-                        pass
-                if errconsole:
-                    try:
-                        errconsole.formatter.enable_color()
+                        h.formatter.enable_color()
                     except AttributeError:
                         pass
             self.ed = curses.tigetstr("ed")
@@ -204,10 +199,9 @@ class TerminalFilter(object):
             self.interactive = False
             bb.note("Unable to use interactive mode for this terminal, using fallback")
             return
-        if console:
-            console.addFilter(InteractConsoleLogFilter(self))
-        if errconsole:
-            errconsole.addFilter(InteractConsoleLogFilter(self))
+
+        for h in handlers:
+            h.addFilter(InteractConsoleLogFilter(self))
 
         self.main_progress = None
 
@@ -411,6 +405,9 @@ def main(server, eventHandler, params, tf = TerminalFilter):
                 "level": console_loglevel,
                 "stream": "ext://sys.stdout",
                 "filters": ["BitBake.stdoutFilter"],
+                ".": {
+                    "is_console": True,
+                },
             },
             "BitBake.errconsole": {
                 "class": "logging.StreamHandler",
@@ -418,6 +415,9 @@ def main(server, eventHandler, params, tf = TerminalFilter):
                 "level": loglevel,
                 "stream": "ext://sys.stderr",
                 "filters": ["BitBake.stderrFilter"],
+                ".": {
+                    "is_console": True,
+                },
             },
             # This handler can be used if specific loggers should print on
             # the console at a lower severity than the default. It will
@@ -430,6 +430,9 @@ def main(server, eventHandler, params, tf = TerminalFilter):
                 "level": 1,
                 "stream": "ext://sys.stdout",
                 "filters": ["BitBake.verbconsoleFilter"],
+                ".": {
+                    "is_console": True,
+                },
             },
         },
         "formatters": {
@@ -523,7 +526,7 @@ def main(server, eventHandler, params, tf = TerminalFilter):
         except OSError:
            pass
 
-    bb.msg.setLoggingConfig(logconfig, logconfigfile)
+    conf = bb.msg.setLoggingConfig(logconfig, logconfigfile)
 
     if sys.stdin.isatty() and sys.stdout.isatty():
         log_exec_tty = True
@@ -534,14 +537,7 @@ def main(server, eventHandler, params, tf = TerminalFilter):
 
     # Look for the specially designated handlers which need to be passed to the
     # terminal handler
-    console = None
-    errconsole = None
-    for h in logger.handlers:
-        name = getattr(h, '_name', None)
-        if name == 'BitBake.console':
-            console = h
-        elif name == 'BitBake.errconsole':
-            errconsole = h
+    console_handlers = [h for h in conf.config['handlers'].values() if getattr(h, 'is_console', False)]
 
     bb.utils.set_process_name("KnottyUI")
 
@@ -591,7 +587,7 @@ def main(server, eventHandler, params, tf = TerminalFilter):
     printinterval = 5000
     lastprint = time.time()
 
-    termfilter = tf(main, helper, console, errconsole, params.options.quiet)
+    termfilter = tf(main, helper, console_handlers, params.options.quiet)
     atexit.register(termfilter.finish)
 
     while True:

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list