Date: Wednesday, January 25, 2012 @ 21:44:17 Author: dreisner Revision: 147657
db-move: moved libarchive from [testing] to [core] (x86_64) Added: libarchive/repos/core-x86_64/PKGBUILD (from rev 147655, libarchive/repos/testing-x86_64/PKGBUILD) libarchive/repos/core-x86_64/interpret-non-posix-zips.patch (from rev 147655, libarchive/repos/testing-x86_64/interpret-non-posix-zips.patch) libarchive/repos/core-x86_64/test-with-zip-mtime.patch (from rev 147655, libarchive/repos/testing-x86_64/test-with-zip-mtime.patch) Deleted: libarchive/repos/core-x86_64/PKGBUILD libarchive/repos/core-x86_64/sparse-file.patch libarchive/repos/testing-x86_64/ --------------------------------+ PKGBUILD | 86 +++++++++++--------- interpret-non-posix-zips.patch | 165 +++++++++++++++++++++++++++++++++++++++ sparse-file.patch | 13 --- test-with-zip-mtime.patch | 23 +++++ 4 files changed, 237 insertions(+), 50 deletions(-) Deleted: core-x86_64/PKGBUILD =================================================================== --- core-x86_64/PKGBUILD 2012-01-26 02:44:15 UTC (rev 147656) +++ core-x86_64/PKGBUILD 2012-01-26 02:44:17 UTC (rev 147657) @@ -1,37 +0,0 @@ -# $Id$ -# Maintainer: Dan McGee <d...@archlinux.org> -pkgname=libarchive -pkgver=3.0.3 -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=("http://libarchive.googlecode.com/files/libarchive-${pkgver}.tar.gz") -md5sums=('ca4090f0099432a9ac5a8b6618dc3892') -sha256sums=('c5fc7620f74a54b1717e4aed38aee85dc27a988ad1db7640f28eb63a82ea62d7') - -# keep an upgrade path for older installations -PKGEXT='.pkg.tar.gz' - -build() { - cd "$srcdir/$pkgname-$pkgver" - - ./configure --prefix=/usr --without-xml2 - make -} - -check() { - cd "$srcdir/$pkgname-$pkgver" - - # currently fails on i686 in a minor test involving atime updates (#60) - make check || : -} - -package() { - cd "$srcdir/$pkgname-$pkgver" - make DESTDIR="$pkgdir" install - - install -D -m644 COPYING "$pkgdir"/usr/share/licenses/libarchive/COPYING -} Copied: libarchive/repos/core-x86_64/PKGBUILD (from rev 147655, libarchive/repos/testing-x86_64/PKGBUILD) =================================================================== --- core-x86_64/PKGBUILD (rev 0) +++ core-x86_64/PKGBUILD 2012-01-26 02:44:17 UTC (rev 147657) @@ -0,0 +1,49 @@ +# $Id$ +# Maintainer: Dan McGee <d...@archlinux.org> + +pkgname=libarchive +pkgver=3.0.3 +pkgrel=3 +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=("http://libarchive.googlecode.com/files/libarchive-${pkgver}.tar.gz" + 'interpret-non-posix-zips.patch' + 'test-with-zip-mtime.patch') +md5sums=('ca4090f0099432a9ac5a8b6618dc3892' + 'f02b88eb10877c7a7d527ed89c662e44' + '8366def6d7d70d424fa28a986c78c015') +sha256sums=('c5fc7620f74a54b1717e4aed38aee85dc27a988ad1db7640f28eb63a82ea62d7' + '9d8240a360d61464dfc5a98342f520ad41b0f922261f2ace7ec1fefb8c289bdc' + 'b7a8be5c1e3220960a9f67c9779b10d2663e25d72939546b4f01a49f1ee3a61f') + +# keep an upgrade path for older installations +PKGEXT='.pkg.tar.gz' + +build() { + cd "$srcdir/$pkgname-$pkgver" + + # http://code.google.com/p/libarchive/issues/detail?id=225 + patch -Np0 <"$srcdir/interpret-non-posix-zips.patch" + + # http://code.google.com/p/libarchive/issues/detail?id=231 + patch -Np0 <"$srcdir/test-with-zip-mtime.patch" + + ./configure --prefix=/usr --without-xml2 + make +} + +check() { + cd "$srcdir/$pkgname-$pkgver" + + make check +} + +package() { + cd "$srcdir/$pkgname-$pkgver" + make DESTDIR="$pkgdir" install + + install -D -m644 COPYING "$pkgdir"/usr/share/licenses/libarchive/COPYING +} Copied: libarchive/repos/core-x86_64/interpret-non-posix-zips.patch (from rev 147655, libarchive/repos/testing-x86_64/interpret-non-posix-zips.patch) =================================================================== --- core-x86_64/interpret-non-posix-zips.patch (rev 0) +++ core-x86_64/interpret-non-posix-zips.patch 2012-01-26 02:44:17 UTC (rev 147657) @@ -0,0 +1,165 @@ +Index: libarchive/archive_read_support_format_zip.c +=================================================================== +--- libarchive/archive_read_support_format_zip.c (revision 4189) ++++ libarchive/archive_read_support_format_zip.c (revision 4190) +@@ -217,14 +217,13 @@ + } + + /* +- * TODO: This is a performance sink because it forces +- * the read core to drop buffered data from the start +- * of file, which will then have to be re-read again +- * if this bidder loses. ++ * TODO: This is a performance sink because it forces the read core to ++ * drop buffered data from the start of file, which will then have to ++ * be re-read again if this bidder loses. + * +- * Consider passing in the winning bid value to subsequent +- * bidders so that this bidder in particular can avoid +- * seeking if it knows it's going to lose anyway. ++ * We workaround this a little by passing in the best bid so far so ++ * that later bidders can do nothing if they know they'll never ++ * outbid. But we can certainly do better... + */ + static int + archive_read_format_zip_seekable_bid(struct archive_read *a, int best_bid) +@@ -311,19 +310,29 @@ + external_attributes = archive_le32dec(p + 38); + zip_entry->local_header_offset = archive_le32dec(p + 42); + ++ /* If we can't guess the mode, leave it zero here; ++ when we read the local file header we might get ++ more information. */ ++ zip_entry->mode = 0; + if (zip_entry->system == 3) { + zip_entry->mode = external_attributes >> 16; +- } else { +- zip_entry->mode = AE_IFREG | 0777; + } + +- /* Do we need to parse filename here? */ +- /* Or can we wait until we read the local header? */ ++ /* We don't read the filename until we get to the ++ local file header. Reading it here would speed up ++ table-of-contents operations (removing the need to ++ find and read local file header to get the ++ filename) at the cost of requiring a lot of extra ++ space. */ ++ /* We don't read the extra block here. We assume it ++ will be duplicated at the local file header. */ + __archive_read_consume(a, + 46 + filename_length + extra_length + comment_length); + } + +- /* TODO: Sort zip entries. */ ++ /* TODO: Sort zip entries by file offset so that we ++ can optimize get_next_header() to use skip instead of ++ seek. */ + + return ARCHIVE_OK; + } +@@ -434,6 +443,11 @@ + return (30); + } + ++ /* TODO: It's worth looking ahead a little bit for a valid ++ * PK signature. In particular, that would make it possible ++ * to read some UUEncoded SFX files or SFX files coming from ++ * a network socket. */ ++ + return (0); + } + +Index: libarchive/test/test_compat_zip_6.zip.uu +=================================================================== +--- libarchive/test/test_compat_zip_6.zip.uu (revision 0) ++++ libarchive/test/test_compat_zip_6.zip.uu (revision 4190) +@@ -0,0 +1,10 @@ ++begin 755 test_compat_zip_6.zip ++M4$L#!`H``````'@3-T`````````````````6````3F5W($9O;&1E<B].97<@ ++M1F]L9&5R+U!+`P0*``````!\$S=`%4-8OPL````+````*P```$YE=R!&;VQD ++M97(O3F5W($9O;&1E<B].97<@5&5X="!$;V-U;65N="YT>'1S;VUE('1E>'0- ++M"E!+`0(4"PH``````'@3-T`````````````````6````````````$``````` ++M``!.97<@1F]L9&5R+TYE=R!&;VQD97(O4$L!`A0+"@``````?!,W0!5#6+\+ ++M````"P```"L``````````0`@````-````$YE=R!&;VQD97(O3F5W($9O;&1E ++M<B].97<@5&5X="!$;V-U;65N="YT>'102P4&``````(``@"=````B``````` ++` ++end +Index: libarchive/test/test_compat_zip.c +=================================================================== +--- libarchive/test/test_compat_zip.c (revision 4189) ++++ libarchive/test/test_compat_zip.c (revision 4190) +@@ -348,6 +348,53 @@ + free(p); + } + ++/* ++ * Issue 225: Errors extracting MSDOS Zip archives with directories. ++ */ ++static void ++compat_zip_6_verify(struct archive *a) ++{ ++ struct archive_entry *ae; ++ ++ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); ++ assertEqualString("New Folder/New Folder/", archive_entry_pathname(ae)); ++ assertEqualInt(AE_IFDIR, archive_entry_filetype(ae)); ++ assertEqualInt(1327314468, archive_entry_mtime(ae)); ++ assertEqualInt(0, archive_entry_size(ae)); ++ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); ++ assertEqualString("New Folder/New Folder/New Text Document.txt", archive_entry_pathname(ae)); ++ assertEqualInt(AE_IFREG, archive_entry_filetype(ae)); ++ assertEqualInt(1327314476, archive_entry_mtime(ae)); ++ assertEqualInt(11, archive_entry_size(ae)); ++ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); ++} ++ ++static void ++test_compat_zip_6(void) ++{ ++ const char *refname = "test_compat_zip_6.zip"; ++ struct archive *a; ++ void *p; ++ size_t s; ++ ++ extract_reference_file(refname); ++ p = slurpfile(&s, refname); ++ ++ assert((a = archive_read_new()) != NULL); ++ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); ++ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); ++ assertEqualIntA(a, ARCHIVE_OK, read_open_memory_seek(a, p, s, 7)); ++ compat_zip_6_verify(a); ++ assertEqualIntA(a, ARCHIVE_OK, archive_read_free(a)); ++ ++ assert((a = archive_read_new()) != NULL); ++ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); ++ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); ++ assertEqualIntA(a, ARCHIVE_OK, read_open_memory(a, p, s, 7)); ++ compat_zip_6_verify(a); ++ assertEqualIntA(a, ARCHIVE_OK, archive_read_free(a)); ++} ++ + DEFINE_TEST(test_compat_zip) + { + test_compat_zip_1(); +@@ -355,6 +402,7 @@ + test_compat_zip_3(); + test_compat_zip_4(); + test_compat_zip_5(); ++ test_compat_zip_6(); + } + + +Index: Makefile.am +=================================================================== +--- Makefile.am (revision 4189) ++++ Makefile.am (revision 4190) +@@ -462,6 +462,7 @@ + libarchive/test/test_compat_zip_3.zip.uu \ + libarchive/test/test_compat_zip_4.zip.uu \ + libarchive/test/test_compat_zip_5.zip.uu \ ++ libarchive/test/test_compat_zip_6.zip.uu \ + libarchive/test/test_fuzz_1.iso.Z.uu \ + libarchive/test/test_fuzz.cab.uu \ + libarchive/test/test_fuzz.lzh.uu \ Deleted: core-x86_64/sparse-file.patch =================================================================== --- core-x86_64/sparse-file.patch 2012-01-26 02:44:15 UTC (rev 147656) +++ core-x86_64/sparse-file.patch 2012-01-26 02:44:17 UTC (rev 147657) @@ -1,13 +0,0 @@ -Index: libarchive/archive_write_set_format_pax.c -=================================================================== ---- libarchive/archive_write_set_format_pax.c (revision 4094) -+++ libarchive/archive_write_set_format_pax.c (working copy) -@@ -1647,7 +1647,7 @@ - return (total); - - p = ((const unsigned char *)buff) + total; -- ws = s; -+ ws = s - total; - if (ws > pax->sparse_list->remaining) - ws = pax->sparse_list->remaining; - Copied: libarchive/repos/core-x86_64/test-with-zip-mtime.patch (from rev 147655, libarchive/repos/testing-x86_64/test-with-zip-mtime.patch) =================================================================== --- core-x86_64/test-with-zip-mtime.patch (rev 0) +++ core-x86_64/test-with-zip-mtime.patch 2012-01-26 02:44:17 UTC (rev 147657) @@ -0,0 +1,23 @@ +Index: libarchive/test/test_compat_zip.c +=================================================================== +--- libarchive/test/test_compat_zip.c (revision 4197) ++++ libarchive/test/test_compat_zip.c (revision 4198) +@@ -359,12 +359,16 @@ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString("New Folder/New Folder/", archive_entry_pathname(ae)); + assertEqualInt(AE_IFDIR, archive_entry_filetype(ae)); +- assertEqualInt(1327314468, archive_entry_mtime(ae)); ++ /* Zip timestamps are local time, so vary by time zone. */ ++ /* TODO: A more complex assert would work here; we could ++ verify that it's within +/- 24 hours of a particular value. */ ++ /* assertEqualInt(1327314468, archive_entry_mtime(ae)); */ + assertEqualInt(0, archive_entry_size(ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString("New Folder/New Folder/New Text Document.txt", archive_entry_pathname(ae)); + assertEqualInt(AE_IFREG, archive_entry_filetype(ae)); +- assertEqualInt(1327314476, archive_entry_mtime(ae)); ++ /* Zip timestamps are local time, so vary by time zone. */ ++ /* assertEqualInt(1327314476, archive_entry_mtime(ae)); */ + assertEqualInt(11, archive_entry_size(ae)); + assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); + }