Commit 6bdd9f89 authored by Andreas Bießmann's avatar Andreas Bießmann Committed by Tom Rini

MAKEALL: fix kill_children for BSD hosts

ps on BSD hosts (like OS X) do not provide the --no-headers switch nor
understand the AIX format descriptions. Unfortunately there seems no solution to
get the PIDs of children in a platfrom independent manner.
Therefore detect the OS and decide upon that which way to go.

This patch makes the MAKEALL script cleanly stoppable on bare OS X when using
the parallel builds of targets.

Additionally this patch removes double call to grep by a single call to sed for
GNU style child PID detection.
Signed-off-by: default avatarAndreas Bießmann <andreas.devel@googlemail.com>
Cc: Joe Hershberger <joe.hershberger@ni.com>
Acked-by: default avatarJoe Hershberger <joe.hershberger@ni.com>
parent c08349e7
......@@ -802,8 +802,20 @@ build_targets() {
#-----------------------------------------------------------------------
kill_children() {
local pgid=`ps -p $$ --no-headers -o "%r" | tr -d ' '`
local children=`pgrep -g $pgid | grep -v $$ | grep -v $pgid`
local OS=$(uname -s)
local children=""
case "${OS}" in
"Darwin")
# Mac OS X is known to have BSD style ps
local pgid=$(ps -p $$ -o pgid | sed -e "/PGID/d")
children=$(ps -g $pgid -o pid | sed -e "/PID\|$$\|$pgid/d")
;;
*)
# everything else tries the GNU style
local pgid=$(ps -p $$ --no-headers -o "%r" | tr -d ' ')
children=$(pgrep -g $pgid | sed -e "/$$\|$pgid/d")
;;
esac
kill $children 2> /dev/null
wait $children 2> /dev/null
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment