bitbake: toaster: server shutdown on terminal exit

If the terminal where the server was started is closed,
the bitbake server should shutdown. Currently the system
is left in hanging state.

This patch uses "trap" command to make sure the servers
are closed on terminal exit.

[YOCTO #5376]

(Bitbake rev: 5f8b97010f7b465753b6ff6275d18426006ee14b)

Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Alexandru DAMIAN 2013-11-01 15:58:33 +00:00 committed by Richard Purdie
parent af32d95f3b
commit 16067d5295
1 changed files with 20 additions and 9 deletions

View File

@ -49,6 +49,19 @@ function webserverStartAll()
return $retval return $retval
} }
# define the stop command
function stop_system()
{
if [ -f ${BUILDDIR}/.toasterui.pid ]; then
kill $(< ${BUILDDIR}/.toasterui.pid )
rm ${BUILDDIR}/.toasterui.pid
fi
BBSERVER=localhost:8200 bitbake -m
unset BBSERVER
webserverKillAll
# force stop any misbehaving bitbake server
lsof bitbake.lock | awk '{print $2}' | grep "[0-9]\+" | xargs -n1 -r kill
}
# We make sure we're running in the current shell and in a good environment # We make sure we're running in the current shell and in a good environment
@ -116,6 +129,9 @@ and
fi fi
# Execute the commands # Execute the commands
case $CMD in case $CMD in
@ -127,17 +143,12 @@ case $CMD in
if [ $NOTOASTERUI == 0 ]; then # we start the TOASTERUI only if not inhibited if [ $NOTOASTERUI == 0 ]; then # we start the TOASTERUI only if not inhibited
bitbake --observe-only -u toasterui >${BUILDDIR}/toaster_ui.log 2>&1 & echo $! >${BUILDDIR}/.toasterui.pid bitbake --observe-only -u toasterui >${BUILDDIR}/toaster_ui.log 2>&1 & echo $! >${BUILDDIR}/.toasterui.pid
fi fi
# stop system on terminal exit
trap stop_system SIGHUP
;; ;;
stop ) stop )
if [ -f ${BUILDDIR}/.toasterui.pid ]; then stop_system
kill $(< ${BUILDDIR}/.toasterui.pid ) trap '' SIGHUP
rm ${BUILDDIR}/.toasterui.pid
fi
bitbake -m
unset BBSERVER
webserverKillAll
# force stop any misbehaving bitbake server
lsof bitbake.lock | awk '{print $2}' | grep "[0-9]\+" | xargs -n1 -r kill
;; ;;
esac esac