[pacman-dev] [PATCH] Ensure build failure if a single build() command fails

Allan McRae allan at archlinux.org
Fri Jun 12 22:02:18 EDT 2009


Jürgen Hötzel wrote:
> Hi,
>
> I doubt this was by intention:
>
> errors in build() functions are only fatal, if "--log" is enabled. 
>
> I just made a buggy pkg because some "install ..." commands
> where not handled by "|| return 1".
>
> Our PKGBUILDs are cluttert full of "|| return 1". Failing commands in
> build functions should always result in an build error.
>  
> Signed-off-by: Juergen Hoetzel <juergen at archlinux.org>
> ---
>  scripts/makepkg.sh.in |    7 ++++---
>  1 files changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
> index f46b7f8..84d4599 100644
> --- a/scripts/makepkg.sh.in
> +++ b/scripts/makepkg.sh.in
> @@ -703,6 +703,7 @@ run_build() {
>  	local ret=0
>  	if [ "$LOGGING" -eq 1 ]; then
>  		BUILDLOG="${startdir}/${pkgbase}-${pkgver}-${pkgrel}-${CARCH}-build.log"
> +		BUILDLOG_CMD="tee $BUILDLOG"
>  		if [ -f "$BUILDLOG" ]; then
>  			local i=1
>  			while true; do
> @@ -714,11 +715,11 @@ run_build() {
>  			done
>  			mv "$BUILDLOG" "$BUILDLOG.$i"
>  		fi
> -
> -		build 2>&1 | tee "$BUILDLOG"; ret=${PIPESTATUS[0]}
>  	else
> -		build 2>&1 || ret=$?
> +		BUILDLOG_CMD="cat -"
>  	fi
> +
> +	build 2>&1 | ${BUILDLOG_CMD}; ret=${PIPESTATUS[0]}
>  	# reset our shell options
>  	eval "$shellopts"

Seems fine.  We will want to do the "cat -" thing in run_package too to 
catch packaging errors.   In fact, as the tee mechanism is so different 
there, we will need to check that it actually catches errors...

Allan






More information about the pacman-dev mailing list