diff --git a/bitbake/lib/bb/main.py b/bitbake/lib/bb/main.py index bf59793db5..a28c7514df 100755 --- a/bitbake/lib/bb/main.py +++ b/bitbake/lib/bb/main.py @@ -282,12 +282,13 @@ class BitBakeConfigParameters(cookerdata.ConfigParameters): def start_server(servermodule, configParams, configuration, features): server = servermodule.BitBakeServer() + single_use = not configParams.server_only if configParams.bind: (host, port) = configParams.bind.split(':') - server.initServer((host, int(port))) + server.initServer((host, int(port)), single_use) configuration.interface = [ server.serverImpl.host, server.serverImpl.port ] else: - server.initServer() + server.initServer(single_use=single_use) configuration.interface = [] try: diff --git a/bitbake/lib/bb/server/process.py b/bitbake/lib/bb/server/process.py index e387b30ee3..a3078a873d 100644 --- a/bitbake/lib/bb/server/process.py +++ b/bitbake/lib/bb/server/process.py @@ -242,7 +242,7 @@ class ProcessEventQueue(multiprocessing.queues.Queue): class BitBakeServer(BitBakeBaseServer): - def initServer(self): + def initServer(self, single_use=True): # establish communication channels. We use bidirectional pipes for # ui <--> server command/response pairs # and a queue for server -> ui event notifications diff --git a/bitbake/lib/bb/server/xmlrpc.py b/bitbake/lib/bb/server/xmlrpc.py index 7528138740..ace1cf646b 100644 --- a/bitbake/lib/bb/server/xmlrpc.py +++ b/bitbake/lib/bb/server/xmlrpc.py @@ -186,12 +186,12 @@ class XMLRPCServer(SimpleXMLRPCServer, BaseImplServer): # remove this when you're done with debugging # allow_reuse_address = True - def __init__(self, interface): + def __init__(self, interface, single_use=False): """ Constructor """ BaseImplServer.__init__(self) - self.single_use = interface[1] == 0 # anonymous port, not getting reused + self.single_use = single_use # Use auto port configuration if (interface[1] == -1): interface = (interface[0], 0) @@ -332,9 +332,9 @@ class BitBakeXMLRPCServerConnection(BitBakeBaseServerConnection): pass class BitBakeServer(BitBakeBaseServer): - def initServer(self, interface = ("localhost", 0)): + def initServer(self, interface = ("localhost", 0), single_use = False): self.interface = interface - self.serverImpl = XMLRPCServer(interface) + self.serverImpl = XMLRPCServer(interface, single_use) def detach(self): daemonize.createDaemon(self.serverImpl.serve_forever, "bitbake-cookerdaemon.log")