[pacman-dev] [PATCH] Manually check xdelta exit codes.
Dan McGee
dpmcgee at gmail.com
Sun Oct 14 12:35:16 EDT 2007
On 10/14/07, Nathan Jones <nathanj at insightbb.com> wrote:
> 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 at insightbb.com>
> ---
> scripts/makepkg.sh.in | 29 ++++++++++++++++++++---------
> 1 files changed, 20 insertions(+), 9 deletions(-)
>
> diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
> index 4a68c84..4399076 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
> --
Cool, I was going to suggest using $ret but you figured it out first. :)
I'll pull this into my working branch, thanks!
-Dan
More information about the pacman-dev
mailing list