summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Jones <nathanj@insightbb.com>2007-10-14 11:59:38 -0400
committerDan McGee <dan@archlinux.org>2007-10-14 17:54:32 -0500
commitabce73de4cc124da946a4da2d413b784332d91db (patch)
tree05985c93167a15cacc8d60d778222db3c70fa8c1
parent0adedc536fe372b4def5954f3b24ca63ff86aecf (diff)
downloadpacman-abce73de4cc124da946a4da2d413b784332d91db.tar.xz
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>
-rw-r--r--scripts/makepkg.sh.in29
1 files changed, 20 insertions, 9 deletions
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index 4a68c844..4399076b 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -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"
-
- # 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"
+ xdelta delta "$base_file" "$pkg_file" "$delta_file" || ret=$?
+
+ 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