[pacman-dev] [PATCH] xdelta : only handle gz compression specifically
There is apparently no need to handle the re-compression manually when applying a xdelta patch in case of bzip2 or xz. Only gzip needs to be handled specifically for disabling timestamp with the -n option. After this patch, if xdelta is enhanced with xz support (1-line patch), it will be transparent from pacman side. Signed-off-by: Xavier Chantry <shiningxc@gmail.com> --- lib/libalpm/sync.c | 11 ++++------- 1 files changed, 4 insertions(+), 7 deletions(-) Note that this patch is completely untested :P diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c index abda147..35e6fca 100644 --- a/lib/libalpm/sync.c +++ b/lib/libalpm/sync.c @@ -622,15 +622,12 @@ static int apply_deltas(pmtrans_t *trans) snprintf(to, len, "%s/%s", cachedir, d->to); /* build the patch command */ - /* compression command */ - char *compress = "cat"; if(endswith(to, ".gz")) { - compress = "gzip -n"; - } else if(endswith(to, ".bz2")) { - compress = "bzip"; + /* special handling for gzip : we disable timestamp with -n option */ + snprintf(command, PATH_MAX, "xdelta3 -d -q -R -c -s %s %s | gzip -n > %s", from, delta, to); + } else { + snprintf(command, PATH_MAX, "xdelta3 -d -q -s %s %s %s", from, delta, to); } - /* -R for disabling external recompression, -c for sending to stdout */ - snprintf(command, PATH_MAX, "xdelta3 -d -q -R -c -s %s %s | %s > %s", from, delta, compress, to); _alpm_log(PM_LOG_DEBUG, "command: %s\n", command); -- 1.6.3.1
On Tue, May 19, 2009 at 4:39 PM, Xavier <shiningxc@gmail.com> wrote:
There is apparently no need to handle the re-compression manually when applying a xdelta patch in case of bzip2 or xz.
Only gzip needs to be handled specifically for disabling timestamp with the -n option.
After this patch, if xdelta is enhanced with xz support (1-line patch), it will be transparent from pacman side.
Signed-off-by: Xavier Chantry <shiningxc@gmail.com> --- lib/libalpm/sync.c | 11 ++++------- 1 files changed, 4 insertions(+), 7 deletions(-)
Note that this patch is completely untested :P
I tested it now and it works fine. Though I just tested these cases : 1) gz packages 2) xz packages with patched xdelta But all the others cases should be like 2) so it's fine, I checked this by playing directly with xdelta. About xz packages and unpatched xdelta, I tested on 100 packages and the delta were always bigger than 80% of the package size, so bigger than the max delta ratio we defined (70%), so pacman will never use them anyway.
participants (1)
-
Xavier