rpm/rpm-native: Add recipe for 4.4.2.3 (from Poky)
authorMarcin Juszkiewicz <hrw@openembedded.org>
Wed, 19 Nov 2008 11:12:37 +0000 (12:12 +0100)
committerMarcin Juszkiewicz <hrw@openembedded.org>
Thu, 19 Mar 2009 19:22:34 +0000 (20:22 +0100)
Squashed set of changes from Poky:

svn r5069 - rpm/rpm-native: Add recipe for 4.4.2.3
svn r5085 - rpm: Patch out some Makefile strangeness causing build failures
svn r5093 - rpm: Enable python extensions and improve cross compiling patches
svn r5103 - rpm: Tweak patches to remove popt problem
svn r5113 - rpm: Add recommends support from suse rpm patches
svn r5132 - rpm-native: Set varprefix to get the rpm database in a sane location
svn r5152 - rpm: Handle PYTHONVER differently in EXTRA_OECONF to stop gettext/uclibc failures during parsing
svn r5154 - rpm: Add missing patches
svn r5423 - rpm: Add python module packaging

OE changes:

rpm-native: add Python 2.6 support
rpm: use distutils-base to get Python version
rpm: use sed instead of ed - it is present in our metadata
rpm: set ARM_INSTRUCTION_SET as it fails to build for thumb

| /tmp/ccYO91se.s: Assembler messages:
| /tmp/ccYO91se.s:71: Error: selected processor does not support `swpb r2,r3,[r4]'
| /tmp/ccYO91se.s:72: Error: unshifted register required -- `eor r2,r2,#1'

recipes/rpm/files/cross_libpaths.patch
recipes/rpm/files/extcond.patch [new file with mode: 0644]
recipes/rpm/files/external-tools.patch [new file with mode: 0644]
recipes/rpm/files/fix_mypath.patch [deleted file]
recipes/rpm/files/missingok.patch [new file with mode: 0644]
recipes/rpm/files/tagsbackport.patch [new file with mode: 0644]
recipes/rpm/files/weakdeps.patch [new file with mode: 0644]
recipes/rpm/rpm-native_4.4.2.3.bb [new file with mode: 0644]
recipes/rpm/rpm_4.4.2.3.bb [new file with mode: 0644]
recipes/rpm/rpm_4.4.bb [deleted file]

index d6139db..9e8f7dc 100644 (file)
@@ -1,8 +1,8 @@
-Index: rpm-4.4/configure.ac
+Index: rpm-4.4.2.3/configure.ac
 ===================================================================
---- rpm-4.4.orig/configure.ac  2005-01-29 10:54:37.698359056 -0500
-+++ rpm-4.4/configure.ac       2005-01-29 10:55:16.492461456 -0500
-@@ -321,10 +321,8 @@
+--- rpm-4.4.2.3.orig/configure.ac      2008-08-23 16:03:51.000000000 +0100
++++ rpm-4.4.2.3/configure.ac   2008-08-25 16:26:11.000000000 +0100
+@@ -326,10 +326,8 @@
  
  localdone=
  
@@ -14,7 +14,7 @@ Index: rpm-4.4/configure.ac
  for dir in $dirs
  do
        case $dir in
-@@ -366,6 +364,7 @@
+@@ -371,6 +369,7 @@
  else
        AC_MSG_RESULT(no)
  fi
@@ -22,3 +22,232 @@ Index: rpm-4.4/configure.ac
  
  dnl
  dnl Check for features
+@@ -473,7 +472,7 @@
+     AC_CHECK_HEADER([beecrypt/api.h], [
+       AC_DEFINE(HAVE_BEECRYPT_API_H, 1, [Define to 1 if you have the <beecrypt/api.h> header file.])
+     ])
+-    WITH_BEECRYPT_INCLUDE="-I${includedir}/beecrypt"
++    WITH_BEECRYPT_INCLUDE=""
+     WITH_BEECRYPT_LIB="-lbeecrypt"
+   ])
+ ],[
+@@ -506,7 +505,7 @@
+     AC_CHECK_LIB(neon, ne_send_request_chunk, [
+       AC_DEFINE(HAVE_NEON_NE_SEND_REQUEST_CHUNK, 1, [Define to 1 if you have ne_send_request_chunk() in libneon.])
+     ])
+-    WITH_NEON_INCLUDE="-I${includedir}/neon"
++    WITH_NEON_INCLUDE=""
+     WITH_NEON_LIB="-lneon"
+   ])
+ ],[
+@@ -857,6 +856,12 @@
+ dnl
+ dnl Auto-detect which python bindings should be built.
+ dnl
++
++AC_ARG_WITH(python-incdir, [  --with-python-incdir    python include directory ])
++PYTHON_INCDIR=$withval
++AC_ARG_WITH(python-libdir, [  --with-python-libdir    python library directory ])
++PYTHON_LIBDIR=$withval
++
+ withval=auto
+ AC_ARG_WITH(python, [  --with-python           build rpm python bindings ])
+@@ -934,6 +939,8 @@
+ AC_SUBST(WITH_PYTHON_SUBDIR)
+ AC_SUBST(WITH_PYTHON_SUBPACKAGE)
+ AC_SUBST(WITH_PYTHON_VERSION)
++AC_SUBST(PYTHON_LIBDIR)
++AC_SUBST(PYTHON_INCDIR)
+ AC_PATH_PROG(__DOXYGEN, doxygen, no, $PATH)
+ dnl
+Index: rpm-4.4.2.3/rpmio/Makefile.am
+===================================================================
+--- rpm-4.4.2.3.orig/rpmio/Makefile.am 2008-04-01 08:28:22.000000000 +0100
++++ rpm-4.4.2.3/rpmio/Makefile.am      2008-08-23 12:14:12.000000000 +0100
+@@ -26,9 +26,7 @@
+ BEECRYPTLOBJS = $(shell test X"@WITH_BEECRYPT_SUBDIR@" != X && cat $(top_builddir)/@WITH_BEECTYPT_SUBDIR@/listobjs)
+-LDFLAGS = -L$(RPM_BUILD_ROOT)$(usrlibdir) -L$(DESTDIR)$(usrlibdir)
+-
+-usrlibdir = $(libdir)@MARK64@
++usrlibdir = $(libdir)
+ usrlib_LTLIBRARIES = librpmio.la
+ librpmio_la_SOURCES = \
+       argv.c digest.c fts.c macro.c rpmdav.c \
+Index: rpm-4.4.2.3/rpmio/rpmio_internal.h
+===================================================================
+--- rpm-4.4.2.3.orig/rpmio/rpmio_internal.h    2008-04-01 08:28:22.000000000 +0100
++++ rpm-4.4.2.3/rpmio/rpmio_internal.h 2008-08-23 12:07:29.000000000 +0100
+@@ -12,22 +12,22 @@
+ #if HAVE_BEECRYPT_API_H
+ #include <api.h>
+ #else
+-#include <beecrypt.api.h>
++#include <beecrypt/beecrypt.api.h>
+ #endif
+ #include <rpmpgp.h>
+ #include <rpmsw.h>
+ /* Drag in the beecrypt includes. */
+-#include <beecrypt.h>
+-#include <base64.h>
+-#include <dsa.h>
+-#include <endianness.h>
+-#include <md5.h>
+-#include <mp.h>
+-#include <rsa.h>
+-#include <rsapk.h>
+-#include <sha1.h>
++#include <beecrypt/beecrypt.h>
++#include <beecrypt/base64.h>
++#include <beecrypt/dsa.h>
++#include <beecrypt/endianness.h>
++#include <beecrypt/md5.h>
++#include <beecrypt/mp.h>
++#include <beecrypt/rsa.h>
++#include <beecrypt/rsapk.h>
++#include <beecrypt/sha1.h>
+ #if HAVE_BEECRYPT_API_H
+ #include <sha256.h>
+ #include <sha384.h>
+Index: rpm-4.4.2.3/Makefile.am
+===================================================================
+--- rpm-4.4.2.3.orig/Makefile.am       2008-04-01 08:28:21.000000000 +0100
++++ rpm-4.4.2.3/Makefile.am    2008-08-25 23:09:40.000000000 +0100
+@@ -10,7 +10,7 @@
+       po/*.in po/*.po po/rpm.pot \
+       rpm.magic rpmpopt-$(VERSION) rpmqv.c 
+-SUBDIRS = po misc @WITH_ZLIB_SUBDIR@ @WITH_ELFUTILS_SUBDIR@ @WITH_MAGIC_SUBDIR@ @WITH_DB_SUBDIR@ @WITH_SQLITE3_SUBDIR@ @WITH_POPT_SUBDIR@ @WITH_BEECRYPT_SUBDIR@ @WITH_NEON_SUBDIR@ lua rpmio rpmdb lib build @WITH_PYTHON_SUBDIR@ tools scripts doc .
++SUBDIRS = po misc @WITH_ZLIB_SUBDIR@ @WITH_ELFUTILS_SUBDIR@ @WITH_MAGIC_SUBDIR@ @WITH_DB_SUBDIR@ @WITH_SQLITE3_SUBDIR@ @WITH_POPT_SUBDIR@ @WITH_BEECRYPT_SUBDIR@ @WITH_NEON_SUBDIR@ rpmio rpmdb lib build @WITH_PYTHON_SUBDIR@ tools scripts doc .
+ INCLUDES = \
+       -I$(top_srcdir)/build \
+@@ -93,7 +93,7 @@
+ rpm2cpio_LDFLAGS =    $(myLDFLAGS)
+ rpm2cpio_LDADD =      $(myLDADD) @LIBMISC@
+-$(PROGRAMS):          $(myLDADD) @WITH_APIDOCS_TARGET@
++$(PROGRAMS):          @WITH_APIDOCS_TARGET@
+ .PHONY:       splint
+ splint:
+Index: rpm-4.4.2.3/rpmdb/Makefile.am
+===================================================================
+--- rpm-4.4.2.3.orig/rpmdb/Makefile.am 2008-04-01 08:28:22.000000000 +0100
++++ rpm-4.4.2.3/rpmdb/Makefile.am      2008-08-23 12:13:18.000000000 +0100
+@@ -41,10 +41,7 @@
+ # XXX watchout, ../db3/libdb.la created by this Makefile may surprise
+ libdb_la = $(top_builddir)/$(WITH_DB_SUBDIR)/libdb.la
+-# XXX grrr, RPM_BUILD_ROOT prevents build pollution if/when -lrpm different
+-LDFLAGS = -L$(RPM_BUILD_ROOT)$(usrlibdir) -L$(DESTDIR)$(usrlibdir)
+-
+-usrlibdir = $(libdir)@MARK64@
++usrlibdir = $(libdir)
+ usrlib_LTLIBRARIES = librpmdb.la
+ librpmdb_la_SOURCES = \
+       dbconfig.c fprint.c \
+Index: rpm-4.4.2.3/lib/Makefile.am
+===================================================================
+--- rpm-4.4.2.3.orig/lib/Makefile.am   2008-04-01 08:28:22.000000000 +0100
++++ rpm-4.4.2.3/lib/Makefile.am        2008-08-23 16:03:51.000000000 +0100
+@@ -29,9 +29,7 @@
+ mylibs = librpm.la
+ LIBS =
+-LDFLAGS = -L$(RPM_BUILD_ROOT)$(usrlibdir) -L$(DESTDIR)$(usrlibdir)
+-
+-usrlibdir = $(libdir)@MARK64@
++usrlibdir = $(libdir)
+ usrlib_LTLIBRARIES = librpm.la
+ librpm_la_SOURCES = \
+       cpio.c depends.c formats.c fs.c fsm.c getdate.c \
+Index: rpm-4.4.2.3/build/Makefile.am
+===================================================================
+--- rpm-4.4.2.3.orig/build/Makefile.am 2008-04-01 08:28:21.000000000 +0100
++++ rpm-4.4.2.3/build/Makefile.am      2008-08-23 16:03:51.000000000 +0100
+@@ -22,9 +22,7 @@
+ pkginc_HEADERS = rpmbuild.h rpmfc.h rpmfile.h rpmspec.h
+ noinst_HEADERS = buildio.h
+-LDFLAGS = -L$(RPM_BUILD_ROOT)$(usrlibdir) -L$(DESTDIR)$(usrlibdir)
+-
+-usrlibdir = $(libdir)@MARK64@
++usrlibdir = $(libdir)
+ usrlib_LTLIBRARIES = librpmbuild.la
+ librpmbuild_la_SOURCES = \
+       build.c expression.c files.c misc.c names.c pack.c \
+Index: rpm-4.4.2.3/python/Makefile.am
+===================================================================
+--- rpm-4.4.2.3.orig/python/Makefile.am        2008-04-01 08:28:22.000000000 +0100
++++ rpm-4.4.2.3/python/Makefile.am     2008-08-25 16:26:56.000000000 +0100
+@@ -4,8 +4,8 @@
+ LINT = splint
+-pylibdir = ${prefix}/lib@MARK64@/python@WITH_PYTHON_VERSION@
+-pyincdir = $(prefix)/include/python@WITH_PYTHON_VERSION@
++pylibdir = @PYTHON_LIBDIR@
++pyincdir = @PYTHON_INCDIR@
+ SUBDIRS = rpm
+Index: rpm-4.4.2.3/python/rpm/Makefile.am
+===================================================================
+--- rpm-4.4.2.3.orig/python/rpm/Makefile.am    2008-04-01 08:28:22.000000000 +0100
++++ rpm-4.4.2.3/python/rpm/Makefile.am 2008-08-25 16:27:29.000000000 +0100
+@@ -4,8 +4,8 @@
+ PYVER = @WITH_PYTHON_VERSION@
+-pylibdir = ${prefix}/lib@MARK64@/python@WITH_PYTHON_VERSION@
+-pyincdir = $(prefix)/include/python@WITH_PYTHON_VERSION@
++pylibdir = @PYTHON_LIBDIR@
++pyincdir = @PYTHON_INCDIR@
+ EXTRA_DIST = \
+       __init__.py
+Index: rpm-4.4.2.3/file/src/Makefile.am
+===================================================================
+--- rpm-4.4.2.3.orig/file/src/Makefile.am      2008-08-23 16:06:25.000000000 +0100
++++ rpm-4.4.2.3/file/src/Makefile.am   2008-08-23 16:06:39.000000000 +0100
+@@ -4,7 +4,7 @@
+ EXTRA_DIST = test.c
+ # XXX Make sure compress.c links internal zlib
+-INCLUDES = -I. -I ../../zlib
++INCLUDES = -I. 
+ pkglibdir =  @prefix@/lib/rpm
+ MAGIC    = $(pkglibdir)/magic
+@@ -26,7 +26,7 @@
+ noinst_PROGRAMS = file
+ file_SOURCES = file.c
+-file_LDFLAGS = -L../../zlib # -all-static
++#file_LDFLAGS = -L../../zlib # -all-static
+ file_LDADD = libmagic.la
+ listobjs:
+Index: rpm-4.4.2.3/file/magic/Makefile.am
+===================================================================
+--- rpm-4.4.2.3.orig/file/magic/Makefile.am    2008-08-25 16:14:47.000000000 +0100
++++ rpm-4.4.2.3/file/magic/Makefile.am 2008-08-25 16:15:02.000000000 +0100
+@@ -18,10 +18,10 @@
+       done >> $@
+ magic.mgc: magic
+-      $(top_builddir)/src/file -C -m magic
++      file -C -m magic
+ magic.mime.mgc: magic.mime
+-      $(top_builddir)/src/file -C -m $(srcdir)/magic.mime
++      file -C -m $(srcdir)/magic.mime
+ magic_FRAGMENTS = \
+ Magdir/acorn \
diff --git a/recipes/rpm/files/extcond.patch b/recipes/rpm/files/extcond.patch
new file mode 100644 (file)
index 0000000..6963b86
--- /dev/null
@@ -0,0 +1,78 @@
+This patch supports an extension in the condition evaluation.
+If the condition is a format and returns an nonempty string, it is
+assumed to be true.
+This mechanism is used by the weakdeps patch to filter the
+"RPMSENSE_STRONG" flag.
+
+--- ./rpmdb/header.c.orig      2005-06-06 23:33:54.000000000 +0000
++++ ./rpmdb/header.c   2006-03-17 18:08:02.000000000 +0000
+@@ -2980,8 +2980,12 @@ static int parseExpression(headerSprintf
+     *endPtr = chptr;
++    token->u.cond.tag.type = NULL;
++    token->u.cond.tag.format = "";
+     token->type = PTOK_COND;
++    if ((token->u.cond.tag.type = strchr(str, ':')) != 0)
++      *token->u.cond.tag.type++ = 0;
+     (void) findTag(hsa, token, str);
+     return 0;
+@@ -3239,6 +3243,7 @@ static char * singleSprintf(headerSprint
+     int_32 type;
+     int_32 count;
+     sprintfToken spft;
++    sprintfTag stag;
+     int condNumFormats;
+     size_t need;
+@@ -3270,6 +3275,18 @@ static char * singleSprintf(headerSprint
+       if (token->u.cond.tag.ext || headerIsEntry(hsa->h, token->u.cond.tag.tag)) {
+           spft = token->u.cond.ifFormat;
+           condNumFormats = token->u.cond.numIfTokens;
++          if (token->u.cond.tag.fmt) {
++              /* check if format creates output */
++              size_t vallen = hsa->vallen;
++              formatValue(hsa, &token->u.cond.tag, element);
++              if (hsa->vallen == vallen) {
++                  spft = token->u.cond.elseFormat;
++                  condNumFormats = token->u.cond.numElseTokens;
++              } else {
++                  hsa->vallen = vallen;
++                  hsa->val[hsa->vallen] = 0;
++              }
++          }
+       } else {
+           spft = token->u.cond.elseFormat;
+           condNumFormats = token->u.cond.numElseTokens;
+@@ -3291,19 +3308,22 @@ static char * singleSprintf(headerSprint
+       spft = token->u.array.format;
+       for (i = 0; i < token->u.array.numTokens; i++, spft++)
+       {
+-          if (spft->type != PTOK_TAG ||
+-              spft->u.tag.arrayCount ||
+-              spft->u.tag.justOne) continue;
++          if (spft->type != PTOK_TAG && spft->type != PTOK_COND)
++              continue;
++
++          stag = (spft->type == PTOK_COND ? &spft->u.cond.tag : &spft->u.tag);
++          if (stag->arrayCount || stag->justOne)
++              continue;
+-          if (spft->u.tag.ext) {
++          if (stag->ext) {
+ /*@-boundswrite@*/
+-              if (getExtension(hsa, spft->u.tag.ext, &type, NULL, &count, 
+-                               hsa->ec + spft->u.tag.extNum))
++              if (getExtension(hsa, stag->ext, &type, NULL, &count, 
++                               hsa->ec + stag->extNum))
+                    continue;
+ /*@=boundswrite@*/
+           } else {
+ /*@-boundswrite@*/
+-              if (!headerGetEntry(hsa->h, spft->u.tag.tag, &type, NULL, &count))
++              if (!headerGetEntry(hsa->h, stag->tag, &type, NULL, &count))
+                   continue;
+ /*@=boundswrite@*/
+           } 
diff --git a/recipes/rpm/files/external-tools.patch b/recipes/rpm/files/external-tools.patch
new file mode 100644 (file)
index 0000000..2b2ff70
--- /dev/null
@@ -0,0 +1,108 @@
+Index: rpm-4.4.2.3/configure.ac
+===================================================================
+--- rpm-4.4.2.3.orig/configure.ac      2008-04-01 08:30:14.000000000 +0100
++++ rpm-4.4.2.3/configure.ac   2008-08-17 10:57:30.000000000 +0100
+@@ -529,7 +529,7 @@
+ WITH_MAGIC_INCLUDE=
+ WITH_MAGIC_LIB=
+-if test -d file ; then
++if test -d file  ; then
+   WITH_RPMFILE=rpmfile
+   WITH_MAGIC_SUBDIR=file
+   WITH_MAGIC_INCLUDE="-I\${top_srcdir}/${WITH_MAGIC_SUBDIR}/src"
+@@ -1307,7 +1307,7 @@
+ dnl # XXX Propagate -lucb to popt ...
+ dnl export LIBS INCPATH CONFIG_SITE
+-AC_CONFIG_SUBDIRS(popt file db3)
++AC_CONFIG_SUBDIRS(db/dist file)
+ AC_CONFIG_FILES([ Doxyfile Makefile rpmrc macros platform rpmpopt
+       rpmio/Makefile rpmdb/Makefile lib/Makefile build/Makefile
+Index: rpm-4.4.2.3/db/dist/configure.ac
+===================================================================
+--- rpm-4.4.2.3.orig/db/dist/configure.ac      2008-04-01 08:28:21.000000000 +0100
++++ rpm-4.4.2.3/db/dist/configure.ac   2008-08-17 09:54:37.000000000 +0100
+@@ -11,14 +11,6 @@
+ AC_CANONICAL_HOST()
+ AC_ARG_PROGRAM()
+-# Don't build in the top-level or dist directories.
+-AC_MSG_CHECKING(if building in the top-level or dist directories)
+-if [ test -d db_archive -o -f configure.ac ] ; then
+-      AC_MSG_RESULT(yes)
+-      AC_MSG_ERROR(
+-    [Berkeley DB should not be built in the top-level or dist directories.])
+-fi
+-AC_MSG_RESULT(no)
+ # Substitution variables.
+ AC_SUBST(ADDITIONAL_INCS)
+@@ -281,7 +273,7 @@
+ AC_PROG_LIBTOOL
+ SOFLAGS="-rpath \$(libdir)"
+-LIBTOOL_PROG="${SHELL} ./libtool"
++LIBTOOL_PROG="${SHELL} ./$host_alias-libtool"
+ # Set SOSUFFIX and friends
+ SOSUFFIX_CONFIG
+@@ -297,7 +289,7 @@
+ MAKEFILE_XSOLINK="\$(LIBTOOL) --mode=link ${MAKEFILE_CXXLINK} -avoid-version"
+ MAKEFILE_CXXLINK="\$(LIBTOOL) --mode=link ${MAKEFILE_CXXLINK}"
+-LIBTOOL="\$(SHELL) ./libtool"
++LIBTOOL="\$(SHELL) ./$host_alias-libtool"
+ case "$host_os" in
+ cygwin* | mingw*)
+Index: rpm-4.4.2.3/db/dist/aclocal/options.ac
+===================================================================
+--- rpm-4.4.2.3.orig/db/dist/aclocal/options.ac        2008-08-17 09:57:49.000000000 +0100
++++ rpm-4.4.2.3/db/dist/aclocal/options.ac     2008-08-17 09:57:59.000000000 +0100
+@@ -277,10 +277,6 @@
+ # Uniquename excludes C++, Java, RPC.
+ if test "$db_cv_uniquename" = "yes"; then
+-      if test "$db_cv_rpc" = "yes"; then
+-              AC_MSG_ERROR(
+-                  [--with-uniquename is not compatible with --enable-rpc])
+-      fi
+       if test "$db_cv_cxx" = "yes"; then
+               AC_MSG_ERROR(
+                   [--with-uniquename is not compatible with --enable-cxx])
+Index: rpm-4.4.2.3/db/dist/aclocal/rpc.ac
+===================================================================
+--- rpm-4.4.2.3.orig/db/dist/aclocal/rpc.ac    2008-08-17 10:46:26.000000000 +0100
++++ rpm-4.4.2.3/db/dist/aclocal/rpc.ac 2008-08-17 10:46:47.000000000 +0100
+@@ -60,6 +60,7 @@
+           -e 's/^}/__dbsrv_timeout(0);}/' \
+           -e '}' \
+           -e '1,/^#include/s/^#include/#include "db_config.h"\
++#include "db_int_def.h"\
+ &/' > db_server_svc.c
+       $RPCGEN -c $XDR_FILE |
+Index: rpm-4.4.2.3/tools/rpmfile.c
+===================================================================
+--- rpm-4.4.2.3.orig/tools/rpmfile.c   2008-08-17 11:01:51.000000000 +0100
++++ rpm-4.4.2.3/tools/rpmfile.c        2008-08-17 11:03:07.000000000 +0100
+@@ -29,7 +29,7 @@
+  * file - find type of a file or files - main program.
+  */
+-#include "file.h"
++#include "../file/src/file.h"
+ #include "magic.h"
+ #include <stdio.h>
+@@ -69,7 +69,7 @@
+ #include <netinet/in.h>               /* for byte swapping */
+-#include "patchlevel.h"
++#include "../file/src/patchlevel.h"
+ #ifndef       lint
+ FILE_RCSID("@(#)$Id: file.c,v 1.96 2005/03/06 05:58:22 christos Exp $")
diff --git a/recipes/rpm/files/fix_mypath.patch b/recipes/rpm/files/fix_mypath.patch
deleted file mode 100644 (file)
index 09512be..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-Index: rpm-4.4/configure.ac
-===================================================================
---- rpm-4.4.orig/configure.ac  2005-01-29 10:54:13.599022712 -0500
-+++ rpm-4.4/configure.ac       2005-01-29 10:54:37.698359056 -0500
-@@ -230,7 +230,7 @@
- dnl use defaults if cross-compiling, otherwise use the default path.
- dnl
- if test "$cross_compiling" = "yes"; then
--    MYPATH=""
-+    MYPATH=":"
- else
- #    MYPATH="/bin:/usr/bin:/usr/local/bin:$PATH:/sbin:/usr/sbin:/usr/local/sbin:/opt/gnu/bin"
-     MYPATH=$PATH
diff --git a/recipes/rpm/files/missingok.patch b/recipes/rpm/files/missingok.patch
new file mode 100644 (file)
index 0000000..b008c9a
--- /dev/null
@@ -0,0 +1,44 @@
+Obey MISSINGOK flag for dependencies. Backport from rpm-4.4.7.
+
+Index: lib/depends.c
+===================================================================
+--- lib/depends.c.orig 2008-04-01 08:28:22.000000000 +0100
++++ lib/depends.c      2008-09-04 14:09:58.000000000 +0100
+@@ -593,8 +593,13 @@
+ /*@=boundsread@*/
+ unsatisfied:
+-    rc = 1;   /* dependency is unsatisfied */
+-    rpmdsNotify(dep, NULL, rc);
++    if (rpmdsFlags(dep) & RPMSENSE_MISSINGOK) {
++      rc = 0; /* dependency is unsatisfied, but just a hint. */
++      rpmdsNotify(dep, _("(hint skipped)"), rc);
++    } else {
++      rc = 1; /* dependency is unsatisfied */
++      rpmdsNotify(dep, NULL, rc);
++    }
+ exit:
+     /*
+@@ -963,6 +968,8 @@
+       return "Requires(postun):";
+     if (f & RPMSENSE_SCRIPT_VERIFY)
+       return "Requires(verify):";
++    if (f & RPMSENSE_MISSINGOK)
++      return "Requires(hint):";
+     if (f & RPMSENSE_FIND_REQUIRES)
+       return "Requires(auto):";
+     return "Requires:";
+Index: lib/rpmlib.h
+===================================================================
+--- lib/rpmlib.h.orig  2008-09-03 22:22:43.000000000 +0100
++++ lib/rpmlib.h       2008-09-04 15:17:17.000000000 +0100
+@@ -562,6 +562,8 @@
+     RPMSENSE_SCRIPT_POSTUN | \
+     RPMSENSE_SCRIPT_VERIFY | \
+     RPMSENSE_FIND_REQUIRES | \
++    RPMSENSE_MISSINGOK | \
++    RPMSENSE_STRONG | \
+     RPMSENSE_SCRIPT_PREP | \
+     RPMSENSE_SCRIPT_BUILD | \
+     RPMSENSE_SCRIPT_INSTALL | \
diff --git a/recipes/rpm/files/tagsbackport.patch b/recipes/rpm/files/tagsbackport.patch
new file mode 100644 (file)
index 0000000..a2a3609
--- /dev/null
@@ -0,0 +1,37 @@
+Backported some new tags and sense values.
+
+Index: lib/rpmlib.h
+===================================================================
+--- lib/rpmlib.h.orig  2008-08-26 17:07:12.000000000 +0100
++++ lib/rpmlib.h       2008-08-26 17:22:21.000000000 +0100
+@@ -447,7 +447,19 @@
+     RPMTAG_PRIORITY           = 1162, /* i   extension placeholder */
+     RPMTAG_CVSID              = 1163, /* s */
+ #define       RPMTAG_SVNID    RPMTAG_CVSID    /* s */
++    RPMTAG_BLINKPKGID         = 1164, /* s[] */
++    RPMTAG_BLINKHDRID         = 1165, /* s[] */
++    RPMTAG_BLINKNEVRA         = 1166, /* s[] */
++    RPMTAG_FLINKPKGID         = 1167, /* s[] */
++    RPMTAG_FLINKHDRID         = 1168, /* s[] */
++    RPMTAG_FLINKNEVRA         = 1169, /* s[] */
++    RPMTAG_PACKAGEORIGIN      = 1170, /* s */
+     RPMTAG_TRIGGERPREIN               = 1171, /*!< internal */
++    RPMTAG_BUILDSUGGESTS      = 1172, /*!< internal */
++    RPMTAG_BUILDENHANCES      = 1173, /*!< internal */
++    RPMTAG_SCRIPTSTATES               = 1174, /*!< i scriptlet exit codes */
++    RPMTAG_SCRIPTMETRICS      = 1175, /*!< i scriptlet execution times */
++    RPMTAG_BUILDCPUCLOCK      = 1176, /*!< i */
+ /*@-enummemuse@*/
+     RPMTAG_FIRSTFREE_TAG      /*!< internal */
+@@ -531,7 +543,9 @@
+ /*@=enummemuse@*/
+     RPMSENSE_KEYRING  = (1 << 26),
+     RPMSENSE_STRONG   = (1 << 27),
+-    RPMSENSE_CONFIG   = (1 << 28)
++    RPMSENSE_CONFIG   = (1 << 28),
++    RPMSENSE_PROBE    = (1 << 29),
++    RPMSENSE_PACKAGE  = (1 << 30)
+ } rpmsenseFlags;
+ #define       RPMSENSE_SENSEMASK      15       /* Mask to get senses, ie serial, */
diff --git a/recipes/rpm/files/weakdeps.patch b/recipes/rpm/files/weakdeps.patch
new file mode 100644 (file)
index 0000000..a013b75
--- /dev/null
@@ -0,0 +1,312 @@
+Taken from OpenSUSE 11 rpm source file - RP 26/8/08
+
+Add support for weak dependencies:
+
+A) use RPMTAG_SUGGESTS and RPMTAG_ENHANCES to store them.
+
+   This is different to upstream, which uses RPMSENSE_MISSINGOK
+   and RPMTAG_REQUIRES/RPMTAG_PROVIDES instead. I chose different
+   tags because I wanted to be compatible. The point is that
+   applications that don't know about the new MISSINGOK semantics
+   will mis-interpret the provides/requires otherwise, which
+   I deemed to risky.
+
+B) use RPMSENSE_STRONG to support a "strong" version, "Recommends"
+   instead of "Suggests" and "Supplements" instead of "Enhances".
+
+Needs extcond.diff for query operations.
+
+Index: build/parsePreamble.c
+===================================================================
+--- build/parsePreamble.c.orig 2008-04-01 08:28:21.000000000 +0100
++++ build/parsePreamble.c      2008-08-26 16:58:09.000000000 +0100
+@@ -129,6 +129,8 @@
+     { "post",         RPMSENSE_SCRIPT_POST },
+     { "rpmlib",               RPMSENSE_RPMLIB },
+     { "verify",               RPMSENSE_SCRIPT_VERIFY },
++    { "hint",         RPMSENSE_MISSINGOK },
++    { "strong",               RPMSENSE_STRONG },
+     { NULL, 0 }
+ };
+@@ -140,6 +142,8 @@
+     { "build",                RPMSENSE_SCRIPT_BUILD },
+     { "install",      RPMSENSE_SCRIPT_INSTALL },
+     { "clean",                RPMSENSE_SCRIPT_CLEAN },
++    { "hint",         RPMSENSE_MISSINGOK },
++    { "strong",               RPMSENSE_STRONG },
+     { NULL, 0 }
+ };
+@@ -692,6 +696,18 @@
+       if ((rc = parseRCPOT(spec, pkg, field, tag, 0, tagflags)))
+           return rc;
+       break;
++    case RPMTAG_SUGGESTSFLAGS:
++    case RPMTAG_ENHANCESFLAGS:
++    case RPMTAG_BUILDSUGGESTS:
++    case RPMTAG_BUILDENHANCES:
++      tagflags = RPMSENSE_MISSINGOK;
++      if (macro && (!strcmp(macro, "recommends") || !strcmp(macro, "buildrecommends")))
++          tagflags |= RPMSENSE_STRONG;
++      if (macro && (!strcmp(macro, "supplements") || !strcmp(macro, "buildsupplements")))
++          tagflags |= RPMSENSE_STRONG;
++      if ((rc = parseRCPOT(spec, pkg, field, tag, 0, tagflags)))
++          return rc;
++      break;
+     case RPMTAG_EXCLUDEARCH:
+     case RPMTAG_EXCLUSIVEARCH:
+     case RPMTAG_EXCLUDEOS:
+@@ -783,6 +799,14 @@
+     {RPMTAG_DISTTAG,          0, 0, 0, "disttag"},
+     {RPMTAG_CVSID,            0, 0, 0, "cvsid"},
+     {RPMTAG_SVNID,            0, 0, 0, "svnid"},
++    {RPMTAG_SUGGESTSFLAGS,    0, 0, 0, "recommends"},
++    {RPMTAG_SUGGESTSFLAGS,    0, 0, 0, "suggests"},
++    {RPMTAG_ENHANCESFLAGS,    0, 0, 0, "supplements"},
++    {RPMTAG_ENHANCESFLAGS,    0, 0, 0, "enhances"},
++    {RPMTAG_BUILDSUGGESTS,    0, 0, 0, "buildrecommends"},
++    {RPMTAG_BUILDSUGGESTS,    0, 0, 0, "buildsuggests"},
++    {RPMTAG_BUILDENHANCES,    0, 0, 0, "buildsupplements"},
++    {RPMTAG_BUILDENHANCES,    0, 0, 0, "buildenhances"},
+     /*@-nullassign@*/ /* LCL: can't add null annotation */
+     {0, 0, 0, 0, 0}
+     /*@=nullassign@*/
+Index: build/parseReqs.c
+===================================================================
+--- build/parseReqs.c.orig     2008-04-01 08:28:21.000000000 +0100
++++ build/parseReqs.c  2008-08-26 16:58:09.000000000 +0100
+@@ -85,6 +85,14 @@
+       tagflags |= RPMSENSE_ANY;
+       h = spec->buildRestrictions;
+       break;
++    case RPMTAG_SUGGESTSFLAGS:
++    case RPMTAG_ENHANCESFLAGS:
++      h = pkg->header;
++      break;
++    case RPMTAG_BUILDSUGGESTS:
++    case RPMTAG_BUILDENHANCES:
++        h = spec->buildRestrictions;
++        break;
+     default:
+     case RPMTAG_REQUIREFLAGS:
+       tagflags |= RPMSENSE_ANY;
+Index: build/reqprov.c
+===================================================================
+--- build/reqprov.c.orig       2008-04-01 08:28:21.000000000 +0100
++++ build/reqprov.c    2008-08-26 16:58:09.000000000 +0100
+@@ -48,6 +48,16 @@
+       flagtag = RPMTAG_TRIGGERFLAGS;
+       indextag = RPMTAG_TRIGGERINDEX;
+       extra = Flags & RPMSENSE_TRIGGER;
++    } else if (tagN == RPMTAG_SUGGESTSFLAGS || tagN == RPMTAG_BUILDSUGGESTS) {
++      nametag = RPMTAG_SUGGESTSNAME;
++      versiontag = RPMTAG_SUGGESTSVERSION;
++      flagtag = RPMTAG_SUGGESTSFLAGS;
++      extra = Flags & _ALL_REQUIRES_MASK;
++    } else if (tagN == RPMTAG_ENHANCESFLAGS || tagN == RPMTAG_BUILDENHANCES) {
++      nametag = RPMTAG_ENHANCESNAME;
++      versiontag = RPMTAG_ENHANCESVERSION;
++      flagtag = RPMTAG_ENHANCESFLAGS;
++      extra = Flags & _ALL_REQUIRES_MASK;
+     } else {
+       nametag = RPMTAG_REQUIRENAME;
+       versiontag = RPMTAG_REQUIREVERSION;
+Index: build/rpmfc.c
+===================================================================
+--- build/rpmfc.c.orig 2008-04-01 08:28:21.000000000 +0100
++++ build/rpmfc.c      2008-08-26 16:58:09.000000000 +0100
+@@ -1385,6 +1385,12 @@
+   { "Obsoletes",      { "%{?__find_obsoletes}", NULL, NULL, NULL },
+       RPMTAG_OBSOLETENAME, RPMTAG_OBSOLETEVERSION, RPMTAG_OBSOLETEFLAGS,
+       0, -1 },
++  { "Enhances",               { "%{?__find_enhances}", NULL, NULL, NULL },
++      RPMTAG_ENHANCESNAME, RPMTAG_ENHANCESVERSION, RPMTAG_ENHANCESFLAGS,
++      RPMSENSE_STRONG, RPMSENSE_STRONG },
++  { "Supplements",    { "%{?__find_supplements}", NULL, NULL, NULL },
++      RPMTAG_ENHANCESNAME, RPMTAG_ENHANCESVERSION, RPMTAG_ENHANCESFLAGS,
++      RPMSENSE_STRONG, 0 },
+   { NULL,             { NULL, NULL, NULL, NULL },     0, 0, 0, 0, 0 }
+ };
+@@ -1480,6 +1486,14 @@
+           failnonzero = 0;
+           tagflags = RPMSENSE_FIND_REQUIRES;
+           /*@switchbreak@*/ break;
++      case RPMTAG_ENHANCESFLAGS:
++          if (!pkg->autoProv)
++              continue;
++          failnonzero = 0;
++          tagflags = RPMSENSE_FIND_REQUIRES | RPMSENSE_MISSINGOK;
++          if (strcmp(dm->msg, "Supplements") == 0)
++              tagflags |= RPMSENSE_STRONG;
++          /*@switchbreak@*/ break;
+       default:
+           continue;
+           /*@notreached@*/ /*@switchbreak@*/ break;
+Index: lib/rpmlib.h
+===================================================================
+--- lib/rpmlib.h.orig  2008-04-01 08:28:22.000000000 +0100
++++ lib/rpmlib.h       2008-08-26 17:00:37.000000000 +0100
+@@ -530,7 +530,7 @@
+     RPMSENSE_TRIGGERPREIN = (1 << 25),        /*!< @todo Implement %triggerprein. */
+ /*@=enummemuse@*/
+     RPMSENSE_KEYRING  = (1 << 26),
+-    RPMSENSE_PATCHES  = (1 << 27),
++    RPMSENSE_STRONG   = (1 << 27),
+     RPMSENSE_CONFIG   = (1 << 28)
+ } rpmsenseFlags;
+Index: python/rpmmodule.c
+===================================================================
+--- python/rpmmodule.c.orig    2008-04-01 08:28:22.000000000 +0100
++++ python/rpmmodule.c 2008-08-26 16:58:09.000000000 +0100
+@@ -433,7 +433,7 @@
+     REGISTER_ENUM(RPMSENSE_RPMLIB);
+     REGISTER_ENUM(RPMSENSE_TRIGGERPREIN);
+     REGISTER_ENUM(RPMSENSE_KEYRING);
+-    REGISTER_ENUM(RPMSENSE_PATCHES);
++    REGISTER_ENUM(RPMSENSE_STRONG);
+     REGISTER_ENUM(RPMSENSE_CONFIG);
+     REGISTER_ENUM(RPMTRANS_FLAG_TEST);
+Index: lib/rpmds.c
+===================================================================
+--- lib/rpmds.c.orig   2008-04-01 08:28:22.000000000 +0100
++++ lib/rpmds.c        2008-08-26 16:58:09.000000000 +0100
+@@ -320,6 +320,11 @@
+       tagEVR = RPMTAG_TRIGGERVERSION;
+       tagF = RPMTAG_TRIGGERFLAGS;
+     } else
++    if (tagN == RPMTAG_ENHANCESNAME) {
++      Type = "Enhances";
++      tagEVR = RPMTAG_ENHANCESVERSION;
++      tagF = RPMTAG_ENHANCESFLAGS;
++    } else
+       goto exit;
+     /*@-branchstate@*/
+Index: rpmpopt.in
+===================================================================
+--- rpmpopt.in.orig    2008-04-01 08:28:22.000000000 +0100
++++ rpmpopt.in 2008-08-26 16:58:09.000000000 +0100
+@@ -68,6 +68,22 @@
+       --POPTdesc=$"list capabilities required by package(s)"
+ rpm   alias -R --requires
++rpm   alias --suggests        --qf \
++  "[%|SUGGESTSFLAGS:depflag_strong?{}:{%{SUGGESTSNAME} %{SUGGESTSFLAGS:depflags} %{SUGGESTSVERSION}\n}|]" \
++      --POPTdesc=$"list capabilities this package suggests"
++
++rpm   alias --recommends      --qf \
++  "[%|SUGGESTSFLAGS:depflag_strong?{%{SUGGESTSNAME} %{SUGGESTSFLAGS:depflags} %{SUGGESTSVERSION}\n}|]" \
++      --POPTdesc=$"list capabilities this package recommends"
++
++rpm   alias --enhances        --qf \
++  "[%|ENHANCESFLAGS:depflag_strong?{}:{%{ENHANCESNAME} %{ENHANCESFLAGS:depflags} %{ENHANCESVERSION}\n}|]" \
++      --POPTdesc=$"list capabilities this package enhances"
++
++rpm   alias --supplements     --qf \
++  "[%|ENHANCESFLAGS:depflag_strong?{%{ENHANCESNAME} %{ENHANCESFLAGS:depflags} %{ENHANCESVERSION}\n}|]" \
++      --POPTdesc=$"list capabilities this package supplements"
++
+ rpm   alias --info --qf 'Name        : %-27{NAME}  Relocations: %|PREFIXES?{[%{PREFIXES} ]}:{(not relocatable)}|\n\
+ Version     : %-27{VERSION}       Vendor: %{VENDOR}\n\
+ Release     : %-27{RELEASE}   Build Date: %{BUILDTIME:date}\n\
+@@ -351,6 +367,22 @@
+       --POPTdesc=$"list capabilities required by package(s)"
+ rpmq  alias -R --requires
++rpmq  alias --suggests        --qf \
++  "[%|SUGGESTSFLAGS:depflag_strong?{}:{%{SUGGESTSNAME} %{SUGGESTSFLAGS:depflags} %{SUGGESTSVERSION}\n}|]" \
++      --POPTdesc=$"list capabilities this package suggests"
++
++rpmq  alias --recommends      --qf \
++  "[%|SUGGESTSFLAGS:depflag_strong?{%{SUGGESTSNAME} %{SUGGESTSFLAGS:depflags} %{SUGGESTSVERSION}\n}|]" \
++      --POPTdesc=$"list capabilities this package recommends"
++
++rpmq  alias --enhances        --qf \
++  "[%|ENHANCESFLAGS:depflag_strong?{}:{%{ENHANCESNAME} %{ENHANCESFLAGS:depflags} %{ENHANCESVERSION}\n}|]" \
++      --POPTdesc=$"list capabilities this package enhances"
++
++rpmq  alias --supplements     --qf \
++  "[%|ENHANCESFLAGS:depflag_strong?{%{ENHANCESNAME} %{ENHANCESFLAGS:depflags} %{ENHANCESVERSION}\n}|]" \
++      --POPTdesc=$"list capabilities this package supplements"
++
+ rpmq  alias --info --qf 'Name        : %-27{NAME}  Relocations: %|PREFIXES?{[%{PREFIXES} ]}:{(not relocatable)}|\n\
+ Version     : %-27{VERSION}       Vendor: %{VENDOR}\n\
+ Release     : %-27{RELEASE}   Build Date: %{BUILDTIME:date}\n\
+@@ -452,6 +484,22 @@
+       --POPTdesc=$"list capabilities required by package(s)"
+ rpmquery      alias -R --requires
++rpmquery      alias --suggests        --qf \
++  "[%|SUGGESTSFLAGS:depflag_strong?{}:{%{SUGGESTSNAME} %{SUGGESTSFLAGS:depflags} %{SUGGESTSVERSION}\n}|]" \
++      --POPTdesc=$"list capabilities this package suggests"
++
++rpmquery      alias --recommends      --qf \
++  "[%|SUGGESTSFLAGS:depflag_strong?{%{SUGGESTSNAME} %{SUGGESTSFLAGS:depflags} %{SUGGESTSVERSION}\n}|]" \
++      --POPTdesc=$"list capabilities this package recommends"
++
++rpmquery      alias --enhances        --qf \
++  "[%|ENHANCESFLAGS:depflag_strong?{}:{%{ENHANCESNAME} %{ENHANCESFLAGS:depflags} %{ENHANCESVERSION}\n}|]" \
++      --POPTdesc=$"list capabilities this package enhances"
++
++rpmquery      alias --supplements     --qf \
++  "[%|ENHANCESFLAGS:depflag_strong?{%{ENHANCESNAME} %{ENHANCESFLAGS:depflags} %{ENHANCESVERSION}\n}|]" \
++      --POPTdesc=$"list capabilities this package supplements"
++
+ rpmquery      alias --info --qf 'Name        : %-27{NAME}  Relocations: %|PREFIXES?{[%{PREFIXES} ]}:{(not relocatable)}|\n\
+ Version     : %-27{VERSION}       Vendor: %{VENDOR}\n\
+ Release     : %-27{RELEASE}   Build Date: %{BUILDTIME:date}\n\
+Index: lib/formats.c
+===================================================================
+--- lib/formats.c.orig 2008-04-01 08:28:22.000000000 +0100
++++ lib/formats.c      2008-08-26 16:58:09.000000000 +0100
+@@ -543,6 +543,38 @@
+     return val;
+ }
++static /*@only@*/ char * depflag_strongFormat(int_32 type, const void * data,
++              char * formatPrefix, int padding, /*@unused@*/ int element)
++      /*@modifies formatPrefix @*/
++      /*@requires maxRead(data) >= 0 @*/
++{
++    char * val;
++    char buf[10];
++    int anint;
++
++    if (type != RPM_INT32_TYPE) {
++      val = xstrdup(_("(not a number)"));
++    } else {
++      anint = *((int_32 *) data);
++      buf[0] = '\0';
++
++/*@-boundswrite@*/
++      if (anint & RPMSENSE_STRONG)
++          strcat(buf, "strong");
++/*@=boundswrite@*/
++
++      val = xmalloc(7 + padding);
++/*@-boundswrite@*/
++      strcat(formatPrefix, "s");
++/*@=boundswrite@*/
++      /*@-formatconst@*/
++      sprintf(val, formatPrefix, buf);
++      /*@=formatconst@*/
++    }
++
++    return val;
++}
++
+ /**
+  * Retrieve mounted file system paths.
+  * @param h           header
+@@ -1171,6 +1203,7 @@
+     { HEADER_EXT_FORMAT, "base64",            { base64Format } },
+     { HEADER_EXT_FORMAT, "pgpsig",            { pgpsigFormat } },
+     { HEADER_EXT_FORMAT, "depflags",          { depflagsFormat } },
++    { HEADER_EXT_FORMAT, "depflag_strong",    { depflag_strongFormat } },
+     { HEADER_EXT_FORMAT, "fflags",            { fflagsFormat } },
+     { HEADER_EXT_FORMAT, "perms",             { permsFormat } },
+     { HEADER_EXT_FORMAT, "permissions",               { permsFormat } },
diff --git a/recipes/rpm/rpm-native_4.4.2.3.bb b/recipes/rpm/rpm-native_4.4.2.3.bb
new file mode 100644 (file)
index 0000000..5ed737e
--- /dev/null
@@ -0,0 +1,7 @@
+require rpm_${PV}.bb
+inherit native
+
+DEPENDS = "beecrypt-native zlib-native file-native popt-native python-native"
+
+export localstatedir = "${layout_localstatedir}"
+export varprefix = "${layout_localstatedir}"
diff --git a/recipes/rpm/rpm_4.4.2.3.bb b/recipes/rpm/rpm_4.4.2.3.bb
new file mode 100644 (file)
index 0000000..6c2dc55
--- /dev/null
@@ -0,0 +1,95 @@
+DESCRIPTION = "The RPM Package Manager."
+HOMEPAGE = "http://rpm.org/"
+LICENSE = "LGPL GPL"
+DEPENDS = "zlib beecrypt file popt python sed-native"
+PR = "r13"
+
+SRC_URI = "http://www.rpm.org/releases/rpm-4.4.x/rpm-4.4.2.3.tar.gz \
+           file://external-tools.patch;patch=1 \
+          file://cross_libpaths.patch;patch=1 \
+          file://weakdeps.patch;patch=1;pnum=0 \
+          file://tagsbackport.patch;patch=1;pnum=0 \
+          file://missingok.patch;patch=1;pnum=0 \
+          file://extcond.patch;patch=1;pnum=0"
+
+inherit autotools gettext distutils-base
+
+S = "${WORKDIR}/rpm-${PV}"
+
+ARM_INSTRUCTION_SET = "arm"
+
+acpaths = "-I ${S}/db/dist/aclocal -I ${S}/db/dist/aclocal_java"
+
+EXTRA_OECONF = "--with-python \
+               --with-python-incdir=${STAGING_INCDIR}/${PYTHON_DIR} \
+               --with-python-libdir=${libdir}/${PYTHON_DIR} \
+               --without-apidocs \
+               --without-selinux \
+               --without-lua \
+               --without-dmalloc \
+               --without-efence"
+
+PACKAGES += "python-rpm"
+FILES_python-rpm = "${libdir}/python*/site-recipes/rpm/_*"
+
+# Handle the db MUTEX settings here, the POSIX library is
+# the default - "POSIX/pthreads/library".
+# Don't ignore the nice SWP instruction on the ARM:
+# These enable the ARM assembler mutex code, this won't
+# work with thumb compilation...
+ARM_MUTEX = "--with-mutex=ARM/gcc-assembly"
+MUTEX = ""
+MUTEX_arm = "${ARM_MUTEX}"
+MUTEX_armeb = "${ARM_MUTEX}"
+EXTRA_OECONF += "${MUTEX}"
+
+export varprefix = "${localstatedir}"
+
+do_configure () {
+       rm ${S}/popt/ -Rf
+       rm ${S}/db/dist/configure.in -f
+       cd ${S}/db/dist/aclocal
+       rm libtool* -f
+       for i in `ls *.ac`; do
+           j=`echo $i | sed 's/.ac/.m4/g'`
+           mv $i $j
+       done
+       cd ${S}/db/dist/aclocal_java
+       for i in `ls *.ac`; do
+           j=`echo $i | sed 's/.ac/.m4/g'`
+           mv $i $j
+       done
+       cd ${S}
+       autotools_do_configure
+       cd ${S}/db/dist
+       . ./RELEASE
+       # Edit version information we couldn't pre-compute.
+       sed -i -e "s/__EDIT_DB_VERSION_MAJOR__/$DB_VERSION_MAJOR/g"  configure
+       sed -i -e "s/__EDIT_DB_VERSION_MINOR__/$DB_VERSION_MINOR/g"  configure
+       sed -i -e "s/__EDIT_DB_VERSION_PATCH__/$DB_VERSION_PATCH/g"  configure
+       sed -i -e "s/__EDIT_DB_VERSION_STRING__/$DB_VERSION_STRING/g"  configure
+       sed -i -e "s/__EDIT_DB_VERSION_UNIQUE_NAME__/$DB_VERSION_UNIQUE_NAME/g"  configure
+       sed -i -e "s/__EDIT_DB_VERSION__/$DB_VERSION/g"  configure
+       cd ${S}/db3
+       ${S}/db3/configure \
+                   --build=${BUILD_SYS} \
+                   --host=${HOST_SYS} \
+                   --target=${TARGET_SYS} \
+                   --prefix=${prefix} \
+                   --exec_prefix=${exec_prefix} \
+                   --bindir=${bindir} \
+                   --sbindir=${sbindir} \
+                   --libexecdir=${libexecdir} \
+                   --datadir=${datadir} \
+                   --sysconfdir=${sysconfdir} \
+                   --sharedstatedir=${sharedstatedir} \
+                   --localstatedir=${localstatedir} \
+                   --libdir=${libdir} \
+                   --includedir=${includedir} \
+                   --oldincludedir=${oldincludedir} \
+                   --infodir=${infodir} \
+                   --mandir=${mandir} \
+                   ${EXTRA_OECONF} \
+                   --with-pic
+
+}
diff --git a/recipes/rpm/rpm_4.4.bb b/recipes/rpm/rpm_4.4.bb
deleted file mode 100644 (file)
index ff69ddc..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-DESCRIPTION = "The RPM Package Manager."
-HOMEPAGE = "http://rpm.org/"
-LICENSE = "LGPL GPL"
-# NOTE: currently rpm doesn't support using an external popt,
-# file, or virtual/db.  FIXME: patch it to support that.
-# DEPENDS = "virtual/db popt file zlib"
-DEPENDS = "zlib"
-PR = "r1"
-
-SRC_URI = "ftp://ftp.jbj.org/pub/rpm-4.4.x/rpm-4.4-1.src.rpm \
-          file://fix_mypath.patch;patch=1 \
-          file://cross_libpaths.patch;patch=1"
-TARBALL = "${WORKDIR}/rpm-4.4.tar.gz"
-
-inherit autotools gettext
-
-acpaths = ""
-# NOTE: currently BROKEN because its internal build of 'file' tries
-# to run the binary it builds.  Either switch to an external build,
-# or depend on our file-native and make it call that.
-BROKEN = "1"
-EXTRA_OECONF = "--without-python \
-               --without-apidocs \
-               --without-selinux \
-               --without-lua \
-               --without-dmalloc \
-               --without-efence"
-
-python unpack_again () {
-       import bb, os
-       os.chdir(bb.data.getVar('WORKDIR', d, 1) or '')
-       if not oe_unpack_file(bb.data.expand('${TARBALL}', d), d):
-               raise bb.build.FuncFailed(bb.data.expand("Unable to unpack ${TARBALL}", d))
-}
-
-python do_unpack () {
-       bb.build.exec_func('base_do_unpack', d)
-       bb.build.exec_func('unpack_again', d)
-}
-
-do_configure () {
-       touch db3/configure.ac
-       autotools_do_configure
-}