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 <[email protected]>
> ---
> 
> 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
> 
> 

Reply via email to