[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