summaryrefslogtreecommitdiffstats
path: root/lib/bb/server/process.py
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2014-03-09 10:02:50 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2014-03-09 18:58:49 -0700
commit74532a7cf8ccea8b85f1cda5d5bc23d2f3c72a08 (patch)
tree4c54e46f57d6b2e5b2b0f4289d7158d0e58b6477 /lib/bb/server/process.py
parentf547d6ec6cfd677d71fa96dd3c69823c00dc6c69 (diff)
downloadbitbake-contrib-74532a7cf8ccea8b85f1cda5d5bc23d2f3c72a08.tar.gz
server/process: Use the setFeatures command on the server instead of a manger
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>
Diffstat (limited to 'lib/bb/server/process.py')
-rw-r--r--lib/bb/server/process.py21
1 files changed, 8 insertions, 13 deletions
diff --git a/lib/bb/server/process.py b/lib/bb/server/process.py
index aa072020a..6db6a2326 100644
--- a/lib/bb/server/process.py
+++ b/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