Skip to content
Snippets Groups Projects
Commit c97d59cb authored by Joe Hershberger's avatar Joe Hershberger Committed by Tom Rini
Browse files

MAKEALL: Fix kill_children


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: default avatarJoe Hershberger <joe.hershberger@ni.com>
Acked-by: default avatarSimon Glass <sjg@chromium.org>
Tested-by: default avatarSimon Glass <sjg@chromium.org>
parent 468ebf19
No related branches found
No related tags found
No related merge requests found
...@@ -616,6 +616,13 @@ list_target() { ...@@ -616,6 +616,13 @@ list_target() {
donep="${LOG_DIR}/._done_" donep="${LOG_DIR}/._done_"
skipp="${LOG_DIR}/._skip_" 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() { build_target() {
target=$1 target=$1
build_idx=$2 build_idx=$2
...@@ -628,6 +635,7 @@ build_target() { ...@@ -628,6 +635,7 @@ build_target() {
if [ $BUILD_MANY == 1 ] ; then if [ $BUILD_MANY == 1 ] ; then
output_dir="${OUTPUT_PREFIX}/${target}" output_dir="${OUTPUT_PREFIX}/${target}"
mkdir -p "${output_dir}" mkdir -p "${output_dir}"
trap build_target_killed TERM
else else
output_dir="${OUTPUT_PREFIX}" output_dir="${OUTPUT_PREFIX}"
fi fi
...@@ -646,6 +654,8 @@ build_target() { ...@@ -646,6 +654,8 @@ build_target() {
fi fi
if [ $BUILD_MANY == 1 ] ; then if [ $BUILD_MANY == 1 ] ; then
trap - TERM
${MAKE} -s tidy ${MAKE} -s tidy
if [ -s ${LOG_DIR}/${target}.ERR ] ; then if [ -s ${LOG_DIR}/${target}.ERR ] ; then
...@@ -727,7 +737,9 @@ build_targets() { ...@@ -727,7 +737,9 @@ build_targets() {
if [ $BUILD_MANY == 1 ] ; then if [ $BUILD_MANY == 1 ] ; then
build_target ${t} ${TOTAL_CNT} & build_target ${t} ${TOTAL_CNT} &
else else
CUR_TGT="${t}"
build_target ${t} ${TOTAL_CNT} build_target ${t} ${TOTAL_CNT}
CUR_TGT=''
fi fi
fi fi
...@@ -751,7 +763,11 @@ build_targets() { ...@@ -751,7 +763,11 @@ build_targets() {
#----------------------------------------------------------------------- #-----------------------------------------------------------------------
kill_children() { 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 exit
} }
...@@ -759,6 +775,9 @@ kill_children() { ...@@ -759,6 +775,9 @@ kill_children() {
print_stats() { print_stats() {
if [ "$ONLY_LIST" == 'y' ] ; then return ; fi 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}* rm -f ${donep}* ${skipp}*
if [ $BUILD_MANY == 1 ] && [ -e "${OUTPUT_PREFIX}/ERR" ] ; then if [ $BUILD_MANY == 1 ] && [ -e "${OUTPUT_PREFIX}/ERR" ] ; then
...@@ -768,6 +787,9 @@ print_stats() { ...@@ -768,6 +787,9 @@ print_stats() {
WRN_LIST=`grep -riwL error ${OUTPUT_PREFIX}/ERR/` WRN_LIST=`grep -riwL error ${OUTPUT_PREFIX}/ERR/`
WRN_LIST=`for f in $WRN_LIST ; do echo -n " $(basename $f)" ; done` WRN_LIST=`for f in $WRN_LIST ; do echo -n " $(basename $f)" ; done`
WRN_CNT=`echo $WRN_LIST | wc -w | awk '{print $1}'` 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 fi
echo "" echo ""
...@@ -782,7 +804,7 @@ print_stats() { ...@@ -782,7 +804,7 @@ print_stats() {
echo "----------------------------------------------------------" echo "----------------------------------------------------------"
if [ $BUILD_MANY == 1 ] ; then if [ $BUILD_MANY == 1 ] ; then
kill_children $$ & kill_children
fi fi
exit $RC exit $RC
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment