* [PATCH] server/process: Use the setFeatures command on the server instead of a manger
@ 2014-03-09 17:02 Richard Purdie
0 siblings, 0 replies; only message in thread
From: Richard Purdie @ 2014-03-09 17:02 UTC (permalink / raw)
To: bitbake-devel
The use of a manager in the process server causes some issues since it remains
around for the lifetime of the server even though its only used during
initialisation and the system doesn't respond well to SIGTERM events
to the extra process (and two threads) the implementation involves.
Switching to a dedicated command simplifies the server process structure.
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
---
diff --git a/bitbake/lib/bb/server/process.py b/bitbake/lib/bb/server/process.py
index aa07202..6db6a23 100644
--- a/bitbake/lib/bb/server/process.py
+++ b/bitbake/lib/bb/server/process.py
@@ -80,7 +80,7 @@ class ProcessServer(Process, BaseImplServer):
def __init__(self, command_channel, event_queue, featurelist):
BaseImplServer.__init__(self)
- Process.__init__(self, args=(featurelist))
+ Process.__init__(self)
self.command_channel = command_channel
self.event_queue = event_queue
self.event = EventAdapter(event_queue)
@@ -96,13 +96,6 @@ class ProcessServer(Process, BaseImplServer):
self.event_queue.put(event)
self.event_handle.value = bb.event.register_UIHhandler(self)
- # process any feature changes based on what UI requested
- original_featureset = list(self.cooker.featureset)
- while len(self.featurelist)> 0:
- self.cooker.featureset.setFeature(self.featurelist.pop())
- if (original_featureset != list(self.cooker.featureset)):
- self.cooker.reset()
-
bb.cooker.server_main(self.cooker, self.main)
def main(self):
@@ -207,17 +200,19 @@ class BitBakeServer(BitBakeBaseServer):
#
self.ui_channel, self.server_channel = Pipe()
self.event_queue = ProcessEventQueue(0)
- manager = Manager()
- self.featurelist = manager.list()
- self.serverImpl = ProcessServer(self.server_channel, self.event_queue, self.featurelist)
+ self.serverImpl = ProcessServer(self.server_channel, self.event_queue, None)
def detach(self):
self.serverImpl.start()
return
def establishConnection(self, featureset):
- for f in featureset:
- self.featurelist.append(f)
+
self.connection = BitBakeProcessServerConnection(self.serverImpl, self.ui_channel, self.event_queue)
+
+ _, error = self.connection.connection.runCommand(["setFeatures", featureset])
+ if error:
+ logger.error("Unable to set the cooker to the correct featureset: %s" % error)
+ raise BaseException(error)
signal.signal(signal.SIGTERM, lambda i, s: self.connection.terminate())
return self.connection
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2014-03-09 17:03 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-03-09 17:02 [PATCH] server/process: Use the setFeatures command on the server instead of a manger Richard Purdie
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.