diff options
author | Andreas Bießmann <andreas.devel@googlemail.com> | 2013-02-07 22:35:57 +0000 |
---|---|---|
committer | Tom Rini <trini@ti.com> | 2013-03-11 17:00:28 -0400 |
commit | 6bdd9f89673e694df8a1bac6c129b21739ed8a7c (patch) | |
tree | f376fe2a1ed7a4d905c826b32c1b520c2385974c /MAKEALL | |
parent | c08349e77c2353f23397ff60b6faec3cd0304061 (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-x | MAKEALL | 16 |
1 files changed, 14 insertions, 2 deletions
@@ -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 |