summaryrefslogtreecommitdiffstats
path: root/bitbake/bin/toaster
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/bin/toaster')
-rwxr-xr-xbitbake/bin/toaster96
1 files changed, 53 insertions, 43 deletions
diff --git a/bitbake/bin/toaster b/bitbake/bin/toaster
index 34f65e4721..4c6ac5ac40 100755
--- a/bitbake/bin/toaster
+++ b/bitbake/bin/toaster
@@ -37,7 +37,7 @@ function webserverKillAll()
37 kill -SIGTERM -$(< ${pidfile}) 2>/dev/null 37 kill -SIGTERM -$(< ${pidfile}) 2>/dev/null
38 sleep 1; 38 sleep 1;
39 # Kill processes if they are still running - may happen in interactive shells 39 # Kill processes if they are still running - may happen in interactive shells
40 ps fux | grep "python.*manage.py" | awk '{print $2}' | xargs kill 40 ps fux | grep "python.*manage.py runserver" | awk '{print $2}' | xargs kill
41 done; 41 done;
42 rm ${pidfile} 42 rm ${pidfile}
43 fi 43 fi
@@ -69,13 +69,13 @@ function webserverStartAll()
69 fi 69 fi
70 if [ $retval -eq 0 ]; then 70 if [ $retval -eq 0 ]; then
71 echo "Starting webserver" 71 echo "Starting webserver"
72 python $BBBASEDIR/lib/toaster/manage.py runserver 0.0.0.0:8000 </dev/null >${BUILDDIR}/toaster_web.log 2>&1 & echo $! >${BUILDDIR}/.toastermain.pid 72 python $BBBASEDIR/lib/toaster/manage.py runserver "0.0.0.0:$WEB_PORT" </dev/null >${BUILDDIR}/toaster_web.log 2>&1 & echo $! >${BUILDDIR}/.toastermain.pid
73 sleep 1 73 sleep 1
74 if ! cat "${BUILDDIR}/.toastermain.pid" | xargs -I{} kill -0 {} ; then 74 if ! cat "${BUILDDIR}/.toastermain.pid" | xargs -I{} kill -0 {} ; then
75 retval=1 75 retval=1
76 rm "${BUILDDIR}/.toastermain.pid" 76 rm "${BUILDDIR}/.toastermain.pid"
77 else 77 else
78 echo "Webserver address: 0.0.0.0:8000" 78 echo "Webserver address: http://0.0.0.0:$WEB_PORT/"
79 fi 79 fi
80 fi 80 fi
81 return $retval 81 return $retval
@@ -103,7 +103,7 @@ function stop_system()
103 kill $(< ${BUILDDIR}/.toasterui.pid ) 2>/dev/null 103 kill $(< ${BUILDDIR}/.toasterui.pid ) 2>/dev/null
104 rm ${BUILDDIR}/.toasterui.pid 104 rm ${BUILDDIR}/.toasterui.pid
105 fi 105 fi
106 BBSERVER=0.0.0.0:8200 bitbake -m 106 BBSERVER=0.0.0.0:-1 bitbake -m
107 unset BBSERVER 107 unset BBSERVER
108 webserverKillAll 108 webserverKillAll
109 # force stop any misbehaving bitbake server 109 # force stop any misbehaving bitbake server
@@ -126,9 +126,46 @@ function notify_chldexit() {
126} 126}
127 127
128 128
129
130# Verify prerequisites
131
132if ! echo "import django; print (1,) == django.VERSION[0:1] and django.VERSION[1:2][0] in (5,6)" | python 2>/dev/null | grep True >/dev/null; then
133 echo -e "This program needs Django 1.5 or 1.6. Please install with\n\npip install django==1.6"
134 return 2
135fi
136
137if ! echo "import south; print [0,8,4] == map(int,south.__version__.split(\".\"))" | python 2>/dev/null | grep True >/dev/null; then
138 echo -e "This program needs South 0.8.4. Please install with\n\npip install south==0.8.4"
139 return 2
140fi
141
142# read command line parameters
143
129BBBASEDIR=`dirname ${BASH_SOURCE}`/.. 144BBBASEDIR=`dirname ${BASH_SOURCE}`/..
130RUNNING=0 145RUNNING=0
131 146
147NOTOASTERUI=0
148WEBSERVER=1
149TOASTER_BRBE=""
150WEB_PORT="8000"
151
152for param in $*; do
153 case $param in
154 noui )
155 NOTOASTERUI=1
156 ;;
157 noweb )
158 WEBSERVER=0
159 ;;
160 brbe=* )
161 TOASTER_BRBE=$'\n'"TOASTER_BRBE=\""${param#*=}"\""
162 ;;
163 webport=*)
164 WEB_PORT="${param#*=}"
165 esac
166done
167
168
132if [ -z "$ZSH_NAME" ] && [ `basename \"$0\"` = `basename \"$BASH_SOURCE\"` ]; then 169if [ -z "$ZSH_NAME" ] && [ `basename \"$0\"` = `basename \"$BASH_SOURCE\"` ]; then
133 # We are called as standalone. We refuse to run in a build environment - we need the interactive mode for that. 170 # We are called as standalone. We refuse to run in a build environment - we need the interactive mode for that.
134 # Start just the web server, point the web browser to the interface, and start any Django services. 171 # Start just the web server, point the web browser to the interface, and start any Django services.
@@ -152,7 +189,7 @@ if [ -z "$ZSH_NAME" ] && [ `basename \"$0\"` = `basename \"$BASH_SOURCE\"` ]; th
152 echo "Failed to start the web server, stopping" 1>&2; 189 echo "Failed to start the web server, stopping" 1>&2;
153 exit 1; 190 exit 1;
154 fi 191 fi
155 xdg-open http://0.0.0.0:8000/ >/dev/null 2>&1 & 192 xdg-open http://0.0.0.0:$WEB_PORT/ >/dev/null 2>&1 &
156 trap trap_ctrlc SIGINT 193 trap trap_ctrlc SIGINT
157 echo "Running. Stop with Ctrl-C" 194 echo "Running. Stop with Ctrl-C"
158 while [ $RUNNING -gt 0 ]; do 195 while [ $RUNNING -gt 0 ]; do
@@ -170,23 +207,6 @@ if [ -z "$BUILDDIR" ] || [ -z `which bitbake` ]; then
170fi 207fi
171 208
172 209
173
174# Verify prerequisites
175
176if ! echo "import django; print (1,) == django.VERSION[0:1] and django.VERSION[1:2][0] in (5,6)" | python 2>/dev/null | grep True >/dev/null; then
177 echo -e "This program needs Django 1.5 or 1.6. Please install with\n\npip install django==1.6"
178 return 2
179fi
180
181if ! echo "import south; print [0,8,4] == map(int,south.__version__.split(\".\"))" | python 2>/dev/null | grep True >/dev/null; then
182 echo -e "This program needs South 0.8.4. Please install with\n\npip install south==0.8.4"
183 return 2
184fi
185
186
187
188
189
190# Determine the action. If specified by arguments, fine, if not, toggle it 210# Determine the action. If specified by arguments, fine, if not, toggle it
191if [ "x$1" == "xstart" ] || [ "x$1" == "xstop" ]; then 211if [ "x$1" == "xstart" ] || [ "x$1" == "xstop" ]; then
192 CMD="$1" 212 CMD="$1"
@@ -198,22 +218,6 @@ else
198 fi; 218 fi;
199fi 219fi
200 220
201NOTOASTERUI=0
202WEBSERVER=1
203TOASTER_BRBE=""
204for param in $*; do
205 case $param in
206 noui )
207 NOTOASTERUI=1
208 ;;
209 noweb )
210 WEBSERVER=0
211 ;;
212 brbe=* )
213 TOASTER_BRBE=$'\n'"TOASTER_BRBE=\""${param#*=}"\""
214 esac
215done
216
217echo "The system will $CMD." 221echo "The system will $CMD."
218 222
219# Make sure it's safe to run by checking bitbake lock 223# Make sure it's safe to run by checking bitbake lock
@@ -223,12 +227,18 @@ if [ -e $BUILDDIR/bitbake.lock ]; then
223 (flock -n 200 ) 200<$BUILDDIR/bitbake.lock || lock=0 227 (flock -n 200 ) 200<$BUILDDIR/bitbake.lock || lock=0
224fi 228fi
225 229
226if [ ${CMD} == "start" ] && ( [ $lock -eq 0 ] || [ -e $BUILDDIR/.toastermain.pid ] ); then 230if [ ${CMD} == "start" ] && [ $lock -eq 0 ]; then
227 echo "Error: bitbake lock state error. File locks show that the system is on." 2>&1 231 echo "Error: bitbake lock state error. File locks show that the system is on." 1>&2
228 echo "If you see problems, stop and then start the system again." 2>&1 232 echo "Please wait for the current build to finish, stop and then start the system again." 1>&2
229 return 3 233 return 3
230fi 234fi
231 235
236if [ ${CMD} == "start" ] && [ -e $BUILDDIR/.toastermain.pid ] && kill -0 `cat $BUILDDIR/.toastermain.pid`; then
237 echo "Error: bitbake appears to be dead, but the webserver is alive. Something fishy is going on." 1>&2
238 echo "Cleaning up the web server at to start a clean slate."
239 webserverKillAll
240fi
241
232 242
233# Execute the commands 243# Execute the commands
234 244
@@ -241,12 +251,12 @@ case $CMD in
241 return 4 251 return 4
242 fi 252 fi
243 unset BBSERVER 253 unset BBSERVER
244 bitbake --postread conf/toaster.conf --server-only -t xmlrpc -B 0.0.0.0:8200 254 bitbake --postread conf/toaster.conf --server-only -t xmlrpc -B 0.0.0.0:0
245 if [ $? -ne 0 ]; then 255 if [ $? -ne 0 ]; then
246 start_success=0 256 start_success=0
247 echo "Bitbake server start failed" 257 echo "Bitbake server start failed"
248 else 258 else
249 export BBSERVER=0.0.0.0:8200 259 export BBSERVER=0.0.0.0:-1
250 if [ $NOTOASTERUI == 0 ]; then # we start the TOASTERUI only if not inhibited 260 if [ $NOTOASTERUI == 0 ]; then # we start the TOASTERUI only if not inhibited
251 bitbake --observe-only -u toasterui >${BUILDDIR}/toaster_ui.log 2>&1 & echo $! >${BUILDDIR}/.toasterui.pid 261 bitbake --observe-only -u toasterui >${BUILDDIR}/toaster_ui.log 2>&1 & echo $! >${BUILDDIR}/.toasterui.pid
252 fi 262 fi