summaryrefslogtreecommitdiff
path: root/MAKEALL
diff options
context:
space:
mode:
authorAndreas Bießmann <andreas.devel@googlemail.com>2013-02-07 22:35:57 +0000
committerTom Rini <trini@ti.com>2013-03-11 17:00:28 -0400
commit6bdd9f89673e694df8a1bac6c129b21739ed8a7c (patch)
treef376fe2a1ed7a4d905c826b32c1b520c2385974c /MAKEALL
parentc08349e77c2353f23397ff60b6faec3cd0304061 (diff)
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: Andreas Bießmann <andreas.devel@googlemail.com> Cc: Joe Hershberger <joe.hershberger@ni.com> Acked-by: Joe Hershberger <joe.hershberger@ni.com>
Diffstat (limited to 'MAKEALL')
-rwxr-xr-xMAKEALL16
1 files changed, 14 insertions, 2 deletions
diff --git a/MAKEALL b/MAKEALL
index 397adef920a..c1d89572564 100755
--- a/MAKEALL
+++ b/MAKEALL
@@ -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