Patchwork [bitbake-devel] bitbake/knotty: Show summary of warning/error messages shown

login
register
mail settings
Submitter Richard Purdie
Date Jan. 9, 2012, 5 p.m.
Message ID <1326128453.9278.23.camel@ted>
Download mbox | patch
Permalink /patch/18799/
State New
Headers show

Comments

Richard Purdie - Jan. 9, 2012, 5 p.m.
Show a summary count of warning/errors messages shown to the user during the
build and make it clear when an error exit code is being set.

[YOCTO #1540]

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
---
Chris Larson - Jan. 10, 2012, 4:55 p.m.
On Mon, Jan 9, 2012 at 10:00 AM, Richard Purdie
<richard.purdie@linuxfoundation.org> wrote:
> Show a summary count of warning/errors messages shown to the user during the
> build and make it clear when an error exit code is being set.
>
> [YOCTO #1540]
>
> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>

This is a nice start, good idea. For the future, I think we should
consider gathering up warning/error messages themselves and showing a
summary of the problems seen at the end, rather than just a count. The
problem there would be keeping sufficient context (e.g. task
associated with the message).

Patch

diff --git a/bitbake/lib/bb/ui/knotty.py b/bitbake/lib/bb/ui/knotty.py
index 38acb47..0340619 100644
--- a/bitbake/lib/bb/ui/knotty.py
+++ b/bitbake/lib/bb/ui/knotty.py
@@ -105,6 +105,8 @@  def main(server, eventHandler):
     cacheprogress = None
     shutdown = 0
     return_value = 0
+    errors = 0
+    warnings = 0
     while True:
         try:
             event = eventHandler.waitEvent(0.25)
@@ -123,13 +125,15 @@  def main(server, eventHandler):
 
             if isinstance(event, logging.LogRecord):
                 if event.levelno >= format.ERROR:
+                    errors = errors + 1
                     return_value = 1
+                if event.levelno >= format.WARNING:
+                    warnings = warnings + 1
                 # For "normal" logging conditions, don't show note logs from tasks
                 # but do show them if the user has changed the default log level to 
                 # include verbose/debug messages
-                #if logger.getEffectiveLevel() > format.VERBOSE:
                 if event.taskpid != 0 and event.levelno <= format.NOTE:
-                        continue
+                    continue
                 logger.handle(event)
                 continue
 
@@ -208,6 +212,7 @@  def main(server, eventHandler):
                 continue
             if isinstance(event, bb.event.NoProvider):
                 return_value = 1
+                errors = errors + 1
                 if event._runtime:
                     r = "R"
                 else:
@@ -267,4 +272,8 @@  def main(server, eventHandler):
                 server.runCommand(["stateShutdown"])
             shutdown = shutdown + 1
             pass
+    if warnings:
+        print("Summary: There were %s WARNING messages shown.\n" % warnings)
+    if return_value:
+        print("Summary: There were %s ERROR messages shown, returning a non-zero exit code.\n" % errors)
     return return_value