[pacman-dev] [PATCH] makepkg: avoid using comm for diff'ing package lists

Allan McRae allan at archlinux.org
Tue Nov 22 01:33:37 EST 2011


On 22/11/11 15:02, Dave Reisner wrote:
> Whereas comm will check inputs to see if they're sorted (and warn when
> they aren't), grep doesn't even care about ordering. In this particular
> instance -- neither do we. We're only interested that the two lists are
> equivalent.
>
> Fixes FS#26580.
>
> Signed-off-by: Dave Reisner<dreisner at archlinux.org>
> ---

I had not seen this when I sent my patch.   Would comm not be more 
efficient than grep for doing this?


>   scripts/makepkg.sh.in |   16 +++++++++-------
>   1 files changed, 9 insertions(+), 7 deletions(-)
>
> diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
> index 26a2789..0fa05dc 100644
> --- a/scripts/makepkg.sh.in
> +++ b/scripts/makepkg.sh.in
> @@ -506,15 +506,17 @@ 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  $(comm -23<(printf "%s\n" "${original_pkglist[@]}") \
> -			<(printf "%s\n" "${current_pkglist[@]}")) ]]; then
> -	  warning "$(gettext "Failed to remove installed dependencies.")"
> -	  return 0
> +	if [[ -n $(grep -xvFf<(printf '%s\n' "${current_packagelist[@]}") \
> +			<(printf '%s\n' "${original_packagelist[@]}") ) ]]; then
> +		warning "$(gettext "Failed to remove installed dependencies.")"
> +		return 0
>   	fi
>
> -	local deplist=($(comm -13<(printf "%s\n" "${original_pkglist[@]}") \
> -			<(printf "%s\n" "${current_pkglist[@]}")))
> -	(( ${#deplist[@]} == 0 ))&&  return
> +	local deplist
> +	if ! deplist=($(grep -xvFf<(printf "%s\n" "${original_pkglist[@]}") \
> +			<(printf "%s\n" "${current_pkglist[@]}"))); then
> +		return
> +	fi
>
>   	msg "Removing installed dependencies..."
>   	# exit cleanly on failure to remove deps as package has been built successfully



More information about the pacman-dev mailing list