Add ipkg 0.99.121 back. Doesn't hurt to have it, and helps in the situation we just...
authorChris Larson <clarson@kergoth.com>
Wed, 26 May 2004 04:57:13 +0000 (04:57 +0000)
committerChris Larson <clarson@kergoth.com>
Wed, 26 May 2004 04:57:13 +0000 (04:57 +0000)
BKrev: 40b423a9B9ASKpowe2UFuaLGuRAJGA

ipkg/ipkg-0.99.121/varargs.patch [new file with mode: 0644]
ipkg/ipkg-native_0.99.121.oe [new file with mode: 0644]
ipkg/ipkg_0.99.121.oe [new file with mode: 0644]

diff --git a/ipkg/ipkg-0.99.121/varargs.patch b/ipkg/ipkg-0.99.121/varargs.patch
new file mode 100644 (file)
index 0000000..cca6b27
--- /dev/null
@@ -0,0 +1,72 @@
+--- C.old/sprintf_alloc.c      2004-01-13 15:51:48.000000000 -0700
++++ C/sprintf_alloc.c  2004-05-20 16:47:25.240772176 -0700
+@@ -20,12 +20,12 @@
+ #include "sprintf_alloc.h"
+-static int vsprintf_alloc(char **str, const char *fmt, va_list ap);
+-
+ int sprintf_alloc(char **str, const char *fmt, ...)
+ {
+     int ret;
+     va_list ap;
++    char *new_str;
++    int n, size = 100;
+     if (!str) {
+       fprintf(stderr, "Null string pointer passed to sprintf_alloc\n");
+@@ -35,29 +35,27 @@
+       fprintf(stderr, "Null fmt string passed to sprintf_alloc\n");
+       return -1;
+     }
+-    va_start(ap, fmt);
+-    ret = vsprintf_alloc(str, fmt, ap);
+-    va_end(ap);
+-    return ret;
+-}
++    /* On x86_64 systems, any strings over 100 were segfaulting.  
++       It seems that the ap needs to be reinitalized before every
++       use of the v*printf() functions. I pulled the functionality out
++       of vsprintf_alloc and combined it all here instead. 
++    */
++    
++
++    /* ripped more or less straight out of PRINTF(3) */
++
++    if ((new_str = malloc(size)) == NULL) 
++      return -1;
+-/* ripped more or less straight out of PRINTF(3) */
+-static int vsprintf_alloc(char **str, const char *fmt, va_list ap)
+-{
+-    char *new_str;
+-    /* Guess we need no more than 100 bytes. */
+-    int n, size = 100;
+- 
+-    if ((new_str = malloc (size)) == NULL)
+-      return -1;
+     *str = new_str;
+-    while (1) {
+-      /* Try to print in the allocated space. */
+-      n = vsnprintf (new_str, size, fmt, ap);
+-      /* If that worked, return the size. */
+-      if (n > -1 && n < size)
+-          return n;
++    while(1) {
++      va_start(ap, fmt);
++      n = vsnprintf (new_str, size, fmt, ap);
++      va_end(ap);
++      /* If that worked, return the size. */
++      if (n > -1 && n < size)
++      return n;
+       /* Else try again with more space. */
+       if (n > -1)    /* glibc 2.1 */
+           size = n+1; /* precisely what is needed */
+@@ -71,4 +69,6 @@
+       }
+       *str = new_str;
+     }
++
++    return -1; /* Just to be correct - it probably won't get here */
+ }
diff --git a/ipkg/ipkg-native_0.99.121.oe b/ipkg/ipkg-native_0.99.121.oe
new file mode 100644 (file)
index 0000000..7f3daff
--- /dev/null
@@ -0,0 +1,7 @@
+include ipkg_${PV}.oe
+inherit native
+
+DEPENDS = "patcher-native libtool-native automake-native"
+FILESDIR = "${@os.path.dirname(oe.data.getVar('FILE',d,1))}/ipkg-${PV}"
+PROVIDES = ""
+
diff --git a/ipkg/ipkg_0.99.121.oe b/ipkg/ipkg_0.99.121.oe
new file mode 100644 (file)
index 0000000..335dc4e
--- /dev/null
@@ -0,0 +1,45 @@
+DESCRIPTION = "Itsy Package Manager"
+DESCRIPTION_libipkg = "Itsy Package Manager Library"
+LICENSE = "GPL"
+PROVIDES = "virtual/ipkg libipkg"
+DEPENDS = "virtual/libc"
+PR = "r1"
+
+PACKAGES =+ "libipkg-dev libipkg "
+FILES_libipkg-dev = "${libdir}/*.a ${libdir}/*.la ${libdir}/*.so"
+FILES_libipkg = "${libdir}"
+AUTO_LIBNAME_PKGS = "libipkg"
+
+SRC_URI = "cvs://anoncvs:anoncvs@cvs.handhelds.org/cvs;module=familiar/dist/ipkg;tag=${@'V' + oe.data.getVar('PV',d,1).replace('.', '-')} \
+          file://varargs.patch;patch=1"
+S = "${WORKDIR}/ipkg/C"
+
+inherit autotools 
+
+pkg_postinst_ipkg () {
+#!/bin/sh
+if [ "x$D" != "x" ]; then
+       install -d ${IMAGE_ROOTFS}/${sysconfdir}/rcS.d
+       # this needs to happen after S35mountall so that /tmp is available
+       echo -e "#!/bin/sh\nipkg-cl configure\nrm -f \$0" > ${IMAGE_ROOTFS}/${sysconfdir}/rcS.d/S36configure
+       chmod 755 ${IMAGE_ROOTFS}/${sysconfdir}/rcS.d/S36configure
+fi
+
+update-alternatives --install /usr/bin/ipkg ipkg /usr/bin/ipkg-cl 100
+}
+
+pkg_postrm_ipkg () {
+#!/bin/sh
+update-alternatives --remove ipkg /usr/bin/ipkg-cl
+}
+
+do_stage() {
+       oe_libinstall -so libipkg ${STAGING_LIBDIR}
+       install -d ${STAGING_INCDIR}/replace/
+       install -m 0644 replace/replace.h ${STAGING_INCDIR}/replace/
+       install -d ${STAGING_INCDIR}/libipkg/
+       for f in *.h
+       do
+               install -m 0644 $f ${STAGING_INCDIR}/libipkg/
+       done
+}