summaryrefslogtreecommitdiff
path: root/core/libarchive
diff options
context:
space:
mode:
Diffstat (limited to 'core/libarchive')
-rw-r--r--core/libarchive/PKGBUILD15
-rw-r--r--core/libarchive/libarchive-3.0.x-fix-mtree-writer.patch34
2 files changed, 44 insertions, 5 deletions
diff --git a/core/libarchive/PKGBUILD b/core/libarchive/PKGBUILD
index e3f73850b..1b87145a3 100644
--- a/core/libarchive/PKGBUILD
+++ b/core/libarchive/PKGBUILD
@@ -1,20 +1,25 @@
-# $Id: PKGBUILD 155375 2012-04-02 16:12:53Z dan $
+# $Id: PKGBUILD 167058 2012-09-25 03:07:21Z allan $
# Maintainer: Dan McGee <dan@archlinux.org>
pkgname=libarchive
pkgver=3.0.4
-pkgrel=1
+pkgrel=2
pkgdesc="library that can create and read several streaming archive formats"
arch=('i686' 'x86_64')
url="http://libarchive.googlecode.com/"
license=('BSD')
depends=('zlib' 'bzip2' 'xz>=5.0.0' 'acl' 'openssl>=1.0.0' 'expat')
-source=("https://github.com/downloads/libarchive/libarchive/libarchive-${pkgver}.tar.gz")
-md5sums=('af443ca9a10ddbcbf00f7ae34ca7fc16')
-sha256sums=('76e8d7c7b100ec4071e48c1b7d3f3ea1d22b39db3e45b7189f75b5ff4df90fac')
+source=("https://github.com/downloads/libarchive/libarchive/libarchive-${pkgver}.tar.gz"
+ libarchive-3.0.x-fix-mtree-writer.patch)
+md5sums=('af443ca9a10ddbcbf00f7ae34ca7fc16'
+ '6d36a50a7282db6576bd1fbc23f08055')
+sha256sums=('76e8d7c7b100ec4071e48c1b7d3f3ea1d22b39db3e45b7189f75b5ff4df90fac'
+ 'f0081c0d7d7875fc91c683b14fe4876d56b6585f45be9181c755eba4b522f5b9')
+
build() {
cd "$srcdir/$pkgname-$pkgver"
+ patch -Np1 -i $srcdir/libarchive-3.0.x-fix-mtree-writer.patch
./configure --prefix=/usr --without-xml2
make
}
diff --git a/core/libarchive/libarchive-3.0.x-fix-mtree-writer.patch b/core/libarchive/libarchive-3.0.x-fix-mtree-writer.patch
new file mode 100644
index 000000000..dbc89686a
--- /dev/null
+++ b/core/libarchive/libarchive-3.0.x-fix-mtree-writer.patch
@@ -0,0 +1,34 @@
+--- a/libarchive/archive_write_set_format_mtree.c
++++ b/libarchive/archive_write_set_format_mtree.c
+@@ -887,6 +887,19 @@ write_entry(struct archive_write *a, struct mtree_entry *me)
+
+ archive_string_empty(&mtree->ebuf);
+ str = (mtree->indent)? &mtree->ebuf : &mtree->buf;
++
++ /* If the pathname does not have a path separator, we have to
++ * add "./" to the head of the pathename because mtree reader
++ * will suppose that it is v1(a.k.a classic) mtree format and
++ * change the directory unexpectedly and so it will make a wrong
++ * path. */
++ if (strchr(me->pathname, '/') == NULL &&
++ strcmp(me->pathname, ".") != 0) {
++ archive_strcat(str, "./");
++ }
++ /* mtree reader does not accept an absolute path. */
++ else if (me->pathname[0] == '/')
++ archive_strappend_char(str, '.');
+ mtree_quote(str, me->pathname);
+ keys = get_keys(mtree, me);
+ if ((keys & F_NLINK) != 0 &&
+--- a/libarchive/test/test_read_format_mtree.c
++++ b/libarchive/test/test_read_format_mtree.c
+@@ -37,7 +37,8 @@ test_read_format_mtree1(void)
+ * without relying on overflow. This assumes that long long
+ * is at least 64 bits. */
+ static const long long max_int64 = ((((long long)1) << 62) - 1) + (((long long)1) << 62);
+- time_t min_time, t;
++ time_t min_time;
++ volatile time_t t;
+
+ extract_reference_file(reffile);
+ \ No newline at end of file