diff options
Diffstat (limited to 'bitbake/bin/toaster')
| -rwxr-xr-x | bitbake/bin/toaster | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/bitbake/bin/toaster b/bitbake/bin/toaster index 9c0a15ff67..b27f7c28bb 100755 --- a/bitbake/bin/toaster +++ b/bitbake/bin/toaster | |||
| @@ -68,11 +68,16 @@ function addtoConfiguration() | |||
| 68 | echo $1 >> ${BUILDDIR}/conf/$2 | 68 | echo $1 >> ${BUILDDIR}/conf/$2 |
| 69 | } | 69 | } |
| 70 | 70 | ||
| 71 | INSTOPSYSTEM=0 | ||
| 72 | |||
| 71 | # define the stop command | 73 | # define the stop command |
| 72 | function stop_system() | 74 | function stop_system() |
| 73 | { | 75 | { |
| 76 | # prevent reentry | ||
| 77 | if [ $INSTOPSYSTEM == 1 ]; then return; fi | ||
| 78 | INSTOPSYSTEM=1 | ||
| 74 | if [ -f ${BUILDDIR}/.toasterui.pid ]; then | 79 | if [ -f ${BUILDDIR}/.toasterui.pid ]; then |
| 75 | kill $(< ${BUILDDIR}/.toasterui.pid ) | 80 | kill $(< ${BUILDDIR}/.toasterui.pid ) 2>/dev/null |
| 76 | rm ${BUILDDIR}/.toasterui.pid | 81 | rm ${BUILDDIR}/.toasterui.pid |
| 77 | fi | 82 | fi |
| 78 | BBSERVER=localhost:8200 bitbake -m | 83 | BBSERVER=localhost:8200 bitbake -m |
| @@ -80,8 +85,24 @@ function stop_system() | |||
| 80 | webserverKillAll | 85 | webserverKillAll |
| 81 | # force stop any misbehaving bitbake server | 86 | # force stop any misbehaving bitbake server |
| 82 | lsof bitbake.lock | awk '{print $2}' | grep "[0-9]\+" | xargs -n1 -r kill | 87 | lsof bitbake.lock | awk '{print $2}' | grep "[0-9]\+" | xargs -n1 -r kill |
| 88 | trap - SIGHUP | ||
| 89 | trap - SIGCHLD | ||
| 90 | INSTOPSYSTEM=0 | ||
| 91 | } | ||
| 92 | |||
| 93 | function check_pidbyfile() { | ||
| 94 | [ -e $1 ] && kill -0 $(< $1) 2>/dev/null | ||
| 83 | } | 95 | } |
| 84 | 96 | ||
| 97 | |||
| 98 | function notify_chldexit() { | ||
| 99 | if [ $NOTOASTERUI == 0 ]; then | ||
| 100 | check_pidbyfile ${BUILDDIR}/.toasterui.pid && return | ||
| 101 | stop_system | ||
| 102 | fi | ||
| 103 | } | ||
| 104 | |||
| 105 | |||
| 85 | # We make sure we're running in the current shell and in a good environment | 106 | # We make sure we're running in the current shell and in a good environment |
| 86 | 107 | ||
| 87 | if [ -z "$ZSH_NAME" ] && [ `basename \"$0\"` = `basename \"$BASH_SOURCE\"` ]; then | 108 | if [ -z "$ZSH_NAME" ] && [ `basename \"$0\"` = `basename \"$BASH_SOURCE\"` ]; then |
| @@ -179,10 +200,13 @@ case $CMD in | |||
| 179 | stop_system | 200 | stop_system |
| 180 | echo "Failed ${CMD}." | 201 | echo "Failed ${CMD}." |
| 181 | fi | 202 | fi |
| 203 | # stop system on terminal exit | ||
| 204 | set -o monitor | ||
| 205 | trap stop_system SIGHUP | ||
| 206 | trap notify_chldexit SIGCHLD | ||
| 182 | ;; | 207 | ;; |
| 183 | stop ) | 208 | stop ) |
| 184 | stop_system | 209 | stop_system |
| 185 | trap '' SIGHUP | ||
| 186 | echo "Successful ${CMD}." | 210 | echo "Successful ${CMD}." |
| 187 | ;; | 211 | ;; |
| 188 | esac | 212 | esac |
