Patchwork [bitbake-devel,7/9] toaster: update toaster to run in managed mode

login
register
mail settings
Submitter Alexandru DAMIAN
Date June 3, 2014, 3:26 p.m.
Message ID <dd0b6dca4512a5b26db2df3a508bd1feace92fe1.1401808899.git.alexandru.damian@intel.com>
Download mbox | patch
Permalink /patch/73151/
State New
Headers show

Comments

Alexandru DAMIAN - June 3, 2014, 3:26 p.m.
From: Alexandru DAMIAN <alexandru.damian@intel.com>

We disable bitbake self start to prevent race condition.

ToasterUI will shutdown the server when the build is done
if running in managed mode.

We fix usage of kill server flag in the bitbake binary.

Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
---
 bin/bitbake            | 34 ++++++++++++++++------------------
 lib/bb/ui/toasterui.py | 16 ++++++++++++----
 2 files changed, 28 insertions(+), 22 deletions(-)

Patch

diff --git a/bin/bitbake b/bin/bitbake
index ab881c5..f120bac 100755
--- a/bin/bitbake
+++ b/bin/bitbake
@@ -301,6 +301,9 @@  def main():
     if configParams.observe_only and (not configParams.remote_server or configParams.bind):
         sys.exit("FATAL: '--observe-only' can only be used by UI clients connecting to a server.\n")
 
+    if configParams.kill_server and not configParams.remote_server:
+        sys.exit("FATAL: '--kill-server' can only be used to terminate a remote server")
+
     if "BBDEBUG" in os.environ:
         level = int(os.environ["BBDEBUG"])
         if level > configuration.debug:
@@ -332,29 +335,14 @@  def main():
         server = servermodule.BitBakeXMLRPCClient(configParams.observe_only)
         server.saveConnectionDetails(configParams.remote_server)
 
-    def _getServerConnection(server, featureset):
-        try:
-            server_connection = server.establishConnection(featureset)
-        except Exception as e:
-            bb.fatal("Could not connect to server %s: %s" % (configParams.remote_server, str(e)))
-        return server_connection
 
     if not configParams.server_only:
-        if configParams.status_only:
-            server_connection = _getServerConnection(server, featureset)
-            server_connection.terminate()
-            sys.exit(0)
-
-        # Setup a connection to the server (cooker)
         try:
             server_connection = server.establishConnection(featureset)
-        except:
+        except Exception as e:
             if configParams.kill_server:
-                bb.fatal("Server already offline")
-            configParams.bind = configParams.remote_server
-            start_server(servermodule, configParams, configuration, featureset)
-            bb.event.ui_queue = []
-            server_connection = _getServerConnection(server, featureset)
+                sys.exit(0)
+            bb.fatal("Could not connect to server %s: %s" % (configParams.remote_server, str(e)))
 
         # Restore the environment in case the UI needs it
         for k in cleanedvars:
@@ -362,6 +350,16 @@  def main():
 
         logger.removeHandler(handler)
 
+
+        if configParams.status_only:
+            server_connection.terminate()
+            sys.exit(0)
+
+        if configParams.kill_server:
+            server_connection.connection.terminateServer()
+            bb.event.ui_queue = []
+            sys.exit(0)
+
         try:
             return ui_module.main(server_connection.connection, server_connection.events, configParams)
         finally:
diff --git a/lib/bb/ui/toasterui.py b/lib/bb/ui/toasterui.py
index 9a9fe6f..c1696b2 100644
--- a/lib/bb/ui/toasterui.py
+++ b/lib/bb/ui/toasterui.py
@@ -226,11 +226,19 @@  def main(server, eventHandler, params ):
 
                 buildinfohelper.update_build_information(event, errors, warnings, taskfailures)
 
+
+                brbe = server.runCommand(["getVariable", "TOASTER_BRBE"])[0]
                 # we start a new build info
-                errors = 0
-                warnings = 0
-                taskfailures = []
-                buildinfohelper = BuildInfoHelper(server, build_history_enabled)
+                if brbe is not None:
+                    print "we are under BuildEnvironment management - after the build, we exit"
+                    server.terminateServer()
+                else:
+                    print "prepared for new build"
+                    errors = 0
+                    warnings = 0
+                    taskfailures = []
+                    buildinfohelper = BuildInfoHelper(server, build_history_enabled)
+
                 continue
 
             if isinstance(event, bb.event.MetadataEvent):