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