[Toaster] [PATCH] bitbake: xmlrpc: set single use mode differently
Barros Pena, Belen
belen.barros.pena at intel.com
Mon Mar 21 05:30:01 PDT 2016
On 17/03/2016 07:21, "toaster-bounces at yoctoproject.org on behalf of Ed
Bartosh" <toaster-bounces at yoctoproject.org on behalf of
ed.bartosh at linux.intel.com> wrote:
>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]
I know this has been sent upstream, but fwiw, I've applied it on top of
master and Toaster still refuses to build. Starting a build spawns a ton
of process like this
python /home/belen/toaster/bitbake/bin/bitbake --read conf/toaster.conf
--server-only -t xmlrpc -B 0.0.0.0:0
I could be doing something wrong though.
Cheers
Belén
>
>Signed-off-by: Ed Bartosh <ed.bartosh at linux.intel.com>
>---
> bitbake/lib/bb/main.py | 5 +++--
> bitbake/lib/bb/server/process.py | 2 +-
> bitbake/lib/bb/server/xmlrpc.py | 8 ++++----
> 3 files changed, 8 insertions(+), 7 deletions(-)
>
>diff --git a/bitbake/lib/bb/main.py b/bitbake/lib/bb/main.py
>index bf59793..a28c751 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 e387b30..a3078a8 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 a79b490..48d45d8 100644
>--- a/bitbake/lib/bb/server/xmlrpc.py
>+++ b/bitbake/lib/bb/server/xmlrpc.py
>@@ -189,12 +189,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)
>@@ -335,9 +335,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")
>--
>2.1.4
>
>--
>_______________________________________________
>toaster mailing list
>toaster at yoctoproject.org
>https://lists.yoctoproject.org/listinfo/toaster
More information about the toaster
mailing list