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 |