[pacman-dev] [PATCH] makepkg: more bash-3.2 compatibility

Dave Reisner d at falconindy.com
Fri Feb 4 20:02:19 EST 2011


On Sat, Feb 05, 2011 at 10:26:20AM +1000, Allan McRae wrote:
> Adding the "|| true" to the subshell prevents bash-3.2 setting off the
> error_trap but requires changing the if statement.
> 
> Signed-off-by: Allan McRae <allan at archlinux.org>
> ---
>  scripts/makepkg.sh.in |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
> index 13415fb..001178a 100644
> --- a/scripts/makepkg.sh.in
> +++ b/scripts/makepkg.sh.in
> @@ -507,8 +507,8 @@ download_sources() {
>  
>  	local netfile
>  	for netfile in "${source[@]}"; do
> -		local file
> -		if file=$(get_filepath "$netfile"); then
> +		local file=$(get_filepath "$netfile" || true)
> +		if [[ -n "$file" ]]; then
>  			msg2 "$(gettext "Found %s")" "${file##*/}"
>  			ln -sf "$file" "$srcdir/"
>  			continue
> -- 
> 1.7.4
> 
> 

I don't agree with this. The local keyword will actually mask the return
value of the command substitution and you will always return without
error. It's therefore sufficient to do:

  local file=$(get_filepath "$netfile")
  if [[ -n $file ]]; then
   ...

This also applies to any variable defined via the 'declare' builtin.

dave


More information about the pacman-dev mailing list