Package: pristine-tar
Version: 1.33
Tags: patch

sadly, the generated files are not compatible, see [1]

[1] https://github.com/jmacd/xdelta/issues/76
---
 pristine-gz  | 20 ++++++++++++++++++--
 pristine-tar | 20 ++++++++++++++++++--
 2 files changed, 36 insertions(+), 4 deletions(-)

diff --git a/pristine-gz b/pristine-gz
index ce115d5..9c5ff66 100755
--- a/pristine-gz
+++ b/pristine-gz
@@ -99,6 +99,13 @@ use File::Basename qw/basename/;
 # parameters as given to Makefile.PL.
 my $tar_program = "tar";
 my $xdelta_program = "xdelta";
+my $xdelta_version = 1;
+
+my $xdelta_version_output = `xdelta --version 2>&1`;
+if ($xdelta_version_output =~ /version 3/) {
+  $xdelta_version = 3
+}
+
 
 delete $ENV{GZIP};
 
@@ -240,7 +247,12 @@ sub reproducegz {
                else {
                        # generate a binary delta and see if this is the
                        # best variant so far
-                       my $ret=system("$xdelta_program delta -0 --pristine 
$tempout $orig $tempdir/tmpdelta 2>/dev/null") >> 8;
+                       my $ret;
+                       if ($xdelta_version == 1) {
+                               $ret=system("$xdelta_program delta -0 
--pristine $tempout $orig $tempdir/tmpdelta 2>/dev/null") >> 8;
+                       } else {
+                               $ret=system("$xdelta_program encode -0 -s 
$tempout $orig $tempdir/tmpdelta 2>/dev/null") >> 8;
+                       }
                        # xdelta exits 1 on success
                        if ($ret == 1) {
                                my $size=(stat("$tempdir/tmpdelta"))[7];
@@ -303,7 +315,11 @@ sub gengz {
                my $tempdir=tempdir();
                my $tfile="$tempdir/".basename($file).".gz";
                doit_redir($file, $tfile, @zgz);
-               doit($xdelta_program, "patch", "--pristine", $delta->{delta}, 
$tfile, "$file.gz");
+               if ($xdelta_version == 1) {
+                       doit($xdelta_program, "patch", "--pristine", 
$delta->{delta}, $tfile, "$file.gz");
+               } else {
+                       doit($xdelta_program, "decode", "-s", $tfile, 
$delta->{delta}, "$file.gz");
+               }
        }
        else {
                doit_redir("$file", "$file.gz", @zgz);
diff --git a/pristine-tar b/pristine-tar
index 0bf44e8..842e22d 100755
--- a/pristine-tar
+++ b/pristine-tar
@@ -198,6 +198,12 @@ $ENV{PRISTINE_TAR_COMPAT}=1;
 # parameters as given to Makefile.PL.
 my $tar_program = "tar";
 my $xdelta_program = "xdelta";
+my $xdelta_version = 1;
+
+my $xdelta_version_output = `xdelta --version 2>&1`;
+if ($xdelta_version_output =~ /version 3/) {
+  $xdelta_version = 3
+}
 
 my $message;
 
@@ -427,7 +433,12 @@ sub gentar {
        my $ok;
        foreach my $variant (@try) {
                my $recreatetarball=$variant->();
-               my $ret=try_doit($xdelta_program, "patch", $delta->{delta}, 
$recreatetarball, $out);
+               my $ret;
+               if ($xdelta_version == 1) {
+                       $ret=try_doit($xdelta_program, "patch", 
$delta->{delta}, $recreatetarball, $out);
+               } else {
+                       $ret=try_doit($xdelta_program, "decode", "-s", 
$recreatetarball, $delta->{delta}, $out);
+               }
                if ($ret == 0) {
                        $ok=1;
                        last;
@@ -539,7 +550,12 @@ sub gendelta {
        }
 
        $delta{delta}="$tempdir/delta";
-       my $ret=system("$xdelta_program delta -0 --pristine $recreatetarball 
$tarball $delta{delta}") >> 8;
+       my $ret;
+       if ($xdelta_version == 1) {
+               $ret=system("$xdelta_program delta -0 --pristine 
$recreatetarball $tarball $delta{delta}") >> 8;
+       } else {
+               $ret=system("$xdelta_program encode -0 -s $recreatetarball 
$tarball $delta{delta}") >> 8;
+       }
        # xdelta exits 1 on success if there were differences
        if ($ret != 1 && $ret != 0) {
                error "xdelta failed with return code $ret";
-- 
2.5.0

Reply via email to