summaryrefslogtreecommitdiff
path: root/meta/packages/opkg
diff options
context:
space:
mode:
Diffstat (limited to 'meta/packages/opkg')
-rw-r--r--meta/packages/opkg/files/opkg_unarchive.patch13
-rw-r--r--meta/packages/opkg/opkg.inc18
-rw-r--r--meta/packages/opkg/opkg/add_vercmp.patch34
-rw-r--r--meta/packages/opkg/opkg/opkg-intercept-cleanup.patch47
-rw-r--r--meta/packages/opkg/opkg_svn.bb6
5 files changed, 103 insertions, 15 deletions
diff --git a/meta/packages/opkg/files/opkg_unarchive.patch b/meta/packages/opkg/files/opkg_unarchive.patch
new file mode 100644
index 0000000000..9e5ccfb714
--- /dev/null
+++ b/meta/packages/opkg/files/opkg_unarchive.patch
@@ -0,0 +1,13 @@
+--- trunk/libbb/unarchive.c.orig 2009-02-11 22:14:58.000000000 +0100
++++ trunk/libbb/unarchive.c 2009-02-11 22:15:07.000000000 +0100
+@@ -606,6 +606,10 @@
+ tar_entry->name = concat_path_file(tar.formated.prefix, tar.formated.name);
+ }
+
++ if (strlen(tar_entry->name) > 100) {
++ tar_entry->name[100] = 0;
++ }
++
+ // tar_entry->name = xstrdup(tar.formated.name);
+
+ /*
diff --git a/meta/packages/opkg/opkg.inc b/meta/packages/opkg/opkg.inc
index 0b1db89c8a..d82f6d53f2 100644
--- a/meta/packages/opkg/opkg.inc
+++ b/meta/packages/opkg/opkg.inc
@@ -5,20 +5,14 @@ SECTION = "base"
LICENSE = "GPL"
DEPENDS = "curl gpgme"
PV = "0.0+svnr${SRCREV}"
+PE = "1"
-# opkg-fix-gcc-warnings.patch: the patch is already upstreamed and could be
-# taken out once okpg is updated to new repo
-# http://opkg.googlecode.com/svn/trunk
-# with rev >= 150
+SRC_URI = "svn://opkg.googlecode.com/svn;module=trunk;proto=http \
+ file://opkg_unarchive.patch;patch=1;maxrev=201 \
+ file://opkg-intercept-cleanup.patch;patch=1 \
+ file://add_vercmp.patch;patch=1"
-# sighandlerfix.patch: from r145
-
-SRC_URI = "svn://svn.openmoko.org/trunk/src/target/;module=opkg;proto=http \
- file://fix_prototype.patch;patch=1 \
- file://sighandlerfix.patch;patch=1 \
- file://opkg-fix-gcc-warnings.patch;patch=1"
-
-S = "${WORKDIR}/opkg"
+S = "${WORKDIR}/trunk"
# Werror gives all kinds bounds issuses with gcc 4.3.3
do_configure_prepend() {
diff --git a/meta/packages/opkg/opkg/add_vercmp.patch b/meta/packages/opkg/opkg/add_vercmp.patch
new file mode 100644
index 0000000000..5c0473ff70
--- /dev/null
+++ b/meta/packages/opkg/opkg/add_vercmp.patch
@@ -0,0 +1,34 @@
+Index: trunk/libopkg/opkg.c
+===================================================================
+--- trunk.orig/libopkg/opkg.c 2009-10-05 14:33:47.000000000 +0100
++++ trunk/libopkg/opkg.c 2009-10-05 20:59:19.000000000 +0100
+@@ -1092,3 +1092,18 @@
+ free(src);
+ return ret;
+ }
++
++int
++opkg_compare_versions (const char *ver1, const char *ver2)
++{
++ pkg_t *pkg1, *pkg2;
++
++ pkg1 = pkg_new();
++ pkg2 = pkg_new();
++
++ parseVersion(pkg1, ver1);
++ parseVersion(pkg2, ver2);
++
++ return pkg_compare_versions(pkg1, pkg2);
++}
++
+Index: trunk/libopkg/opkg.h
+===================================================================
+--- trunk.orig/libopkg/opkg.h 2009-10-05 21:06:22.000000000 +0100
++++ trunk/libopkg/opkg.h 2009-10-05 21:06:35.000000000 +0100
+@@ -87,4 +87,6 @@
+
+ int opkg_repository_accessibility_check(opkg_t *opkg);
+
++int opkg_compare_versions (const char *ver1, const char *ver2);
++
+ #endif /* OPKG_H */
diff --git a/meta/packages/opkg/opkg/opkg-intercept-cleanup.patch b/meta/packages/opkg/opkg/opkg-intercept-cleanup.patch
new file mode 100644
index 0000000000..12893e3852
--- /dev/null
+++ b/meta/packages/opkg/opkg/opkg-intercept-cleanup.patch
@@ -0,0 +1,47 @@
+---
+ libopkg/opkg_cmd.c | 13 +++++++++----
+ 1 file changed, 9 insertions(+), 4 deletions(-)
+
+--- trunk.orig/libopkg/opkg_cmd.c
++++ trunk/libopkg/opkg_cmd.c
+@@ -19,6 +19,7 @@
+ #include "includes.h"
+ #include <dirent.h>
+ #include <glob.h>
++#include <unistd.h>
+
+ #include "opkg_conf.h"
+ #include "opkg_cmd.h"
+@@ -350,7 +351,6 @@ static opkg_intercept_t opkg_prep_interc
+
+ static int opkg_finalize_intercepts(opkg_intercept_t ctx)
+ {
+- char *cmd;
+ DIR *dir;
+ int err = 0;
+
+@@ -376,6 +376,10 @@ static int opkg_finalize_intercepts(opkg
+ err = errno;
+ perror (de->d_name);
+ }
++ if (unlink (path)) {
++ err = errno;
++ perror (path);
++ }
+ }
+ free (path);
+ }
+@@ -383,9 +387,10 @@ static int opkg_finalize_intercepts(opkg
+ } else
+ perror (ctx->statedir);
+
+- sprintf_alloc (&cmd, "rm -rf %s", ctx->statedir);
+- err = system (cmd);
+- free (cmd);
++ if (rmdir (ctx->statedir)) {
++ err = errno;
++ perror (ctx->statedir);
++ }
+
+ free (ctx->statedir);
+ free (ctx);
diff --git a/meta/packages/opkg/opkg_svn.bb b/meta/packages/opkg/opkg_svn.bb
index 68e04c60d6..0d68939346 100644
--- a/meta/packages/opkg/opkg_svn.bb
+++ b/meta/packages/opkg/opkg_svn.bb
@@ -6,7 +6,7 @@ RCONFLICTS_update-alternatives-cworth = "update-alternatives-dpkg"
RDEPENDS_${PN} = "${VIRTUAL-RUNTIME_update-alternatives}"
PACKAGE_ARCH_update-alternatives-cworth = "all"
-PR = "r10"
+PR = "r3"
PACKAGES =+ "libopkg-dev libopkg update-alternatives-cworth"
@@ -28,7 +28,7 @@ EXTRACFLAGS_overo = "-Wno-array-bounds"
TARGET_CFLAGS += "${EXTRACFLAGS}"
-pkg_postinst_opkg () {
+pkg_postinst_${PN} () {
#!/bin/sh
if [ "x$D" != "x" ]; then
install -d ${IMAGE_ROOTFS}/${sysconfdir}/rcS.d
@@ -43,7 +43,7 @@ fi
update-alternatives --install ${bindir}/opkg opkg ${bindir}/opkg-cl 100
}
-pkg_postrm_opkg () {
+pkg_postrm_${PN} () {
#!/bin/sh
update-alternatives --remove opkg ${bindir}/opkg-cl
}