summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/libarchive/PKGBUILD19
-rw-r--r--core/libarchive/skip-fiemap-on-unavail.patch41
2 files changed, 52 insertions, 8 deletions
diff --git a/core/libarchive/PKGBUILD b/core/libarchive/PKGBUILD
index 1be3116b4..22c56502f 100644
--- a/core/libarchive/PKGBUILD
+++ b/core/libarchive/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 147657 2012-01-26 02:44:17Z dreisner $
+# $Id: PKGBUILD 151635 2012-02-29 01:57:14Z dreisner $
# Maintainer: Dan McGee <dan@archlinux.org>
pkgname=libarchive
pkgver=3.0.3
-pkgrel=3
+pkgrel=5
pkgdesc="library that can create and read several streaming archive formats"
arch=('i686' 'x86_64')
url="http://libarchive.googlecode.com/"
@@ -11,16 +11,16 @@ license=('BSD')
depends=('zlib' 'bzip2' 'xz>=5.0.0' 'acl' 'openssl>=1.0.0' 'expat')
source=("http://libarchive.googlecode.com/files/libarchive-${pkgver}.tar.gz"
'interpret-non-posix-zips.patch'
- 'test-with-zip-mtime.patch')
+ 'test-with-zip-mtime.patch'
+ 'skip-fiemap-on-unavail.patch')
md5sums=('ca4090f0099432a9ac5a8b6618dc3892'
'f02b88eb10877c7a7d527ed89c662e44'
- '8366def6d7d70d424fa28a986c78c015')
+ '8366def6d7d70d424fa28a986c78c015'
+ 'efa7cbda9fc64a4f1392324d0b5707e2')
sha256sums=('c5fc7620f74a54b1717e4aed38aee85dc27a988ad1db7640f28eb63a82ea62d7'
'9d8240a360d61464dfc5a98342f520ad41b0f922261f2ace7ec1fefb8c289bdc'
- 'b7a8be5c1e3220960a9f67c9779b10d2663e25d72939546b4f01a49f1ee3a61f')
-
-# keep an upgrade path for older installations
-PKGEXT='.pkg.tar.gz'
+ 'b7a8be5c1e3220960a9f67c9779b10d2663e25d72939546b4f01a49f1ee3a61f'
+ '05696eb87bf60520aff3a9d6afb4e40273ecca25e0a01a6d5a3669642f07b444')
build() {
cd "$srcdir/$pkgname-$pkgver"
@@ -31,6 +31,9 @@ build() {
# http://code.google.com/p/libarchive/issues/detail?id=231
patch -Np0 <"$srcdir/test-with-zip-mtime.patch"
+ # http://code.google.com/p/libarchive/issues/detail?id=238
+ patch -Np1 <"$srcdir/skip-fiemap-on-unavail.patch"
+
./configure --prefix=/usr --without-xml2
make
}
diff --git a/core/libarchive/skip-fiemap-on-unavail.patch b/core/libarchive/skip-fiemap-on-unavail.patch
new file mode 100644
index 000000000..d054aea4e
--- /dev/null
+++ b/core/libarchive/skip-fiemap-on-unavail.patch
@@ -0,0 +1,41 @@
+From 293687358e2c52213a3f077bb3d8f860ea5bfda9 Mon Sep 17 00:00:00 2001
+From: Michihiro NAKAJIMA <ggcueroad@gmail.com>
+Date: Mon, 6 Feb 2012 04:51:16 +0900
+Subject: [PATCH] Fix issue 238. Skip the setup sparse on linux without a
+ check of errno if ioctl(,FS_IOC_FIEMAP,) failed because the
+ errno is not fixed , for example, some file system returns
+ ENOTTY, another returns EOPNOTSUPP, or EINVAL and so on. We
+ cannot decide what errno exactly indicates an unsupported
+ error.
+
+---
+ libarchive/archive_read_disk_entry_from_file.c | 13 +++----------
+ 1 file changed, 3 insertions(+), 10 deletions(-)
+
+diff --git a/libarchive/archive_read_disk_entry_from_file.c b/libarchive/archive_read_disk_entry_from_file.c
+index eef42ef74..6415008 100644
+--- a/libarchive/archive_read_disk_entry_from_file.c
++++ b/libarchive/archive_read_disk_entry_from_file.c
+@@ -859,16 +859,9 @@ setup_sparse(struct archive_read_disk *a,
+
+ r = ioctl(fd, FS_IOC_FIEMAP, fm);
+ if (r < 0) {
+- /* When errno is ENOTTY, it is better we should
+- * return ARCHIVE_OK because an earlier version
+- *(<2.6.28) cannot perfom FS_IOC_FIEMAP.
+- * We should also check if errno is EOPNOTSUPP,
+- * it means "Operation not supported". */
+- if (errno != ENOTTY && errno != EOPNOTSUPP) {
+- archive_set_error(&a->archive, errno,
+- "FIEMAP failed");
+- exit_sts = ARCHIVE_FAILED;
+- }
++ /* When something error happens, it is better we
++ * should return ARCHIVE_OK because an earlier
++ * version(<2.6.28) cannot perfom FS_IOC_FIEMAP. */
+ goto exit_setup_sparse;
+ }
+ if (fm->fm_mapped_extents == 0)
+--
+1.7.9.2
+