@@ -309,8 +309,12 @@ build() {
309
309
LOGFILE=" $_LOGFILE "
310
310
built_packages_p5m $SCRIPT
311
311
else
312
- PATH=$PATH :. $SCRIPT -r $PKGSRVR $build_flags $extra_flags || \
312
+ PATH=$PATH :. $SCRIPT -r $PKGSRVR $build_flags $extra_flags
313
+ if (( $? != 0 )) ; then
314
+ typeset log=" ` ls -1tr * .log | tail -1` "
315
+ [ -n " $log " ] && cp " $log " ../last-failure.log
313
316
logerr " Unable to run $SCRIPT "
317
+ fi
314
318
[ -z " $extra_flags " ] && built_packages_sh $SCRIPT
315
319
fi
316
320
popd > /dev/null
@@ -434,13 +438,19 @@ reap_slot() {
434
438
typeset -i ret=0
435
439
436
440
case $stat in
437
- 0) logmsg -n " -- Job $slot ($job ) terminated normally"
438
- ;;
439
- * ) logmsg -e " -- Job $slot ($job ) terminated with status $stat "
440
- note -e " ***** BUILD ERROR ***** ($job /$stat )"
441
- builderr+=($job )
442
- ret=1
443
- ;;
441
+ 0) logmsg -n " -- Job $slot ($job ) terminated normally"
442
+ ;;
443
+ 127) logmsg -e " -- Job $slot ($job ) terminated with status $stat "
444
+ # 127 is not considered an error because it reflects a job
445
+ # which went away while we were not waiting for something to
446
+ # exit. That race may be worth closing some day but for now
447
+ # move on.
448
+ ;;
449
+ * ) logmsg -e " -- Job $slot ($job ) terminated with status $stat "
450
+ note -e " ***** BUILD ERROR ***** ($job /$stat )"
451
+ builderr+=($job )
452
+ ret=1
453
+ ;;
444
454
esac
445
455
unset slots[$slot ]
446
456
return $ret
@@ -746,6 +756,9 @@ parallel_build() {
746
756
747
757
date
748
758
logmsg " Total build time: $( print_elapsed $(( `date +% s` - build_start)) ) "
759
+
760
+ [ -n " $builderr " ] && return 1
761
+ return 0
749
762
}
750
763
751
764
usage () {
@@ -913,6 +926,5 @@ case "$1" in
913
926
;;
914
927
esac
915
928
916
-
917
929
# Vim hints
918
930
# vim:ts=4:sw=4:et:
0 commit comments