[oe-commits] [bitbake] branch master updated: bitbake: xmlrpc: set single use mode differently

git at git.openembedded.org git at git.openembedded.org
Thu Mar 24 12:32:35 UTC 2016


rpurdie pushed a commit to branch master
in repository bitbake.

The following commit(s) were added to refs/heads/master by this push:
       new  afc0dd5   bitbake: xmlrpc: set single use mode differently
afc0dd5 is described below

commit afc0dd5c532684f6201b1e12bbf4c226ea19062d
Author: Ed Bartosh <ed.bartosh at linux.intel.com>
AuthorDate: Thu Mar 17 11:34:23 2016 +0000

    bitbake: xmlrpc: set single use mode differently
    
    Currently xmlrpc server implicitly sets itself into single use mode
    when bitbake server is started with anonymous port (0) or no port is
    provided in command line. In this mode bitbake shuts down xmlrpc server
    after build is done. This assumption is incorrect in some cases.
    For example Toaster uses bitbake in this mode and expects xmlrpc server
    to stay in memory.
    
    Till recent changes single use mode was always unset due to the bug.
    When the bug was fixed it broke toaster builds as Toaster couldn't
    communicate with bitbake server in single use mode.
    
    Reimplemented logic of setting single use mode. The mode is explicity
    set when --server-only command line parameter is not provided to bitbake.
    It doesn't depend on the port number anymore.
    
    [YOCTO #9275]
    [YOCTO #9240]
    [YOCTO #9252]
    
    Signed-off-by: Ed Bartosh <ed.bartosh at linux.intel.com>
    Signed-off-by: Elliot Smith <elliot.smith at intel.com>
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 lib/bb/main.py           | 5 +++--
 lib/bb/server/process.py | 2 +-
 lib/bb/server/xmlrpc.py  | 8 ++++----
 3 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/lib/bb/main.py b/lib/bb/main.py
index bf59793..a28c751 100755
--- a/lib/bb/main.py
+++ b/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/lib/bb/server/process.py b/lib/bb/server/process.py
index e387b30..a3078a8 100644
--- a/lib/bb/server/process.py
+++ b/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/lib/bb/server/xmlrpc.py b/lib/bb/server/xmlrpc.py
index 7528138..ace1cf6 100644
--- a/lib/bb/server/xmlrpc.py
+++ b/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")

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list