public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 1/2] MAKEALL: Fix kill_children
@ 2012-10-31  1:55 Joe Hershberger
  2012-10-31  1:55 ` [U-Boot] [PATCH 2/2] MAKEALL: Add options for incremental building Joe Hershberger
                   ` (4 more replies)
  0 siblings, 5 replies; 14+ messages in thread
From: Joe Hershberger @ 2012-10-31  1:55 UTC (permalink / raw)
  To: u-boot

When building in parallel, make sure that we look up the children
based on the the actual process group id instead of just assuming
that the MAKEALL pid is the process group id.

Also ensure that logs from incomplete builds are deleted in the
process.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
---
 MAKEALL | 26 ++++++++++++++++++++++++--
 1 file changed, 24 insertions(+), 2 deletions(-)

diff --git a/MAKEALL b/MAKEALL
index 84a5c92..1f88dc5 100755
--- a/MAKEALL
+++ b/MAKEALL
@@ -610,6 +610,13 @@ list_target() {
 donep="${LOG_DIR}/._done_"
 skipp="${LOG_DIR}/._skip_"
 
+build_target_killed() {
+	echo "Aborted $target build."
+	# Remove the logs for this board since it was aborted
+	rm -f ${LOG_DIR}/$target.MAKELOG ${LOG_DIR}/$target.ERR
+	exit
+}
+
 build_target() {
 	target=$1
 	build_idx=$2
@@ -622,6 +629,7 @@ build_target() {
 	if [ $BUILD_MANY == 1 ] ; then
 		output_dir="${OUTPUT_PREFIX}/${target}"
 		mkdir -p "${output_dir}"
+		trap build_target_killed TERM
 	else
 		output_dir="${OUTPUT_PREFIX}"
 	fi
@@ -640,6 +648,8 @@ build_target() {
 	fi
 
 	if [ $BUILD_MANY == 1 ] ; then
+		trap - TERM
+
 		${MAKE} -s tidy
 
 		if [ -s ${LOG_DIR}/${target}.ERR ] ; then
@@ -721,7 +731,9 @@ build_targets() {
 			if [ $BUILD_MANY == 1 ] ; then
 				build_target ${t} ${TOTAL_CNT} &
 			else
+				CUR_TGT="${t}"
 				build_target ${t} ${TOTAL_CNT}
+				CUR_TGT=''
 			fi
 		fi
 
@@ -745,7 +757,11 @@ build_targets() {
 #-----------------------------------------------------------------------
 
 kill_children() {
-	kill -- "-$1"
+	local pgid=`ps -p $$ --no-headers -o "%r" | tr -d ' '`
+	local children=`pgrep -g $pgid | grep -v $$ | grep -v $pgid`
+
+	kill $children 2> /dev/null
+	wait $children 2> /dev/null
 
 	exit
 }
@@ -753,6 +769,9 @@ kill_children() {
 print_stats() {
 	if [ "$ONLY_LIST" == 'y' ] ; then return ; fi
 
+	# Only count boards that completed
+	: $((TOTAL_CNT = `find ${skipp}* 2> /dev/null | wc -l`))
+
 	rm -f ${donep}* ${skipp}*
 
 	if [ $BUILD_MANY == 1 ] && [ -e "${OUTPUT_PREFIX}/ERR" ] ; then
@@ -762,6 +781,9 @@ print_stats() {
 		WRN_LIST=`grep -riwL error ${OUTPUT_PREFIX}/ERR/`
 		WRN_LIST=`for f in $WRN_LIST ; do echo -n " $(basename $f)" ; done`
 		WRN_CNT=`echo $WRN_LIST | wc -w | awk '{print $1}'`
+	else
+		# Remove the logs for any board that was interrupted
+		rm -f ${LOG_DIR}/${CUR_TGT}.MAKELOG ${LOG_DIR}/${CUR_TGT}.ERR
 	fi
 
 	echo ""
@@ -776,7 +798,7 @@ print_stats() {
 	echo "----------------------------------------------------------"
 
 	if [ $BUILD_MANY == 1 ] ; then
-		kill_children $$ &
+		kill_children
 	fi
 
 	exit $RC
-- 
1.7.11.5

^ permalink raw reply related	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2012-12-07 15:50 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-10-31  1:55 [U-Boot] [PATCH 1/2] MAKEALL: Fix kill_children Joe Hershberger
2012-10-31  1:55 ` [U-Boot] [PATCH 2/2] MAKEALL: Add options for incremental building Joe Hershberger
2012-10-31 20:22   ` Simon Glass
2012-12-07 15:50   ` Tom Rini
2012-10-31 20:21 ` [U-Boot] [PATCH 1/2] MAKEALL: Fix kill_children Simon Glass
2012-11-01  2:32 ` Marek Vasut
2012-11-01  3:02   ` Tom Rini
2012-11-01  4:14   ` Andy Fleming
2012-11-01 14:35     ` Marek Vasut
2012-11-01 15:23       ` Tom Rini
2012-11-03 22:54 ` Tom Rini
2012-11-05  0:13   ` Joe Hershberger
2012-11-05  0:53     ` Tom Rini
2012-12-07 15:50 ` Tom Rini

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox