diff options
| -rwxr-xr-x | bitbake/bin/toaster | 28 | ||||
| -rw-r--r-- | bitbake/lib/bb/ui/toasterui.py | 7 |
2 files changed, 31 insertions, 4 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 |
diff --git a/bitbake/lib/bb/ui/toasterui.py b/bitbake/lib/bb/ui/toasterui.py index 453eaf9485..37d6b1a0cf 100644 --- a/bitbake/lib/bb/ui/toasterui.py +++ b/bitbake/lib/bb/ui/toasterui.py | |||
| @@ -249,6 +249,10 @@ def main(server, eventHandler, params ): | |||
| 249 | buildinfohelper.store_license_manifest_path(event) | 249 | buildinfohelper.store_license_manifest_path(event) |
| 250 | continue | 250 | continue |
| 251 | 251 | ||
| 252 | if isinstance(event, bb.cooker.CookerExit): | ||
| 253 | # exit when the server exits | ||
| 254 | break | ||
| 255 | |||
| 252 | # ignore | 256 | # ignore |
| 253 | if isinstance(event, (bb.event.BuildBase, | 257 | if isinstance(event, (bb.event.BuildBase, |
| 254 | bb.event.StampUpdate, | 258 | bb.event.StampUpdate, |
| @@ -258,8 +262,7 @@ def main(server, eventHandler, params ): | |||
| 258 | bb.event.OperationProgress, | 262 | bb.event.OperationProgress, |
| 259 | bb.command.CommandFailed, | 263 | bb.command.CommandFailed, |
| 260 | bb.command.CommandExit, | 264 | bb.command.CommandExit, |
| 261 | bb.command.CommandCompleted, | 265 | bb.command.CommandCompleted)): |
| 262 | bb.cooker.CookerExit)): | ||
| 263 | continue | 266 | continue |
| 264 | 267 | ||
| 265 | if isinstance(event, bb.event.DepTreeGenerated): | 268 | if isinstance(event, bb.event.DepTreeGenerated): |
