[U-Boot] [PATCH] MAKEALL: Fix return value
Peter Tyser
ptyser at xes-inc.com
Sun Dec 6 09:44:06 CET 2009
Thanks for looking the change over Mike.
On Sun, 2009-12-06 at 02:45 -0500, Mike Frysinger wrote:
> On Sunday 06 December 2009 02:09:34 Peter Tyser wrote:
> > ${MAKE} ${JOBS} all 2>&1 >${LOG_DIR}/$target.MAKELOG \
> > | tee ${LOG_DIR}/$target.ERR
>
> you could rewrite this to keep POSIX compliance:
> # need to maintain exit value ourselves as pipes eat it
> fail=${LOG_DIR}/$target.failed
> rm -f ${fail}
> (${MAKE} ${JOBS} all 2>&1 >${LOG_DIR}/$target.MAKELOG \
> || touch ${fail}) | tee ${LOG_DIR}/$target.ERR
> [ -e ${fail} ] && : $(( RC += 1 ))
> rm -f ${fail}
Ahh, clever. It doesn't really matter which way to me. PIPESTATUS
seems more straightforward, but maintaining POSIX compliance would be
nice too.
> > + # Keep a running total of all 'make' return values
> > + RC=$((RC + ${PIPESTATUS[0]}))
>
> this might be more natural:
> : $(( RC += ${PIPESTATUS[0]} ))
K.
> > + # Return how many board compiles failed, assuming 'make' returns 2
> > + # for builds which failed
> > + exit $(((RC + 1) / 2))
>
> the problem here is that exit statuses have a range of 256 values. so as soon
> as more than 255 boards fail, this wont work. maybe i'm being overly paranoid
> though ?
Good point. I can change RC into a bitwise OR of the 'make' return
values instead of a sum. I think 98% of the time people just want to
know if any board compile failed, not specifically how many boards
failed.
Peter
More information about the U-Boot
mailing list