[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