opkg: Update to svn r590 to fix symbolic link issues

See the longlinksfix patch for details but symlinks over 100 chars long
were broken in sdk tarballs and its due to problems in the inbuilt tar in
libbb in opkg.

The patch fixes this and switched to svn r590 which already had partial fixes.

Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
This commit is contained in:
Richard Purdie 2010-12-22 18:30:24 +00:00
parent 01cb362dd0
commit b1a2255b2d
5 changed files with 97 additions and 45 deletions

View File

@ -133,7 +133,7 @@ SRCREV_pn-networkmanager ??= "2984"
SRCREV_pn-ofono ??= "14544d5996836f628613c2ce544380ee6fc8f514"
SRCREV_pn-oh-puzzles ??= "23"
SRCREV_pn-ohm ??= "edfe25d49d67884bf004de7ae0724c162bb5e65e"
OPKGSRCREV = "524"
OPKGSRCREV = "590"
SRCREV_pn-opkg ??= "${OPKGSRCREV}"
SRCREV_pn-opkg-native ??= "${OPKGSRCREV}"
SRCREV_pn-opkg-nativesdk ??= "${OPKGSRCREV}"

View File

@ -1,17 +0,0 @@
Rebase for the latest version
Dongxiao Xu <dongxiao.xu@intel.com>
diff -ruN opkg-0.1.8-orig/libbb/unarchive.c opkg-0.1.8/libbb/unarchive.c
--- opkg-0.1.8-orig/libbb/unarchive.c 2010-07-20 09:39:02.266424893 +0800
+++ opkg-0.1.8/libbb/unarchive.c 2010-07-20 09:39:50.474435569 +0800
@@ -523,6 +523,10 @@
}
}
+ if (strlen(tar_entry->name) > 100) {
+ tar_entry->name[100] = 0;
+ }
+
// tar_entry->name = xstrdup(tar.formated.name);
/*

View File

@ -1,23 +0,0 @@
Patch to remove "duplicate" bits of logs from opkg output, which
massively simplifies do_rootfs logs. The reason is we get unflushed
data passed to the children and duplicated.
RP - 26/1/10
Index: trunk/libbb/gz_open.c
===================================================================
--- trunk.orig/libbb/gz_open.c 2010-01-26 23:12:10.000000000 +0000
+++ trunk/libbb/gz_open.c 2010-01-26 23:12:17.000000000 +0000
@@ -38,6 +38,12 @@
perror_msg("pipe");
return(NULL);
}
+
+ /* If we don't flush, we end up with two copies of anything pending,
+ one from the parent, one from the child */
+ fflush(stdout);
+ fflush(stderr);
+
if ((*pid = fork()) == -1) {
perror_msg("fork");
return(NULL);

View File

@ -0,0 +1,92 @@
If a tarball contains a long symlink (over 100 chars) in a longpath (over 100
chars) then the resulting link or path can be truncated to 100 chars.
This is due to a bug where if both 'L' and 'K' entries are found in the tarball,
only the first one takes affect due to get_header_tar recursively calling itself.
To fix this, process longname and linkname at the end of the function rather
than the start after any subcalls have taken place.
Richard Purdie
22/12/2010
Index: trunk/libbb/unarchive.c
===================================================================
--- trunk.orig/libbb/unarchive.c 2010-12-22 18:14:52.575074849 +0000
+++ trunk/libbb/unarchive.c 2010-12-22 18:16:01.845103832 +0000
@@ -506,23 +506,7 @@
/* convert to type'ed variables */
tar_entry = xcalloc(1, sizeof(file_header_t));
-#ifdef CONFIG_FEATURE_TAR_GNU_EXTENSIONS
- if (longname) {
- tar_entry->name = longname;
- longname = NULL;
- } else
-#endif
- {
- tar_entry->name = xstrndup(tar.formated.name, 100);
- if (tar.formated.prefix[0]) {
- char *temp = tar_entry->name;
- char *prefixTemp = xstrndup(tar.formated.prefix, 155);
- tar_entry->name = concat_path_file(prefixTemp, temp);
- free(temp);
- free(prefixTemp);
- }
- }
// tar_entry->name = xstrdup(tar.formated.name);
@@ -535,16 +519,7 @@
tar_entry->gid = strtol(tar.formated.gid, NULL, 8);
tar_entry->size = strtol(tar.formated.size, NULL, 8);
tar_entry->mtime = strtol(tar.formated.mtime, NULL, 8);
-#ifdef CONFIG_FEATURE_TAR_GNU_EXTENSIONS
- if (linkname) {
- tar_entry->link_name = linkname;
- linkname = NULL;
- } else
-#endif
- {
- tar_entry->link_name = *tar.formated.linkname != '\0' ?
- xstrndup(tar.formated.linkname, 100) : NULL;
- }
+
tar_entry->device = (strtol(tar.formated.devmajor, NULL, 8) << 8) +
strtol(tar.formated.devminor, NULL, 8);
@@ -611,6 +586,34 @@
}
+
+#ifdef CONFIG_FEATURE_TAR_GNU_EXTENSIONS
+ if (longname) {
+ tar_entry->name = longname;
+ longname = NULL;
+ } else
+#endif
+ {
+ tar_entry->name = xstrndup(tar.formated.name, 100);
+
+ if (tar.formated.prefix[0]) {
+ char *temp = tar_entry->name;
+ char *prefixTemp = xstrndup(tar.formated.prefix, 155);
+ tar_entry->name = concat_path_file(prefixTemp, temp);
+ free(temp);
+ free(prefixTemp);
+ }
+ }
+
+ if (linkname) {
+ tar_entry->link_name = linkname;
+ linkname = NULL;
+ } else
+ {
+ tar_entry->link_name = *tar.formated.linkname != '\0' ?
+ xstrndup(tar.formated.linkname, 100) : NULL;
+ }
+
return(tar_entry);
}

View File

@ -9,15 +9,15 @@ RDEPENDS_${PN}_virtclass-nativesdk = ""
PACKAGE_ARCH_update-alternatives-cworth = "all"
SRC_URI = "svn://opkg.googlecode.com/svn;module=trunk;proto=http \
file://opkg_unarchive.patch \
file://add_vercmp.patch \
file://headerfix.patch \
file://logfix.patch"
file://longlinksfix.patch \
"
S = "${WORKDIR}/trunk"
PV = "0.0+svnr${SRCREV}"
PR = "r15"
PV = "0.1.8+svnr${SRCREV}"
PR = "r1"
PACKAGES =+ "libopkg-dev libopkg update-alternatives-cworth"