Manually check xdelta exit codes.

This is needed because 'xdelta delta' returns 1 even when the delta
creation succeeds. This was causing makepkg to exit after the command
due to bash's -e option.

Some information from the xdelta man page:
The delta command exits with status 0 to indicate that no differences
were found, with status 1 to indicate that some differences were found,
and with status 2 to indicate an error of some kind.

Signed-off-by: Nathan Jones <nathanj@insightbb.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
Nathan Jones 2007-10-14 11:59:38 -04:00 committed by Dan McGee
parent 0adedc536f
commit abce73de4c
1 changed files with 19 additions and 8 deletions

View File

@ -899,18 +899,29 @@ create_xdelta() {
if [ "$base_file" != "" ]; then
msg "$(gettext "Making delta from version %s...")" "$latest_version"
local delta_file="$PKGDEST/$pkgname-${latest_version}_to_$pkgver-$pkgrel-$CARCH.delta"
local ret=0
# xdelta will decompress base_file & pkg_file into TMP_DIR (or /tmp if
# TMP_DIR is unset) then perform the delta on the resulting tars
xdelta delta "$base_file" "$pkg_file" "$delta_file"
xdelta delta "$base_file" "$pkg_file" "$delta_file" || ret=$?
# Generate the final gz using xdelta for compression. xdelta will be our
# common denominator compression utility between the packager and the users
# makepkg and pacman must use the same compression algorithm or the delta
# generated package may not match, producing md5 checksum errors.
msg2 "$(gettext "Recreating package tarball from delta to match md5 signatures")"
msg2 "$(gettext "NOTE: the delta should ONLY be distributed with this tarball")"
xdelta patch "$delta_file" "$base_file" "$pkg_file"
if [ $ret -eq 0 -o $ret -eq 1 ]; then
# Generate the final gz using xdelta for compression. xdelta will be our
# common denominator compression utility between the packager and the
# users. makepkg and pacman must use the same compression algorithm or
# the delta generated package may not match, producing md5 checksum
# errors.
msg2 "$(gettext "Recreating package tarball from delta to match md5 signatures")"
msg2 "$(gettext "NOTE: the delta should ONLY be distributed with this tarball")"
ret=0
xdelta patch "$delta_file" "$base_file" "$pkg_file" || ret=$?
if [ $ret -ne 0 ]; then
error "$(gettext "Could not generate the package from the delta.")"
exit 1
fi
else
warning "$(gettext "Delta was not able to be created.")"
fi
else
warning "$(gettext "No previous version found, skipping xdelta.")"
fi