diff options
Diffstat (limited to 'bitbake')
-rw-r--r-- | bitbake/lib/bb/command.py | 7 | ||||
-rw-r--r-- | bitbake/lib/bb/event.py | 17 | ||||
-rw-r--r-- | bitbake/lib/bb/server/process.py | 12 | ||||
-rw-r--r-- | bitbake/lib/bb/server/xmlrpc.py | 6 | ||||
-rw-r--r-- | bitbake/lib/bb/ui/knotty.py | 12 |
5 files changed, 46 insertions, 8 deletions
diff --git a/bitbake/lib/bb/command.py b/bitbake/lib/bb/command.py index 33a24406b5..bdf1c36636 100644 --- a/bitbake/lib/bb/command.py +++ b/bitbake/lib/bb/command.py | |||
@@ -240,6 +240,13 @@ class CommandsSync: | |||
240 | name = params[0] | 240 | name = params[0] |
241 | command.cooker.createConfigFile(name) | 241 | command.cooker.createConfigFile(name) |
242 | 242 | ||
243 | def setEventMask(self, command, params): | ||
244 | handlerNum = params[0] | ||
245 | llevel = params[1] | ||
246 | debug_domains = params[2] | ||
247 | mask = params[3] | ||
248 | return bb.event.set_UIHmask(handlerNum, llevel, debug_domains, mask) | ||
249 | |||
243 | class CommandsAsync: | 250 | class CommandsAsync: |
244 | """ | 251 | """ |
245 | A class of asynchronous commands | 252 | A class of asynchronous commands |
diff --git a/bitbake/lib/bb/event.py b/bitbake/lib/bb/event.py index 8ffd2c3e18..1169cbfb2b 100644 --- a/bitbake/lib/bb/event.py +++ b/bitbake/lib/bb/event.py | |||
@@ -193,7 +193,7 @@ def register(name, handler, mask=[]): | |||
193 | else: | 193 | else: |
194 | _handlers[name] = handler | 194 | _handlers[name] = handler |
195 | 195 | ||
196 | if not mask: | 196 | if not mask or '*' in mask: |
197 | _catchall_handlers[name] = True | 197 | _catchall_handlers[name] = True |
198 | else: | 198 | else: |
199 | for m in mask: | 199 | for m in mask: |
@@ -225,7 +225,7 @@ class UIEventFilter(object): | |||
225 | self.update(None, level, debug_domains) | 225 | self.update(None, level, debug_domains) |
226 | 226 | ||
227 | def update(self, eventmask, level, debug_domains): | 227 | def update(self, eventmask, level, debug_domains): |
228 | self.eventmask = None | 228 | self.eventmask = eventmask |
229 | self.stdlevel = level | 229 | self.stdlevel = level |
230 | self.debug_domains = debug_domains | 230 | self.debug_domains = debug_domains |
231 | 231 | ||
@@ -236,9 +236,20 @@ class UIEventFilter(object): | |||
236 | if event.name in self.debug_domains and event.levelno >= self.debug_domains[event.name]: | 236 | if event.name in self.debug_domains and event.levelno >= self.debug_domains[event.name]: |
237 | return True | 237 | return True |
238 | return False | 238 | return False |
239 | # Implement other event masking here on self.eventmask | 239 | eid = str(event.__class__)[8:-2] |
240 | if eid not in self.eventmask: | ||
241 | return False | ||
240 | return True | 242 | return True |
241 | 243 | ||
244 | def set_UIHmask(handlerNum, level, debug_domains, mask): | ||
245 | if not handlerNum in _ui_handlers: | ||
246 | return False | ||
247 | if '*' in mask: | ||
248 | _ui_logfilters[handlerNum].update(None, level, debug_domains) | ||
249 | else: | ||
250 | _ui_logfilters[handlerNum].update(mask, level, debug_domains) | ||
251 | return True | ||
252 | |||
242 | def getName(e): | 253 | def getName(e): |
243 | """Returns the name of a class or class instance""" | 254 | """Returns the name of a class or class instance""" |
244 | if getattr(e, "__name__", None) == None: | 255 | if getattr(e, "__name__", None) == None: |
diff --git a/bitbake/lib/bb/server/process.py b/bitbake/lib/bb/server/process.py index 99a6bf55cc..e2cec49b74 100644 --- a/bitbake/lib/bb/server/process.py +++ b/bitbake/lib/bb/server/process.py | |||
@@ -37,8 +37,9 @@ from . import BitBakeBaseServer, BitBakeBaseServerConnection, BaseImplServer | |||
37 | logger = logging.getLogger('BitBake') | 37 | logger = logging.getLogger('BitBake') |
38 | 38 | ||
39 | class ServerCommunicator(): | 39 | class ServerCommunicator(): |
40 | def __init__(self, connection): | 40 | def __init__(self, connection, event_handle): |
41 | self.connection = connection | 41 | self.connection = connection |
42 | self.event_handle = event_handle | ||
42 | 43 | ||
43 | def runCommand(self, command): | 44 | def runCommand(self, command): |
44 | # @todo try/except | 45 | # @todo try/except |
@@ -54,6 +55,8 @@ class ServerCommunicator(): | |||
54 | except KeyboardInterrupt: | 55 | except KeyboardInterrupt: |
55 | pass | 56 | pass |
56 | 57 | ||
58 | def getEventHandle(self): | ||
59 | return self.event_handle.value | ||
57 | 60 | ||
58 | class EventAdapter(): | 61 | class EventAdapter(): |
59 | """ | 62 | """ |
@@ -84,11 +87,12 @@ class ProcessServer(Process, BaseImplServer): | |||
84 | 87 | ||
85 | self.keep_running = Event() | 88 | self.keep_running = Event() |
86 | self.keep_running.set() | 89 | self.keep_running.set() |
90 | self.event_handle = multiprocessing.Value("i") | ||
87 | 91 | ||
88 | def run(self): | 92 | def run(self): |
89 | for event in bb.event.ui_queue: | 93 | for event in bb.event.ui_queue: |
90 | self.event_queue.put(event) | 94 | self.event_queue.put(event) |
91 | self.event_handle = bb.event.register_UIHhandler(self) | 95 | self.event_handle.value = bb.event.register_UIHhandler(self) |
92 | bb.cooker.server_main(self.cooker, self.main) | 96 | bb.cooker.server_main(self.cooker, self.main) |
93 | 97 | ||
94 | def main(self): | 98 | def main(self): |
@@ -106,7 +110,7 @@ class ProcessServer(Process, BaseImplServer): | |||
106 | logger.exception('Running command %s', command) | 110 | logger.exception('Running command %s', command) |
107 | 111 | ||
108 | self.event_queue.close() | 112 | self.event_queue.close() |
109 | bb.event.unregister_UIHhandler(self.event_handle) | 113 | bb.event.unregister_UIHhandler(self.event_handle.value) |
110 | self.command_channel.close() | 114 | self.command_channel.close() |
111 | self.cooker.stop() | 115 | self.cooker.stop() |
112 | self.idle_commands(.1) | 116 | self.idle_commands(.1) |
@@ -147,7 +151,7 @@ class BitBakeProcessServerConnection(BitBakeBaseServerConnection): | |||
147 | self.procserver = serverImpl | 151 | self.procserver = serverImpl |
148 | self.ui_channel = ui_channel | 152 | self.ui_channel = ui_channel |
149 | self.event_queue = event_queue | 153 | self.event_queue = event_queue |
150 | self.connection = ServerCommunicator(self.ui_channel) | 154 | self.connection = ServerCommunicator(self.ui_channel, self.procserver.event_handle) |
151 | self.events = self.event_queue | 155 | self.events = self.event_queue |
152 | 156 | ||
153 | def terminate(self): | 157 | def terminate(self): |
diff --git a/bitbake/lib/bb/server/xmlrpc.py b/bitbake/lib/bb/server/xmlrpc.py index d290550e9f..4dee5d9fea 100644 --- a/bitbake/lib/bb/server/xmlrpc.py +++ b/bitbake/lib/bb/server/xmlrpc.py | |||
@@ -95,7 +95,8 @@ class BitBakeServerCommands(): | |||
95 | """ | 95 | """ |
96 | s, t = _create_server(host, port) | 96 | s, t = _create_server(host, port) |
97 | 97 | ||
98 | return bb.event.register_UIHhandler(s) | 98 | self.event_handle = bb.event.register_UIHhandler(s) |
99 | return self.event_handle | ||
99 | 100 | ||
100 | def unregisterEventHandler(self, handlerNum): | 101 | def unregisterEventHandler(self, handlerNum): |
101 | """ | 102 | """ |
@@ -109,6 +110,9 @@ class BitBakeServerCommands(): | |||
109 | """ | 110 | """ |
110 | return self.cooker.command.runCommand(command, self.server.readonly) | 111 | return self.cooker.command.runCommand(command, self.server.readonly) |
111 | 112 | ||
113 | def getEventHandle(self): | ||
114 | return self.event_handle | ||
115 | |||
112 | def terminateServer(self): | 116 | def terminateServer(self): |
113 | """ | 117 | """ |
114 | Trigger the server to quit | 118 | Trigger the server to quit |
diff --git a/bitbake/lib/bb/ui/knotty.py b/bitbake/lib/bb/ui/knotty.py index 09ad99ebe8..1692e3295c 100644 --- a/bitbake/lib/bb/ui/knotty.py +++ b/bitbake/lib/bb/ui/knotty.py | |||
@@ -232,6 +232,15 @@ def _log_settings_from_server(server): | |||
232 | raise BaseException(error) | 232 | raise BaseException(error) |
233 | return includelogs, loglines, consolelogfile | 233 | return includelogs, loglines, consolelogfile |
234 | 234 | ||
235 | _evt_list = [ "bb.runqueue.runQueueExitWait", "bb.event.LogExecTTY", "logging.LogRecord", | ||
236 | "bb.build.TaskFailed", "bb.build.TaskBase", "bb.event.ParseStarted", | ||
237 | "bb.event.ParseProgress", "bb.event.ParseCompleted", "bb.event.CacheLoadStarted", | ||
238 | "bb.event.CacheLoadProgress", "bb.event.CacheLoadCompleted", "bb.command.CommandFailed", | ||
239 | "bb.command.CommandExit", "bb.command.CommandCompleted", "bb.cooker.CookerExit", | ||
240 | "bb.event.MultipleProviders", "bb.event.NoProvider", "bb.runqueue.sceneQueueTaskStarted", | ||
241 | "bb.runqueue.runQueueTaskStarted", "bb.runqueue.runQueueTaskFailed", "bb.runqueue.sceneQueueTaskFailed", | ||
242 | "bb.event.BuildBase", "bb.build.TaskStarted", "bb.build.TaskSucceeded", "bb.build.TaskFailedSilent"] | ||
243 | |||
235 | def main(server, eventHandler, params, tf = TerminalFilter): | 244 | def main(server, eventHandler, params, tf = TerminalFilter): |
236 | 245 | ||
237 | includelogs, loglines, consolelogfile = _log_settings_from_server(server) | 246 | includelogs, loglines, consolelogfile = _log_settings_from_server(server) |
@@ -262,6 +271,9 @@ def main(server, eventHandler, params, tf = TerminalFilter): | |||
262 | consolelog.setFormatter(conlogformat) | 271 | consolelog.setFormatter(conlogformat) |
263 | logger.addHandler(consolelog) | 272 | logger.addHandler(consolelog) |
264 | 273 | ||
274 | llevel, debug_domains = bb.msg.constructLogOptions() | ||
275 | server.runCommand(["setEventMask", server.getEventHandle(), llevel, debug_domains, _evt_list]) | ||
276 | |||
265 | if not params.observe_only: | 277 | if not params.observe_only: |
266 | params.updateFromServer(server) | 278 | params.updateFromServer(server) |
267 | cmdline = params.parseActions() | 279 | cmdline = params.parseActions() |