summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohannes Dewender2015-06-25 00:07:11 +0200
committerJohannes Dewender2015-06-25 00:07:11 +0200
commitf73feb483e7052a9c624b5dbcc135af525f7992f (patch)
tree53d79f497caf2eb8333ed80d4da6b814acc83d61
downloadaur-f73feb483e7052a9c624b5dbcc135af525f7992f.tar.gz
pristine-tar: imported from AUR 3
-rw-r--r--.SRCINFO24
-rw-r--r--.gitignore8
-rw-r--r--0002-Use-posix-tar-format-by-default.patch54
-rw-r--r--0003-Mangle-PAX-headers-when-using-posix-tar-format.patch28
-rw-r--r--0004-Remove-all-timestamps-from-extended-PAX-headers.patch28
-rw-r--r--0010-workaround-for-some-broken-pristine-tar-branche.patch28
-rw-r--r--PKGBUILD53
7 files changed, 223 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..a9176115d9eb
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,24 @@
+pkgbase = pristine-tar
+ pkgdesc = Tool to regenerate a pristine upstream tarball using only a small binary delta file and a copy of the source which can be a revision control checkout.
+ pkgver = 1.32
+ pkgrel = 1
+ url = http://joeyh.name/code/pristine-tar/
+ arch = i686
+ arch = x86_64
+ license = GPL
+ depends = perl
+ depends = xdelta
+ conflicts = pristine-tar-git
+ source = http://ftp.debian.org/debian/pool/main/p/pristine-tar/pristine-tar_1.32.tar.gz
+ source = 0002-Use-posix-tar-format-by-default.patch
+ source = 0003-Mangle-PAX-headers-when-using-posix-tar-format.patch
+ source = 0004-Remove-all-timestamps-from-extended-PAX-headers.patch
+ source = 0010-workaround-for-some-broken-pristine-tar-branche.patch
+ sha256sums = 1df928c89fa3adb72ac1fcbc28253b392a7692b6f5a77c2855933253a4598d57
+ sha256sums = a41617db19c85b18b9b157b2cb3e523f5484472b434cc9f69717499e268e7fcf
+ sha256sums = c8848744d934eebe9d672f92f57b05929edc13f608835c7da367479ce1bdd992
+ sha256sums = a6ddb2602d536fa1f4a2e6f748ad8bac2aa49d8f533e3b5993f2f77716bcdb73
+ sha256sums = b7a3713c327fd68e49818ad38d5f550870095eebd094a5bd85dd59e815fde9a1
+
+pkgname = pristine-tar
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000000000000..bd9b4a41adc0
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,8 @@
+*.tar.gz
+*.tar.xz
+*.tgz
+*.rpm
+*.zip
+*.bz2
+src/
+pkg/
diff --git a/0002-Use-posix-tar-format-by-default.patch b/0002-Use-posix-tar-format-by-default.patch
new file mode 100644
index 000000000000..cf712c1f554a
--- /dev/null
+++ b/0002-Use-posix-tar-format-by-default.patch
@@ -0,0 +1,54 @@
+From: Markus Lehtonen <markus.lehtonen@linux.intel.com>
+Date: Fri, 31 May 2013 13:51:40 +0300
+Subject: Use posix tar format by default
+
+Should lead to smaller deltas as e.g. git-archive produces tarballs in
+posix format.
+
+The tar format guessing makes sure that pristine-tar commits generated
+with "gnu" tar format also are usable.
+
+Change-Id: I52c20b81c4b02ec22d3744d49b64415af14e0ab4
+Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
+---
+ pristine-tar | 11 +++++------
+ 1 file changed, 5 insertions(+), 6 deletions(-)
+
+diff --git a/pristine-tar b/pristine-tar
+index 1c321d4..f1fae98 100755
+--- a/pristine-tar
++++ b/pristine-tar
+@@ -396,12 +396,10 @@ sub gentar {
+
+ my @try;
+ push @try, sub { recreatetarball($delta->{manifest}, getcwd,
+- clobber_source => 0, %opts) };
+- push @try, \&recreatetarball_longlink_100;
++ clobber_source => 0, tar_format => "posix", %opts) };
+ push @try, sub { recreatetarball($delta->{manifest}, getcwd,
+ clobber_source => 0, tar_format => "gnu", %opts) };
+- push @try, sub { recreatetarball($delta->{manifest}, getcwd,
+- clobber_source => 0, tar_format => "posix", %opts) };
++ push @try, \&recreatetarball_longlink_100;
+
+ my $ok;
+ foreach my $variant (@try) {
+@@ -511,7 +509,8 @@ sub gendelta {
+ if ($#out == 0 && -d $out[0]) {
+ $sourcedir=$out[0];
+ }
+- $recreatetarball=recreatetarball("$tempdir/manifest", $sourcedir, clobber_source => 1);
++ $recreatetarball=recreatetarball("$tempdir/manifest", $sourcedir,
++ clobber_source => 1, tar_format => "posix");
+ }
+ else {
+ $recreatetarball=$opts{recreatetarball};
+@@ -778,7 +777,7 @@ sub commit {
+ my ($sourcedir, $id)=export($upstream);
+ genmanifest($tarball, "$tempdir/manifest");
+ my $recreatetarball=recreatetarball("$tempdir/manifest", $sourcedir,
+- clobber_source => 1, create_missing => 1);
++ clobber_source => 1, create_missing => 1, tar_format => "posix");
+ my $pid = open(GENDELTA, "-|");
+ if (! $pid) {
+ # child
diff --git a/0003-Mangle-PAX-headers-when-using-posix-tar-format.patch b/0003-Mangle-PAX-headers-when-using-posix-tar-format.patch
new file mode 100644
index 000000000000..bb2b4187af30
--- /dev/null
+++ b/0003-Mangle-PAX-headers-when-using-posix-tar-format.patch
@@ -0,0 +1,28 @@
+From: Markus Lehtonen <markus.lehtonen@linux.intel.com>
+Date: Thu, 6 Jun 2013 14:31:25 +0300
+Subject: Mangle PAX headers when using posix tar format
+
+Mangle tar PAX headers in order to guarantee that created tarballs are
+always identical so that the delta can be applied cleanly.
+
+Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
+---
+ pristine-tar | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/pristine-tar b/pristine-tar
+index f1fae98..3e92a74 100755
+--- a/pristine-tar
++++ b/pristine-tar
+@@ -357,6 +357,11 @@ sub recreatetarball_helper {
+ "--files-from", "$tempdir/manifest");
+ if (exists $options{tar_format}) {
+ push @cmd, ("-H", $options{tar_format});
++ if ($options{tar_format} eq 'posix') {
++ # Mangle PAX headers so that created tarballs are always identical
++ # so that delta can be successfully applied
++ push @cmd, ('--pax-option=exthdr.name=%d/PaxHeaders/%f,ctime:=0');
++ }
+ }
+
+ doit(@cmd);
diff --git a/0004-Remove-all-timestamps-from-extended-PAX-headers.patch b/0004-Remove-all-timestamps-from-extended-PAX-headers.patch
new file mode 100644
index 000000000000..4d5cbe217ebe
--- /dev/null
+++ b/0004-Remove-all-timestamps-from-extended-PAX-headers.patch
@@ -0,0 +1,28 @@
+From: Markus Lehtonen <markus.lehtonen@linux.intel.com>
+Date: Fri, 23 Aug 2013 00:47:12 +0300
+Subject: Remove all timestamps from extended PAX headers
+
+The timestamps can break pristine-tar generation as they are different
+every time an archive is generated from git (when using tree id
+instead of commit id as the sha-1 to checkout). Git uses the current
+time as the modification time of files when a tree is archived.
+
+Change-Id: I25fc631c4f1c62fc5ec2c1a8112dd01c643aae90
+Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
+---
+ pristine-tar | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/pristine-tar b/pristine-tar
+index 3e92a74..19af965 100755
+--- a/pristine-tar
++++ b/pristine-tar
+@@ -360,7 +360,7 @@ sub recreatetarball_helper {
+ if ($options{tar_format} eq 'posix') {
+ # Mangle PAX headers so that created tarballs are always identical
+ # so that delta can be successfully applied
+- push @cmd, ('--pax-option=exthdr.name=%d/PaxHeaders/%f,ctime:=0');
++ push @cmd, ('--pax-option=exthdr.name=%d/PaxHeaders/%f,mtime:=0,atime:=0,ctime:=0');
+ }
+ }
+
diff --git a/0010-workaround-for-some-broken-pristine-tar-branche.patch b/0010-workaround-for-some-broken-pristine-tar-branche.patch
new file mode 100644
index 000000000000..c264fb511364
--- /dev/null
+++ b/0010-workaround-for-some-broken-pristine-tar-branche.patch
@@ -0,0 +1,28 @@
+From: Markus Lehtonen <markus.lehtonen@linux.intel.com>
+Date: Fri, 29 Nov 2013 12:44:56 +0200
+Subject: HACK: workaround for some broken pristine-tar branches
+
+Created by previous buggy versions of the pristine-tar tool distributed
+for openSUSE in Tizen.
+
+Change-Id: I31b1b5527fa399dd0c4baff87b0775a0ff8da773
+Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
+---
+ pristine-bz2 | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/pristine-bz2 b/pristine-bz2
+index dbbe319..112d49e 100755
+--- a/pristine-bz2
++++ b/pristine-bz2
+@@ -263,6 +263,10 @@ sub genbz2 {
+ @params=split(' ', $delta->{params});
+
+ my $program=$delta->{program};
++ # Work around for some broken pristine-tar data in Tizen repos
++ if ($program =~ /.*upstream-bzip2\/bzip2$/) {
++ $program="bzip2"
++ }
+ if (! grep { $program eq $_ } @supported_bzip2_programs) {
+ die "paranoia check failed on program from delta ($program)";
+ }
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..c6747ce90180
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,53 @@
+# Maintainer: Patrick McCarty <pnorcks at gmail dot com>
+# Contributor: Jimmy Tang <jtang@tchpc.tcd.ie>
+
+pkgname=pristine-tar
+pkgver=1.32
+pkgrel=1
+pkgdesc="Tool to regenerate a pristine upstream tarball using only a small binary delta file and a copy of the source which can be a revision control checkout."
+arch=('i686' 'x86_64')
+url="http://joeyh.name/code/pristine-tar/"
+license=('GPL')
+depends=('perl' 'xdelta')
+conflicts=('pristine-tar-git')
+source=(http://ftp.debian.org/debian/pool/main/p/${pkgname}/${pkgname}_${pkgver}.tar.gz
+ 0002-Use-posix-tar-format-by-default.patch
+ 0003-Mangle-PAX-headers-when-using-posix-tar-format.patch
+ 0004-Remove-all-timestamps-from-extended-PAX-headers.patch
+ 0010-workaround-for-some-broken-pristine-tar-branche.patch)
+sha256sums=('1df928c89fa3adb72ac1fcbc28253b392a7692b6f5a77c2855933253a4598d57'
+ 'a41617db19c85b18b9b157b2cb3e523f5484472b434cc9f69717499e268e7fcf'
+ 'c8848744d934eebe9d672f92f57b05929edc13f608835c7da367479ce1bdd992'
+ 'a6ddb2602d536fa1f4a2e6f748ad8bac2aa49d8f533e3b5993f2f77716bcdb73'
+ 'b7a3713c327fd68e49818ad38d5f550870095eebd094a5bd85dd59e815fde9a1')
+
+prepare() {
+ cd "$srcdir/$pkgname"
+
+ # three patches used in the Tizen tools package (improvements for POSIX tar support)
+ patch -Np1 -i "$srcdir"/0002-Use-posix-tar-format-by-default.patch
+ patch -Np1 -i "$srcdir"/0003-Mangle-PAX-headers-when-using-posix-tar-format.patch
+ patch -Np1 -i "$srcdir"/0004-Remove-all-timestamps-from-extended-PAX-headers.patch
+
+ # extra patch for Tizen compat
+ patch -Np1 -i "$srcdir"/0010-workaround-for-some-broken-pristine-tar-branche.patch
+}
+
+build() {
+ cd "$srcdir/$pkgname"
+
+ export PATH=/usr/bin/core_perl:$PATH
+
+ perl Makefile.PL
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname"
+
+ make install DESTDIR=$pkgdir PREFIX=/usr INSTALLSITESCRIPT=/usr/bin
+ install -d $pkgdir/usr/share/doc/pristine-tar
+ install -D GPL TODO delta-format.txt $pkgdir/usr/share/doc/pristine-tar
+}
+
+# vim:set ts=2 sw=2 et: