[pacman-dev] [PATCH] makepkg: fix error on unnecessary -r

Dave Reisner d at falconindy.com
Fri Jan 20 08:59:38 EST 2012


On Fri, Jan 20, 2012 at 11:24:23PM +1000, Allan McRae wrote:
> The grep statement used to check for a difference between the
> installed package list before and after resolving dependencies
> returns 1 if there is no difference.  This sets of the error
> trap when "-r" is used "unnecessarily".
> 
> Signed-off-by: Allan McRae <allan at archlinux.org>
> ---
> 
> Dave: would you prefer this fix or just using $(set +E; grep ...)
>
>  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 f6d8294..4792c5c 100644
> --- a/scripts/makepkg.sh.in
> +++ b/scripts/makepkg.sh.in
> @@ -507,14 +507,15 @@ remove_deps() {
>  	# check for packages removed during dependency install (e.g. due to conflicts)
>  	# removing all installed packages is risky in this case
>  	if [[ -n $(grep -xvFf <(printf '%s\n' "${current_packagelist[@]}") \
> -			<(printf '%s\n' "${original_packagelist[@]}") ) ]]; then
> +			<(printf '%s\n' "${original_packagelist[@]}") || true) ]]; then
>  		warning "$(gettext "Failed to remove installed dependencies.")"
>  		return 0
>  	fi

I'd prefer we fix the need for this hackery and not embed grep inside a
test.

if grep -qxvFf <(...) <(...); then

grep exits 0 when output is generated, and we can throw the warning.
Since it's guarded by an 'if' block, there's no need to worry about it
"failing" setting off the ERR trap.

>  
>  	local deplist
> -	if ! deplist=($(grep -xvFf <(printf "%s\n" "${original_pkglist[@]}") \
> -			<(printf "%s\n" "${current_pkglist[@]}"))); then
> +	deplist=($(grep -xvFf <(printf "%s\n" "${original_pkglist[@]}") \
> +			<(printf "%s\n" "${current_pkglist[@]}") || true))
> +	if [[ -n deplist ]]; then

My brain tells me there's a way to avoid this, but I'm not sure I trust
it right now.

>  		return
>  	fi
>  
> -- 
> 1.7.8.4
> 
> 


More information about the pacman-dev mailing list