Patchwork [bitbake-devel,41/94] bitbake: webhob: improve startup script

login
register
mail settings
Submitter Alexandru DAMIAN
Date Sept. 24, 2013, 4:52 p.m.
Message ID <ca1b3964ce8ec36f09b020ec177e334bac7e2a86.1380041477.git.alexandru.damian@intel.com>
Download mbox | patch
Permalink /patch/58735/
State New
Headers show

Comments

Alexandru DAMIAN - Sept. 24, 2013, 4:52 p.m.
From: Alexandru DAMIAN <alexandru.damian@intel.com>

A couple of modification targeted at making the
system start/stop script more resilient.

Also, it now checks for the correct Django version.

Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
---
 bitbake/bin/webhob | 53 ++++++++++++++++++++++++++++++++++++++++++-----------
 1 file changed, 42 insertions(+), 11 deletions(-)

Patch

diff --git a/bitbake/bin/webhob b/bitbake/bin/webhob
index 44a25cb..7b74465 100755
--- a/bitbake/bin/webhob
+++ b/bitbake/bin/webhob
@@ -22,13 +22,13 @@ 
 
 # Helper function to kill a background webhob development server
 
-function webserverKillAllComponents()
+function webserverKillAll()
 {
 	local pidfile
 	for pidfile in ${BUILDDIR}/whbmain.pid; do
 		if [ -f ${pidfile} ]; then
 		while kill -0 $(< ${pidfile}) 2>/dev/null; do
-			kill -SIGTERM -$(< ${pidfile})
+			kill -SIGTERM -$(< ${pidfile}) 2>/dev/null
 			sleep 1;
 		done;
 		rm  ${pidfile}
@@ -36,6 +36,15 @@  function webserverKillAllComponents()
 	done
 }
 
+
+function webserverStartAll()
+{
+        python $BBBASEDIR/lib/webhob/manage.py syncdb || (echo "Failed db sync, stopping system start" 1>&2 && return 2)
+        python $BBBASEDIR/lib/webhob/manage.py runserver </dev/null >${BUILDDIR}/whbmain.log 2>&1 & echo $! >${BUILDDIR}/whbmain.pid
+        return 0
+}
+
+
 # We make sure we're running in the current shell and in a good environment
 
 if [ -z "$ZSH_NAME" ] && [ `basename "$0"` = `basename $BASH_SOURCE` ]; then
@@ -50,6 +59,16 @@  fi
 
 BBBASEDIR=`dirname ${BASH_SOURCE}`/..
 
+
+# Verify prerequisites
+
+if ! echo "import django; print (1,4,5) == django.VERSION[0:3]" | python 2>/dev/null | grep True >/dev/null; then
+    echo -e "This program needs Django 1.4.5. Please install with\n\nsudo pip install django==1.4.5"
+    return 2
+fi
+
+
+
 # Determine the action. If specified by arguments, fine, if not, toggle it
 if [ "x$1" == "xstart" ] || [ "x$1" == "xstop" ]; then
     CMD="$1"
@@ -61,6 +80,13 @@  else
     fi;
 fi
 
+NODSI=0
+if [ "x$2" == "xnodsi" ]; then
+    NODSI=1
+fi
+
+echo "The system will $CMD."
+
 # Make sure it's safe to run by checking bitbake lock
 
 lock=1
@@ -69,11 +95,11 @@  if [ -e $BUILDDIR/bitbake.lock ]; then
 fi
 
 if [ ${CMD} == "start" ] && ( [ $lock -eq 0 ] || [ -e $BUILDDIR/whbmain.pid ] ); then
-    echo "Error: bitbake lock state error. System may be already on." 2>&1
+    echo "Error: bitbake lock state error. System is already on." 2>&1
     return 3
 elif [ ${CMD} == "stop" ] && ( [ $lock -eq 1 ] || ! [ -e $BUILDDIR/whbmain.pid ] ) ; then
-    echo "Error: bitbake lock state error. System may be already off.
-manually stop system with bitbake -m / webserverKillAllComponents" 2>&1
+    echo "Error: bitbake lock state error. Trying to stop a stopped system ?
+manually stop system with bitbake -m / webserverKill" 2>&1
     return 3
 fi
 
@@ -82,19 +108,24 @@  fi
 
 case $CMD in
     start )
+        webserverStartAll || return 4
         unset BBSERVER
-        python $BBBASEDIR/lib/webhob/manage.py syncdb || (echo "Failed db sync, stopping system start" 1>&2 && return 0)
         bitbake --server-only -t xmlrpc -B localhost:8200
         export BBSERVER=localhost:8200
-        bitbake --observe-only -u dsi >/dev/null 2>&1 & echo $! >${BUILDDIR}/dsi.pid
-        python $BBBASEDIR/lib/webhob/manage.py runserver </dev/null >${BUILDDIR}/whbmain.log 2>&1 & echo $! >${BUILDDIR}/whbmain.pid
+        if [ $NODSI == 0 ]; then        # we start the DSI only if not inhibited
+            bitbake --observe-only -u dsi >/dev/null 2>&1 & echo $! >${BUILDDIR}/dsi.pid
+        fi
     ;;
     stop )
-        kill $(< ${BUILDDIR}/dsi.pid )
-        rm ${BUILDDIR}/dsi.pid
+        if [ -f ${BUILDDIR}/dsi.pid ]; then
+            kill $(< ${BUILDDIR}/dsi.pid )
+            rm ${BUILDDIR}/dsi.pid
+        fi
         bitbake -m
         unset BBSERVER
-        webserverKillAllComponents
+        webserverKillAll
+    ;;
 esac
 
+echo "Successful ${CMD}."