Sent to bitbake-devel and added to toaster-next. Thanks. Elliot
On 17 March 2016 at 07:21, Ed Bartosh <[email protected]> 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] > > Signed-off-by: Ed Bartosh <[email protected]> > --- > 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 > [email protected] > https://lists.yoctoproject.org/listinfo/toaster > -- Elliot Smith Software Engineer Intel Open Source Technology Centre
-- _______________________________________________ toaster mailing list [email protected] https://lists.yoctoproject.org/listinfo/toaster
