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@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