summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
authorRichard Purdie <rpurdie@linux.intel.com>2010-01-21 23:49:17 +0000
committerRichard Purdie <rpurdie@linux.intel.com>2010-01-21 23:49:17 +0000
commit5ebad0d500562a132067b423bb6711e8893f2859 (patch)
tree395567a09b82a0bf89331d32f927fbe77496ec79 /bitbake
parent5c62833766048b83c0d7ea9e77194b9ca6af7fb1 (diff)
downloadpoky-5ebad0d500562a132067b423bb6711e8893f2859.tar.gz
knotty: Improve task failure message handling using the uihelper code
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
Diffstat (limited to 'bitbake')
-rw-r--r--bitbake/lib/bb/runqueue.py10
-rw-r--r--bitbake/lib/bb/ui/knotty.py20
-rw-r--r--bitbake/lib/bb/ui/uihelper.py11
3 files changed, 31 insertions, 10 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py
index 1f9907b9d5..3a438894b8 100644
--- a/bitbake/lib/bb/runqueue.py
+++ b/bitbake/lib/bb/runqueue.py
@@ -1042,11 +1042,11 @@ class RunQueue:
1042 try: 1042 try:
1043 while self.stats.active > 0: 1043 while self.stats.active > 0:
1044 bb.event.fire(runQueueExitWait(self.stats.active), self.cfgData) 1044 bb.event.fire(runQueueExitWait(self.stats.active), self.cfgData)
1045 bb.msg.note(1, bb.msg.domain.RunQueue, "Waiting for %s active tasks to finish" % self.stats.active) 1045 #bb.msg.note(1, bb.msg.domain.RunQueue, "Waiting for %s active tasks to finish" % self.stats.active)
1046 tasknum = 1 1046 #tasknum = 1
1047 for k, v in self.build_pids.iteritems(): 1047 #for k, v in self.build_pids.iteritems():
1048 bb.msg.note(1, bb.msg.domain.RunQueue, "%s: %s (pid %s)" % (tasknum, self.get_user_idstring(v), k)) 1048 # bb.msg.note(1, bb.msg.domain.RunQueue, "%s: %s (pid %s)" % (tasknum, self.get_user_idstring(v), k))
1049 tasknum = tasknum + 1 1049 # tasknum = tasknum + 1
1050 result = os.waitpid(-1, os.WNOHANG) 1050 result = os.waitpid(-1, os.WNOHANG)
1051 if result[0] is 0 and result[1] is 0: 1051 if result[0] is 0 and result[1] is 0:
1052 return 1052 return
diff --git a/bitbake/lib/bb/ui/knotty.py b/bitbake/lib/bb/ui/knotty.py
index c69fd6ca64..7264c7916c 100644
--- a/bitbake/lib/bb/ui/knotty.py
+++ b/bitbake/lib/bb/ui/knotty.py
@@ -23,6 +23,9 @@ import os
23import sys 23import sys
24import itertools 24import itertools
25import xmlrpclib 25import xmlrpclib
26from bb import ui
27from bb.ui import uihelper
28
26 29
27parsespin = itertools.cycle( r'|/-\\' ) 30parsespin = itertools.cycle( r'|/-\\' )
28 31
@@ -32,6 +35,8 @@ def init(server, eventHandler):
32 includelogs = server.runCommand(["getVariable", "BBINCLUDELOGS"]) 35 includelogs = server.runCommand(["getVariable", "BBINCLUDELOGS"])
33 loglines = server.runCommand(["getVariable", "BBINCLUDELOGS_LINES"]) 36 loglines = server.runCommand(["getVariable", "BBINCLUDELOGS_LINES"])
34 37
38 helper = uihelper.BBUIHelper()
39
35 try: 40 try:
36 cmdline = server.runCommand(["getCmdLineAction"]) 41 cmdline = server.runCommand(["getCmdLineAction"])
37 #print cmdline 42 #print cmdline
@@ -53,6 +58,19 @@ def init(server, eventHandler):
53 if event is None: 58 if event is None:
54 continue 59 continue
55 #print event 60 #print event
61 helper.eventHandler(event)
62 if isinstance(event, bb.runqueue.runQueueExitWait):
63 if not shutdown:
64 shutdown = 1
65 if shutdown and helper.needUpdate:
66 activetasks, failedtasks = helper.getTasks()
67 if activetasks:
68 print "Waiting for %s active tasks to finish:" % len(activetasks)
69 tasknum = 1
70 for task in activetasks:
71 print "%s: %s (pid %s)" % (tasknum, activetasks[task]["title"], task)
72 tasknum = tasknum + 1
73
56 if isinstance(event, bb.msg.MsgPlain): 74 if isinstance(event, bb.msg.MsgPlain):
57 print event._message 75 print event._message
58 continue 76 continue
@@ -139,6 +157,8 @@ def init(server, eventHandler):
139 continue 157 continue
140 if isinstance(event, bb.runqueue.runQueueEvent): 158 if isinstance(event, bb.runqueue.runQueueEvent):
141 continue 159 continue
160 if isinstance(event, bb.runqueue.runQueueExitWait):
161 continue
142 if isinstance(event, bb.event.StampUpdate): 162 if isinstance(event, bb.event.StampUpdate):
143 continue 163 continue
144 if isinstance(event, bb.event.ConfigParsed): 164 if isinstance(event, bb.event.ConfigParsed):
diff --git a/bitbake/lib/bb/ui/uihelper.py b/bitbake/lib/bb/ui/uihelper.py
index 151ffc5854..698de03f0a 100644
--- a/bitbake/lib/bb/ui/uihelper.py
+++ b/bitbake/lib/bb/ui/uihelper.py
@@ -21,18 +21,18 @@ class BBUIHelper:
21 def __init__(self): 21 def __init__(self):
22 self.needUpdate = False 22 self.needUpdate = False
23 self.running_tasks = {} 23 self.running_tasks = {}
24 self.failed_tasks = {} 24 self.failed_tasks = []
25 25
26 def eventHandler(self, event): 26 def eventHandler(self, event):
27 if isinstance(event, bb.build.TaskStarted): 27 if isinstance(event, bb.build.TaskStarted):
28 self.running_tasks["%s %s\n" % (event._package, event._task)] = "" 28 self.running_tasks[event.pid] = { 'title' : "%s %s" % (event._package, event._task) }
29 self.needUpdate = True 29 self.needUpdate = True
30 if isinstance(event, bb.build.TaskSucceeded): 30 if isinstance(event, bb.build.TaskSucceeded):
31 del self.running_tasks["%s %s\n" % (event._package, event._task)] 31 del self.running_tasks[event.pid]
32 self.needUpdate = True 32 self.needUpdate = True
33 if isinstance(event, bb.build.TaskFailed): 33 if isinstance(event, bb.build.TaskFailed):
34 del self.running_tasks["%s %s\n" % (event._package, event._task)] 34 del self.running_tasks[event.pid]
35 self.failed_tasks["%s %s\n" % (event._package, event._task)] = "" 35 self.failed_tasks.append( { 'title' : "%s %s" % (event._package, event._task)})
36 self.needUpdate = True 36 self.needUpdate = True
37 37
38 # Add runqueue event handling 38 # Add runqueue event handling
@@ -46,4 +46,5 @@ class BBUIHelper:
46 # a = 1 46 # a = 1
47 47
48 def getTasks(self): 48 def getTasks(self):
49 self.needUpdate = False
49 return (self.running_tasks, self.failed_tasks) 50 return (self.running_tasks, self.failed_tasks)