libarchive: add 2.8.4 version
This recipe has been imported from OpenEmbedded (rev 6db4b9050e0e8b963e2a6b63790e48e3042ea99e). (From OE-Core rev: 292a45064aa9926868c798341dc72f183c5de076) Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
b626de02f7
commit
e5fef6bc21
|
@ -0,0 +1,42 @@
|
|||
libarchive: Backport patch from upstream (revision 1990)
|
||||
|
||||
Upstream-Status: Backport
|
||||
|
||||
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
|
||||
|
||||
diff --git a/libarchive/archive_read_disk_entry_from_file.c b/libarchive/archive_read_disk_entry_from_file.c
|
||||
index 7473c50..27671df 100644
|
||||
--- a/libarchive/archive_read_disk_entry_from_file.c
|
||||
+++ b/libarchive/archive_read_disk_entry_from_file.c
|
||||
@@ -163,15 +163,26 @@ archive_read_disk_entry_from_file(struct archive *_a,
|
||||
|
||||
#ifdef HAVE_READLINK
|
||||
if (S_ISLNK(st->st_mode)) {
|
||||
- char linkbuffer[PATH_MAX + 1];
|
||||
- int lnklen = readlink(path, linkbuffer, PATH_MAX);
|
||||
+ size_t linkbuffer_len = st->st_size + 1;
|
||||
+ char *linkbuffer;
|
||||
+ int lnklen;
|
||||
+
|
||||
+ linkbuffer = malloc(linkbuffer_len);
|
||||
+ if (linkbuffer == NULL) {
|
||||
+ archive_set_error(&a->archive, ENOMEM,
|
||||
+ "Couldn't read link data");
|
||||
+ return (ARCHIVE_FAILED);
|
||||
+ }
|
||||
+ lnklen = readlink(path, linkbuffer, linkbuffer_len);
|
||||
if (lnklen < 0) {
|
||||
archive_set_error(&a->archive, errno,
|
||||
"Couldn't read link data");
|
||||
+ free(linkbuffer);
|
||||
return (ARCHIVE_FAILED);
|
||||
}
|
||||
linkbuffer[lnklen] = 0;
|
||||
archive_entry_set_symlink(entry, linkbuffer);
|
||||
+ free(linkbuffer);
|
||||
}
|
||||
#endif
|
||||
|
||||
--
|
||||
1.7.1
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
libarchive: Backport patch from upstream (revision 1991)
|
||||
|
||||
Upstream-Status: Backport
|
||||
|
||||
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
|
||||
|
||||
diff --git a/libarchive/archive_write_disk.c b/libarchive/archive_write_disk.c
|
||||
index caf958e..60699e0 100644
|
||||
--- a/libarchive/archive_write_disk.c
|
||||
+++ b/libarchive/archive_write_disk.c
|
||||
@@ -434,7 +434,7 @@ _archive_write_header(struct archive *_a, struct archive_entry *entry)
|
||||
if (ret != ARCHIVE_OK)
|
||||
goto done;
|
||||
}
|
||||
-#ifdef HAVE_FCHDIR
|
||||
+#if defined(HAVE_FCHDIR) && defined(PATH_MAX)
|
||||
/* If path exceeds PATH_MAX, shorten the path. */
|
||||
edit_deep_directories(a);
|
||||
#endif
|
||||
@@ -866,7 +866,7 @@ archive_write_disk_new(void)
|
||||
* object creation is likely to fail, but any error will get handled
|
||||
* at that time.
|
||||
*/
|
||||
-#ifdef HAVE_FCHDIR
|
||||
+#if defined(HAVE_FCHDIR) && defined(PATH_MAX)
|
||||
static void
|
||||
edit_deep_directories(struct archive_write_disk *a)
|
||||
{
|
||||
--
|
||||
1.7.1
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
libarchive: Backport patch from upstream (rev 2516)
|
||||
|
||||
Fix Issue 100: Allow a zero for the Type M Path Table Location, since
|
||||
WinISO (and probably other programs) set it this way.
|
||||
|
||||
http://code.google.com/p/libarchive/source/detail?r=2516
|
||||
|
||||
Upstream-Status: Backport
|
||||
|
||||
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
|
||||
|
||||
diff --git a/libarchive/archive_read_support_format_iso9660.c b/libarchive/archive_read_support_format_iso9660.c
|
||||
index 0c640c8..fdef3fb 100644
|
||||
--- a/libarchive/archive_read_support_format_iso9660.c
|
||||
+++ b/libarchive/archive_read_support_format_iso9660.c
|
||||
@@ -714,11 +714,13 @@ isSVD(struct iso9660 *iso9660, const unsigned char *h)
|
||||
if (location <= SYSTEM_AREA_BLOCK+2 || location >= volume_block)
|
||||
return (0);
|
||||
|
||||
- /* Location of Occurrence of Type M Path Table must be
|
||||
- * available location,
|
||||
+ /* The Type M Path Table must be at a valid location (WinISO
|
||||
+ * and probably other programs omit this, so we allow zero)
|
||||
+ *
|
||||
* > SYSTEM_AREA_BLOCK(16) + 2 and < Volume Space Size. */
|
||||
location = archive_be32dec(h+SVD_type_M_path_table_offset);
|
||||
- if (location <= SYSTEM_AREA_BLOCK+2 || location >= volume_block)
|
||||
+ if ((location > 0 && location <= SYSTEM_AREA_BLOCK+2)
|
||||
+ || location >= volume_block)
|
||||
return (0);
|
||||
|
||||
/* Read Root Directory Record in Volume Descriptor. */
|
||||
@@ -790,7 +792,8 @@ isEVD(struct iso9660 *iso9660, const unsigned char *h)
|
||||
* available location,
|
||||
* > SYSTEM_AREA_BLOCK(16) + 2 and < Volume Space Size. */
|
||||
location = archive_be32dec(h+PVD_type_m_path_table_offset);
|
||||
- if (location <= SYSTEM_AREA_BLOCK+2 || location >= volume_block)
|
||||
+ if ((location > 0 && location <= SYSTEM_AREA_BLOCK+2)
|
||||
+ || location >= volume_block)
|
||||
return (0);
|
||||
|
||||
/* Reserved field must be 0. */
|
||||
@@ -865,11 +868,14 @@ isPVD(struct iso9660 *iso9660, const unsigned char *h)
|
||||
if (location <= SYSTEM_AREA_BLOCK+2 || location >= volume_block)
|
||||
return (0);
|
||||
|
||||
- /* Location of Occurrence of Type M Path Table must be
|
||||
- * available location,
|
||||
+ /* The Type M Path Table must also be at a valid location
|
||||
+ * (although ECMA 119 requires a Type M Path Table, WinISO and
|
||||
+ * probably other programs omit it, so we permit a zero here)
|
||||
+ *
|
||||
* > SYSTEM_AREA_BLOCK(16) + 2 and < Volume Space Size. */
|
||||
location = archive_be32dec(h+PVD_type_m_path_table_offset);
|
||||
- if (location <= SYSTEM_AREA_BLOCK+2 || location >= volume_block)
|
||||
+ if ((location > 0 && location <= SYSTEM_AREA_BLOCK+2)
|
||||
+ || location >= volume_block)
|
||||
return (0);
|
||||
|
||||
/* Reserved field must be 0. */
|
||||
--
|
||||
1.7.1
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
libarchive: Backport patch from upstream (rev 2514)
|
||||
|
||||
Enable version stripping code in joliet extension support for iso9660.
|
||||
|
||||
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=587316
|
||||
|
||||
Upstream-Status: Backport
|
||||
|
||||
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
|
||||
|
||||
diff --git a/libarchive/archive_read_support_format_iso9660.c b/libarchive/archive_read_support_format_iso9660.c
|
||||
index fdef3fb..8dcfeb4 100644
|
||||
--- a/libarchive/archive_read_support_format_iso9660.c
|
||||
+++ b/libarchive/archive_read_support_format_iso9660.c
|
||||
@@ -1755,7 +1755,6 @@ parse_file_info(struct archive_read *a, struct file_info *parent,
|
||||
}
|
||||
*wp = L'\0';
|
||||
|
||||
-#if 0 /* untested code, is it at all useful on Joliet? */
|
||||
/* trim trailing first version and dot from filename.
|
||||
*
|
||||
* Remember we where in UTF-16BE land!
|
||||
@@ -1775,7 +1774,6 @@ parse_file_info(struct archive_read *a, struct file_info *parent,
|
||||
/* Chop off trailing '.' from filenames. */
|
||||
if (*(wp-1) == '.')
|
||||
*(--wp) = L'\0';
|
||||
-#endif
|
||||
|
||||
/* store the result in the file name field. */
|
||||
archive_strappend_w_utf8(&file->name, wbuff);
|
||||
--
|
||||
1.7.1
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
libarchive: Backport patch from upstream (rev 2520)
|
||||
|
||||
Fix version/dot stripping code in joliet extension of iso9660.
|
||||
|
||||
Upstream-Status: Backport
|
||||
|
||||
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
|
||||
|
||||
diff --git a/libarchive/archive_read_support_format_iso9660.c b/libarchive/archive_read_support_format_iso9660.c
|
||||
index 8dcfeb4..2d3a855 100644
|
||||
--- a/libarchive/archive_read_support_format_iso9660.c
|
||||
+++ b/libarchive/archive_read_support_format_iso9660.c
|
||||
@@ -1766,13 +1766,13 @@ parse_file_info(struct archive_read *a, struct file_info *parent,
|
||||
* *, /, :, ;, ? and \.
|
||||
*/
|
||||
/* Chop off trailing ';1' from files. */
|
||||
- if (*(wp-2) == ';' && *(wp-1) == '1') {
|
||||
+ if (*(wp-2) == L';' && *(wp-1) == L'1') {
|
||||
wp-=2;
|
||||
*wp = L'\0';
|
||||
}
|
||||
|
||||
/* Chop off trailing '.' from filenames. */
|
||||
- if (*(wp-1) == '.')
|
||||
+ if (*(wp-1) == L'.')
|
||||
*(--wp) = L'\0';
|
||||
|
||||
/* store the result in the file name field. */
|
||||
--
|
||||
1.7.1
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
libarchive: Backport patch from upstream (rev 2521).
|
||||
|
||||
Disable dot stripping code since it's still broken
|
||||
and noone has been able to figure it out (yet).
|
||||
|
||||
Upstream-Status: Backport
|
||||
|
||||
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
|
||||
|
||||
diff --git a/libarchive/archive_read_support_format_iso9660.c b/libarchive/archive_read_support_format_iso9660.c
|
||||
index 2d3a855..8661532 100644
|
||||
--- a/libarchive/archive_read_support_format_iso9660.c
|
||||
+++ b/libarchive/archive_read_support_format_iso9660.c
|
||||
@@ -1771,9 +1771,11 @@ parse_file_info(struct archive_read *a, struct file_info *parent,
|
||||
*wp = L'\0';
|
||||
}
|
||||
|
||||
+#if 0 /* XXX: this somehow manages to strip of single-character file extensions, like '.c'. */
|
||||
/* Chop off trailing '.' from filenames. */
|
||||
if (*(wp-1) == L'.')
|
||||
*(--wp) = L'\0';
|
||||
+#endif
|
||||
|
||||
/* store the result in the file name field. */
|
||||
archive_strappend_w_utf8(&file->name, wbuff);
|
||||
--
|
||||
1.7.1
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
libarchive: Ignore ENOSYS error when setting up xattrs. (Closes: #588925)
|
||||
|
||||
Modestas Vainius found out that HPPA returns errno ENOSYS
|
||||
on listxattrs. Currently, ENOTSUP is ignored so we'll do the
|
||||
same for ENOSYS as well.
|
||||
|
||||
For full debug info about this see Modestas Vainius awesome
|
||||
report at:
|
||||
|
||||
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=588925#10
|
||||
|
||||
Upstream-Status: Pending
|
||||
|
||||
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
|
||||
|
||||
diff --git a/libarchive/archive_read_disk_entry_from_file.c b/libarchive/archive_read_disk_entry_from_file.c
|
||||
index 27671df..c49e755 100644
|
||||
--- a/libarchive/archive_read_disk_entry_from_file.c
|
||||
+++ b/libarchive/archive_read_disk_entry_from_file.c
|
||||
@@ -398,7 +398,7 @@ setup_xattrs(struct archive_read_disk *a,
|
||||
list_size = listxattr(path, NULL, 0);
|
||||
|
||||
if (list_size == -1) {
|
||||
- if (errno == ENOTSUP)
|
||||
+ if (errno == ENOTSUP || errno == ENOSYS)
|
||||
return (ARCHIVE_OK);
|
||||
archive_set_error(&a->archive, errno,
|
||||
"Couldn't list extended attributes");
|
||||
--
|
||||
1.7.1
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
DESCRIPTION = "C library and command-line tools for reading and writing tar, cpio, zip, ISO, and other archive formats"
|
||||
HOMEPAGE = "http://code.google.com/p/libarchive/"
|
||||
SECTION = "devel"
|
||||
LICENSE = "BSD"
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=4255e2e6f0349a4ac8fbd68459296e46"
|
||||
PR = "r0"
|
||||
|
||||
DEPENDS = "libxml2"
|
||||
|
||||
SRC_URI = "http://libarchive.googlecode.com/files/libarchive-${PV}.tar.gz \
|
||||
file://0001-Patch-from-upstream-revision-1990.patch \
|
||||
file://0002-Patch-from-upstream-revision-1991.patch \
|
||||
file://0003-Patch-from-upstream-rev-2516.patch \
|
||||
file://0004-Patch-from-upstream-rev-2514.patch \
|
||||
file://0005-Patch-from-upstream-rev-2520.patch \
|
||||
file://0006-Patch-from-upstream-rev-2521.patch \
|
||||
file://0007-Ignore-ENOSYS-error-when-setting-up-xattrs.-Closes-5.patch \
|
||||
"
|
||||
|
||||
SRC_URI[md5sum] = "83b237a542f27969a8d68ac217dc3796"
|
||||
SRC_URI[sha256sum] = "86cffa3eaa28d3116f5d0b20284026c3762cf4a2b52b9844df2b494d4a89f688"
|
||||
|
||||
inherit autotools lib_package
|
||||
|
||||
BBCLASSEXTEND = "nativesdk"
|
Loading…
Reference in New Issue