summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake')
-rw-r--r--bitbake/lib/bb/command.py7
-rw-r--r--bitbake/lib/bb/event.py17
-rw-r--r--bitbake/lib/bb/server/process.py12
-rw-r--r--bitbake/lib/bb/server/xmlrpc.py6
-rw-r--r--bitbake/lib/bb/ui/knotty.py12
5 files changed, 46 insertions, 8 deletions
diff --git a/bitbake/lib/bb/command.py b/bitbake/lib/bb/command.py
index 33a2440..bdf1c36 100644
--- a/bitbake/lib/bb/command.py
+++ b/bitbake/lib/bb/command.py
@@ -240,6 +240,13 @@ class CommandsSync:
name = params[0]
command.cooker.createConfigFile(name)
+ def setEventMask(self, command, params):
+ handlerNum = params[0]
+ llevel = params[1]
+ debug_domains = params[2]
+ mask = params[3]
+ return bb.event.set_UIHmask(handlerNum, llevel, debug_domains, mask)
+
class CommandsAsync:
"""
A class of asynchronous commands
diff --git a/bitbake/lib/bb/event.py b/bitbake/lib/bb/event.py
index 8ffd2c3..1169cbf 100644
--- a/bitbake/lib/bb/event.py
+++ b/bitbake/lib/bb/event.py
@@ -193,7 +193,7 @@ def register(name, handler, mask=[]):
else:
_handlers[name] = handler
- if not mask:
+ if not mask or '*' in mask:
_catchall_handlers[name] = True
else:
for m in mask:
@@ -225,7 +225,7 @@ class UIEventFilter(object):
self.update(None, level, debug_domains)
def update(self, eventmask, level, debug_domains):
- self.eventmask = None
+ self.eventmask = eventmask
self.stdlevel = level
self.debug_domains = debug_domains
@@ -236,9 +236,20 @@ class UIEventFilter(object):
if event.name in self.debug_domains and event.levelno >= self.debug_domains[event.name]:
return True
return False
- # Implement other event masking here on self.eventmask
+ eid = str(event.__class__)[8:-2]
+ if eid not in self.eventmask:
+ return False
return True
+def set_UIHmask(handlerNum, level, debug_domains, mask):
+ if not handlerNum in _ui_handlers:
+ return False
+ if '*' in mask:
+ _ui_logfilters[handlerNum].update(None, level, debug_domains)
+ else:
+ _ui_logfilters[handlerNum].update(mask, level, debug_domains)
+ return True
+
def getName(e):
"""Returns the name of a class or class instance"""
if getattr(e, "__name__", None) == None:
diff --git a/bitbake/lib/bb/server/process.py b/bitbake/lib/bb/server/process.py
index 99a6bf5..e2cec49 100644
--- a/bitbake/lib/bb/server/process.py
+++ b/bitbake/lib/bb/server/process.py
@@ -37,8 +37,9 @@ from . import BitBakeBaseServer, BitBakeBaseServerConnection, BaseImplServer
logger = logging.getLogger('BitBake')
class ServerCommunicator():
- def __init__(self, connection):
+ def __init__(self, connection, event_handle):
self.connection = connection
+ self.event_handle = event_handle
def runCommand(self, command):
# @todo try/except
@@ -54,6 +55,8 @@ class ServerCommunicator():
except KeyboardInterrupt:
pass
+ def getEventHandle(self):
+ return self.event_handle.value
class EventAdapter():
"""
@@ -84,11 +87,12 @@ class ProcessServer(Process, BaseImplServer):
self.keep_running = Event()
self.keep_running.set()
+ self.event_handle = multiprocessing.Value("i")
def run(self):
for event in bb.event.ui_queue:
self.event_queue.put(event)
- self.event_handle = bb.event.register_UIHhandler(self)
+ self.event_handle.value = bb.event.register_UIHhandler(self)
bb.cooker.server_main(self.cooker, self.main)
def main(self):
@@ -106,7 +110,7 @@ class ProcessServer(Process, BaseImplServer):
logger.exception('Running command %s', command)
self.event_queue.close()
- bb.event.unregister_UIHhandler(self.event_handle)
+ bb.event.unregister_UIHhandler(self.event_handle.value)
self.command_channel.close()
self.cooker.stop()
self.idle_commands(.1)
@@ -147,7 +151,7 @@ class BitBakeProcessServerConnection(BitBakeBaseServerConnection):
self.procserver = serverImpl
self.ui_channel = ui_channel
self.event_queue = event_queue
- self.connection = ServerCommunicator(self.ui_channel)
+ self.connection = ServerCommunicator(self.ui_channel, self.procserver.event_handle)
self.events = self.event_queue
def terminate(self):
diff --git a/bitbake/lib/bb/server/xmlrpc.py b/bitbake/lib/bb/server/xmlrpc.py
index d290550..4dee5d9 100644
--- a/bitbake/lib/bb/server/xmlrpc.py
+++ b/bitbake/lib/bb/server/xmlrpc.py
@@ -95,7 +95,8 @@ class BitBakeServerCommands():
"""
s, t = _create_server(host, port)
- return bb.event.register_UIHhandler(s)
+ self.event_handle = bb.event.register_UIHhandler(s)
+ return self.event_handle
def unregisterEventHandler(self, handlerNum):
"""
@@ -109,6 +110,9 @@ class BitBakeServerCommands():
"""
return self.cooker.command.runCommand(command, self.server.readonly)
+ def getEventHandle(self):
+ return self.event_handle
+
def terminateServer(self):
"""
Trigger the server to quit
diff --git a/bitbake/lib/bb/ui/knotty.py b/bitbake/lib/bb/ui/knotty.py
index 09ad99e..1692e32 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):
raise BaseException(error)
return includelogs, loglines, consolelogfile
+_evt_list = [ "bb.runqueue.runQueueExitWait", "bb.event.LogExecTTY", "logging.LogRecord",
+ "bb.build.TaskFailed", "bb.build.TaskBase", "bb.event.ParseStarted",
+ "bb.event.ParseProgress", "bb.event.ParseCompleted", "bb.event.CacheLoadStarted",
+ "bb.event.CacheLoadProgress", "bb.event.CacheLoadCompleted", "bb.command.CommandFailed",
+ "bb.command.CommandExit", "bb.command.CommandCompleted", "bb.cooker.CookerExit",
+ "bb.event.MultipleProviders", "bb.event.NoProvider", "bb.runqueue.sceneQueueTaskStarted",
+ "bb.runqueue.runQueueTaskStarted", "bb.runqueue.runQueueTaskFailed", "bb.runqueue.sceneQueueTaskFailed",
+ "bb.event.BuildBase", "bb.build.TaskStarted", "bb.build.TaskSucceeded", "bb.build.TaskFailedSilent"]
+
def main(server, eventHandler, params, tf = TerminalFilter):
includelogs, loglines, consolelogfile = _log_settings_from_server(server)
@@ -262,6 +271,9 @@ def main(server, eventHandler, params, tf = TerminalFilter):
consolelog.setFormatter(conlogformat)
logger.addHandler(consolelog)
+ llevel, debug_domains = bb.msg.constructLogOptions()
+ server.runCommand(["setEventMask", server.getEventHandle(), llevel, debug_domains, _evt_list])
+
if not params.observe_only:
params.updateFromServer(server)
cmdline = params.parseActions()
OpenPOWER on IntegriCloud