]> code.ossystems Code Review - openembedded-core.git/commitdiff
knotty: Improve task failure message handling using the uihelper code
authorRichard Purdie <rpurdie@linux.intel.com>
Thu, 21 Jan 2010 23:49:17 +0000 (23:49 +0000)
committerRichard Purdie <rpurdie@linux.intel.com>
Thu, 21 Jan 2010 23:49:17 +0000 (23:49 +0000)
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
bitbake/lib/bb/runqueue.py
bitbake/lib/bb/ui/knotty.py
bitbake/lib/bb/ui/uihelper.py

index 1f9907b9d58f00c656db31c5fb9bdd1cd68d1c71..3a438894b84b43dc64e1d4b66990a791f15d8e78 100644 (file)
@@ -1042,11 +1042,11 @@ class RunQueue:
         try:
             while self.stats.active > 0:
                 bb.event.fire(runQueueExitWait(self.stats.active), self.cfgData)
-                bb.msg.note(1, bb.msg.domain.RunQueue, "Waiting for %s active tasks to finish" % self.stats.active)
-                tasknum = 1
-                for k, v in self.build_pids.iteritems():
-                    bb.msg.note(1, bb.msg.domain.RunQueue, "%s: %s (pid %s)" % (tasknum, self.get_user_idstring(v), k))
-                    tasknum = tasknum + 1
+                #bb.msg.note(1, bb.msg.domain.RunQueue, "Waiting for %s active tasks to finish" % self.stats.active)
+                #tasknum = 1
+                #for k, v in self.build_pids.iteritems():
+                #    bb.msg.note(1, bb.msg.domain.RunQueue, "%s: %s (pid %s)" % (tasknum, self.get_user_idstring(v), k))
+                #    tasknum = tasknum + 1
                 result = os.waitpid(-1, os.WNOHANG)
                 if result[0] is 0 and result[1] is 0:
                     return
index c69fd6ca64368560f3893fc5300fe3977a8decdf..7264c7916c82890c2a86b22bfee7a6a03a4fca6d 100644 (file)
@@ -23,6 +23,9 @@ import os
 import sys
 import itertools
 import xmlrpclib
+from bb import ui
+from bb.ui import uihelper
+
 
 parsespin = itertools.cycle( r'|/-\\' )
 
@@ -32,6 +35,8 @@ def init(server, eventHandler):
     includelogs = server.runCommand(["getVariable", "BBINCLUDELOGS"])
     loglines = server.runCommand(["getVariable", "BBINCLUDELOGS_LINES"])
 
+    helper = uihelper.BBUIHelper()
+
     try:
         cmdline = server.runCommand(["getCmdLineAction"])
         #print cmdline
@@ -53,6 +58,19 @@ def init(server, eventHandler):
             if event is None:
                 continue
             #print event
+            helper.eventHandler(event)
+            if isinstance(event, bb.runqueue.runQueueExitWait):
+                if not shutdown:
+                    shutdown = 1
+            if shutdown and helper.needUpdate:
+                activetasks, failedtasks = helper.getTasks()
+                if activetasks:
+                    print "Waiting for %s active tasks to finish:" % len(activetasks)
+                    tasknum = 1
+                    for task in activetasks:
+                        print "%s: %s (pid %s)" % (tasknum, activetasks[task]["title"], task)
+                        tasknum = tasknum + 1
+
             if isinstance(event, bb.msg.MsgPlain):
                 print event._message
                 continue
@@ -139,6 +157,8 @@ def init(server, eventHandler):
                 continue
             if isinstance(event, bb.runqueue.runQueueEvent):
                 continue
+            if isinstance(event, bb.runqueue.runQueueExitWait):
+                continue
             if isinstance(event, bb.event.StampUpdate):
                 continue
             if isinstance(event, bb.event.ConfigParsed):
index 151ffc5854e06de514a8d69ed6379fd8a123adbf..698de03f0a65f50b4354d9e4ffc3ba696914fe08 100644 (file)
@@ -21,18 +21,18 @@ class BBUIHelper:
     def __init__(self):
         self.needUpdate = False
         self.running_tasks = {}
-        self.failed_tasks = {}
+        self.failed_tasks = []
 
     def eventHandler(self, event):
         if isinstance(event, bb.build.TaskStarted):
-            self.running_tasks["%s %s\n" % (event._package, event._task)] = ""
+            self.running_tasks[event.pid] = { 'title' : "%s %s" % (event._package, event._task) }
             self.needUpdate = True
         if isinstance(event, bb.build.TaskSucceeded):
-            del self.running_tasks["%s %s\n" % (event._package, event._task)]
+            del self.running_tasks[event.pid]
             self.needUpdate = True
         if isinstance(event, bb.build.TaskFailed):
-            del self.running_tasks["%s %s\n" % (event._package, event._task)]
-            self.failed_tasks["%s %s\n" % (event._package, event._task)] = ""
+            del self.running_tasks[event.pid]
+            self.failed_tasks.append( { 'title' : "%s %s" % (event._package, event._task)})
             self.needUpdate = True
 
         # Add runqueue event handling
@@ -46,4 +46,5 @@ class BBUIHelper:
         #    a = 1
 
     def getTasks(self):
+        self.needUpdate = False
         return (self.running_tasks, self.failed_tasks)