]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
toaster: add two-stage commit startup logic
authorAlexandru DAMIAN <alexandru.damian@intel.com>
Tue, 10 Dec 2013 18:24:18 +0000 (18:24 +0000)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Tue, 7 Jan 2014 13:00:29 +0000 (13:00 +0000)
Toaster start script lunches multiple process components
of the toaster system.

This patch adds logic into the startup script to
safely fail startup and do proper cleanup on any error
that may happen during system start.

Bitbake needs to return 0 if it will successfully lunches
the server-mode.

Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
bin/bitbake
bin/toaster

index d27fe849fb5b8552aecdcea69004895437893680..cbfd2c97b614457e100699a3be3f3e2ab36489a0 100755 (executable)
@@ -343,6 +343,7 @@ def main():
             server_connection.terminate()
     else:
         print("server address: %s, server port: %s" % (server.serverImpl.host, server.serverImpl.port))
+        return 0
 
     return 1
 
index fc59fe5547a1cc1437b704259dfa0934006b742b..38e71acc2b9452075bbcbda7bd93bb1e6b7233d5 100755 (executable)
@@ -51,6 +51,11 @@ function webserverStartAll()
         fi
         if [ $retval -eq 0 ]; then
             python $BBBASEDIR/lib/toaster/manage.py runserver 0.0.0.0:8000 </dev/null >${BUILDDIR}/toaster_web.log 2>&1 & echo $! >${BUILDDIR}/.toastermain.pid
+            sleep 1
+            if ! cat "${BUILDDIR}/.toastermain.pid" | xargs -I{} kill -0 {} ; then
+                retval=1
+                rm "${BUILDDIR}/.toastermain.pid"
+            fi
         fi
         return $retval
 }
@@ -120,9 +125,13 @@ else
 fi
 
 NOTOASTERUI=0
-if [ "x$2" == "xnoui" ]; then
-    NOTOASTERUI=1
-fi
+for param in $*; do
+    case $param in
+    noui )
+            NOTOASTERUI=1
+    ;;
+    esac
+done
 
 echo "The system will $CMD."
 
@@ -157,22 +166,38 @@ fi
 
 case $CMD in
     start )
+        start_success=1
         addtoConfiguration "INHERIT+=\"toaster buildhistory\"" toaster.conf
-        webserverStartAll || return 4
+        if ! webserverStartAll; then
+            echo "Failed ${CMD}."
+            return 4
+        fi
         unset BBSERVER
         bitbake --postread conf/toaster.conf --server-only -t xmlrpc -B localhost:8200
-        export BBSERVER=localhost:8200
-        if [ $NOTOASTERUI == 0 ]; then        # we start the TOASTERUI only if not inhibited
-            bitbake --observe-only -u toasterui >${BUILDDIR}/toaster_ui.log 2>&1 & echo $! >${BUILDDIR}/.toasterui.pid
+        if [ $? -ne 0 ]; then
+            start_success=0
+            echo "Bitbake server start failed"
+        else
+            export BBSERVER=localhost:8200
+            if [ $NOTOASTERUI == 0 ]; then        # we start the TOASTERUI only if not inhibited
+                bitbake --observe-only -u toasterui >${BUILDDIR}/toaster_ui.log 2>&1 & echo $! >${BUILDDIR}/.toasterui.pid
+            fi
+        fi
+        if [ $start_success -eq 1 ]; then
+            # set fail safe stop system on terminal exit
+            trap stop_system SIGHUP
+            echo "Successful ${CMD}."
+        else
+            # failed start, do stop
+            stop_system
+            echo "Failed ${CMD}."
         fi
-        # stop system on terminal exit
-        trap stop_system SIGHUP
     ;;
     stop )
         stop_system
         trap '' SIGHUP
+        echo "Successful ${CMD}."
     ;;
 esac
 
-echo "Successful ${CMD}."