summaryrefslogtreecommitdiffstats
path: root/bitbake/lib
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2011-06-08 09:34:12 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2011-06-08 11:37:26 +0100
commitcd3c4292e7ccc8934f229fcf010f8615398b87b5 (patch)
tree0c9cbf81048e4b44bc613f78cd6d59f0d9400b2e /bitbake/lib
parente386fe4542865119ae7e1574e260c037e926239e (diff)
downloadast2050-yocto-poky-cd3c4292e7ccc8934f229fcf010f8615398b87b5.zip
ast2050-yocto-poky-cd3c4292e7ccc8934f229fcf010f8615398b87b5.tar.gz
bitbake: Cleanup bitbake server init process to be clearer to follow
Create a standard format server class instance with method calls for each step in the server setup. There should be enough hooks for each of the different server types. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib')
-rw-r--r--bitbake/lib/bb/command.py2
-rw-r--r--bitbake/lib/bb/cooker.py11
-rw-r--r--bitbake/lib/bb/server/none.py59
-rw-r--r--bitbake/lib/bb/server/xmlrpc.py50
4 files changed, 78 insertions, 44 deletions
diff --git a/bitbake/lib/bb/command.py b/bitbake/lib/bb/command.py
index e83751a..9841e68 100644
--- a/bitbake/lib/bb/command.py
+++ b/bitbake/lib/bb/command.py
@@ -82,7 +82,7 @@ class Command:
if command not in CommandsAsync.__dict__:
return "No such command"
self.currentAsyncCommand = (command, commandline)
- self.cooker.server.register_idle_function(self.cooker.runCommands, self.cooker)
+ self.cooker.server_registration_cb(self.cooker.runCommands, self.cooker)
return True
except:
import traceback
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
index 8379d0c..94495e1 100644
--- a/bitbake/lib/bb/cooker.py
+++ b/bitbake/lib/bb/cooker.py
@@ -63,12 +63,11 @@ class BBCooker:
Manages one bitbake build run
"""
- def __init__(self, configuration, server):
+ def __init__(self, configuration, server_registration_cb):
self.status = None
self.appendlist = {}
- if server:
- self.server = server.BitBakeServer(self)
+ self.server_registration_cb = server_registration_cb
self.configuration = configuration
@@ -109,7 +108,7 @@ class BBCooker:
self.configuration.data = bb.data.init()
- if not server:
+ if not self.server_registration_cb:
bb.data.setVar("BB_WORKERCONTEXT", "1", self.configuration.data)
bb.data.inheritFromOS(self.configuration.data)
@@ -831,7 +830,7 @@ class BBCooker:
return True
return retval
- self.server.register_idle_function(buildFileIdle, rq)
+ self.server_registration_cb(buildFileIdle, rq)
def buildTargets(self, targets, task):
"""
@@ -890,7 +889,7 @@ class BBCooker:
rq = bb.runqueue.RunQueue(self, self.configuration.data, self.status, taskdata, runlist)
- self.server.register_idle_function(buildTargetsIdle, rq)
+ self.server_registration_cb(buildTargetsIdle, rq)
def updateCache(self):
if self.state == state.running:
diff --git a/bitbake/lib/bb/server/none.py b/bitbake/lib/bb/server/none.py
index 45cda2f..6083631 100644
--- a/bitbake/lib/bb/server/none.py
+++ b/bitbake/lib/bb/server/none.py
@@ -36,8 +36,7 @@ DEBUG = False
import inspect, select
class BitBakeServerCommands():
- def __init__(self, server, cooker):
- self.cooker = cooker
+ def __init__(self, server):
self.server = server
def runCommand(self, command):
@@ -106,13 +105,17 @@ class BBUIEventQueue:
def chldhandler(signum, stackframe):
pass
-class BitBakeServer():
+class BitBakeNoneServer():
# remove this when you're done with debugging
# allow_reuse_address = True
- def __init__(self, cooker):
+ def __init__(self):
self._idlefuns = {}
- self.commands = BitBakeServerCommands(self, cooker)
+ self.commands = BitBakeServerCommands(self)
+
+ def addcooker(self, cooker):
+ self.cooker = cooker
+ self.commands.cooker = cooker
def register_idle_function(self, function, data):
"""Register a function to be called while the server is idle"""
@@ -157,25 +160,10 @@ class BitBakeServer():
except:
pass
-class BitbakeServerInfo():
- def __init__(self, server):
- self.server = server
- self.commands = server.commands
-
-class BitBakeServerFork():
- def __init__(self, cooker, server, serverinfo, logfile):
- serverinfo.logfile = logfile
- serverinfo.cooker = cooker
- serverinfo.server = server
-
-class BitbakeUILauch():
- def launch(self, serverinfo, uifunc, *args):
- return bb.cooker.server_main(serverinfo.cooker, uifunc, *args)
-
class BitBakeServerConnection():
- def __init__(self, serverinfo):
- self.server = serverinfo.server
- self.connection = serverinfo.commands
+ def __init__(self, server):
+ self.server = server.server
+ self.connection = self.server.commands
self.events = bb.server.none.BBUIEventQueue(self.server)
for event in bb.event.ui_queue:
self.events.queue_event(event)
@@ -189,3 +177,28 @@ class BitBakeServerConnection():
self.connection.terminateServer()
except:
pass
+
+class BitBakeServer(object):
+ def initServer(self):
+ self.server = BitBakeNoneServer()
+
+ def addcooker(self, cooker):
+ self.cooker = cooker
+ self.server.addcooker(cooker)
+
+ def getServerIdleCB(self):
+ return self.server.register_idle_function
+
+ def saveConnectionDetails(self):
+ return
+
+ def detach(self, cooker_logfile):
+ self.logfile = cooker_logfile
+
+ def establishConnection(self):
+ self.connection = BitBakeServerConnection(self)
+ return self.connection
+
+ def launchUI(self, uifunc, *args):
+ return bb.cooker.server_main(self.cooker, uifunc, *args)
+
diff --git a/bitbake/lib/bb/server/xmlrpc.py b/bitbake/lib/bb/server/xmlrpc.py
index e7b6010..4a16f9d 100644
--- a/bitbake/lib/bb/server/xmlrpc.py
+++ b/bitbake/lib/bb/server/xmlrpc.py
@@ -122,8 +122,7 @@ def _create_server(host, port):
return s
class BitBakeServerCommands():
- def __init__(self, server, cooker):
- self.cooker = cooker
+ def __init__(self, server):
self.server = server
def registerEventHandler(self, host, port):
@@ -160,11 +159,11 @@ class BitBakeServerCommands():
"""
return True
-class BitBakeServer(SimpleXMLRPCServer):
+class BitBakeXMLRPCServer(SimpleXMLRPCServer):
# remove this when you're done with debugging
# allow_reuse_address = True
- def __init__(self, cooker, interface = ("localhost", 0)):
+ def __init__(self, interface = ("localhost", 0)):
"""
Constructor
"""
@@ -174,9 +173,12 @@ class BitBakeServer(SimpleXMLRPCServer):
self._idlefuns = {}
self.host, self.port = self.socket.getsockname()
#self.register_introspection_functions()
- commands = BitBakeServerCommands(self, cooker)
- self.autoregister_all_functions(commands, "")
+ self.commands = BitBakeServerCommands(self)
+ self.autoregister_all_functions(self.commands, "")
+
+ def addcooker(self, cooker):
self.cooker = cooker
+ self.commands.cooker = cooker
def autoregister_all_functions(self, context, prefix):
"""
@@ -244,14 +246,6 @@ class BitbakeServerInfo():
self.host = server.host
self.port = server.port
-class BitBakeServerFork():
- def __init__(self, cooker, server, serverinfo, logfile):
- daemonize.createDaemon(server.serve_forever, logfile)
-
-class BitbakeUILauch():
- def launch(self, serverinfo, uifunc, *args):
- return uifunc(*args)
-
class BitBakeServerConnection():
def __init__(self, serverinfo):
self.connection = _create_server(serverinfo.host, serverinfo.port)
@@ -271,3 +265,31 @@ class BitBakeServerConnection():
self.connection.terminateServer()
except:
pass
+
+class BitBakeServer(object):
+ def initServer(self):
+ self.server = BitBakeXMLRPCServer()
+
+ def addcooker(self, cooker):
+ self.cooker = cooker
+ self.server.addcooker(cooker)
+
+ def getServerIdleCB(self):
+ return self.server.register_idle_function
+
+ def saveConnectionDetails(self):
+ self.serverinfo = BitbakeServerInfo(self.server)
+
+ def detach(self, cooker_logfile):
+ daemonize.createDaemon(self.server.serve_forever, cooker_logfile)
+ del self.cooker
+ del self.server
+
+ def establishConnection(self):
+ self.connection = BitBakeServerConnection(self.serverinfo)
+ return self.connection
+
+ def launchUI(self, uifunc, *args):
+ return uifunc(*args)
+
+
OpenPOWER on IntegriCloud