Patchwork [2/5,v2] rpm: Upgrade RPM to 5.4.9

login
register
mail settings
Submitter Mark Hatle
Date May 17, 2012, 11:46 p.m.
Message ID <b1344828733f30f121039cf6f40e071efacd6fcc.1337298293.git.mark.hatle@windriver.com>
Download mbox | patch
Permalink /patch/27943/
State New
Headers show

Comments

Mark Hatle - May 17, 2012, 11:46 p.m.
Beside upreving RPM, add necessary integration pathces to libzypp.

Also change the configuration of RPM to support PACKAGECONFIG flags.
RPM is highly configurable, the default configuration is good for
minimal OE-Core use.

Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
---
 meta/recipes-devtools/rpm/rpm/rpm-lua.patch        |   29 +++++
 .../rpm/rpm/rpm-scriptletexechelper.patch          |   33 +++---
 meta/recipes-devtools/rpm/rpm/rpmdeps-oecore.patch |   26 ++---
 .../rpm/{rpm_5.4.8.bb => rpm_5.4.9.bb}             |  124 +++++++++-----------
 .../libzypp/libzypp/libzypp-rpm549.patch           |   28 +++++
 meta/recipes-extended/libzypp/libzypp_git.bb       |    3 +-
 6 files changed, 142 insertions(+), 101 deletions(-)
 create mode 100644 meta/recipes-devtools/rpm/rpm/rpm-lua.patch
 rename meta/recipes-devtools/rpm/{rpm_5.4.8.bb => rpm_5.4.9.bb} (82%)
 create mode 100644 meta/recipes-extended/libzypp/libzypp/libzypp-rpm549.patch
Saul Wold - May 23, 2012, 11:14 p.m.
On 05/17/2012 04:46 PM, Mark Hatle wrote:
> Beside upreving RPM, add necessary integration pathces to libzypp.
>
> Also change the configuration of RPM to support PACKAGECONFIG flags.
> RPM is highly configurable, the default configuration is good for
> minimal OE-Core use.
>
Mark,

I have been having an issue with the do_install seeming to hang for 
rpm-native, I am still digging into this to see if it's a Bitbake issue 
or something else with RPM.

A 'ps' shows the make install running, but not activity in the log file.

Sau!

> Signed-off-by: Mark Hatle<mark.hatle@windriver.com>
> ---
>   meta/recipes-devtools/rpm/rpm/rpm-lua.patch        |   29 +++++
>   .../rpm/rpm/rpm-scriptletexechelper.patch          |   33 +++---
>   meta/recipes-devtools/rpm/rpm/rpmdeps-oecore.patch |   26 ++---
>   .../rpm/{rpm_5.4.8.bb =>  rpm_5.4.9.bb}             |  124 +++++++++-----------
>   .../libzypp/libzypp/libzypp-rpm549.patch           |   28 +++++
>   meta/recipes-extended/libzypp/libzypp_git.bb       |    3 +-
>   6 files changed, 142 insertions(+), 101 deletions(-)
>   create mode 100644 meta/recipes-devtools/rpm/rpm/rpm-lua.patch
>   rename meta/recipes-devtools/rpm/{rpm_5.4.8.bb =>  rpm_5.4.9.bb} (82%)
>   create mode 100644 meta/recipes-extended/libzypp/libzypp/libzypp-rpm549.patch
>
> diff --git a/meta/recipes-devtools/rpm/rpm/rpm-lua.patch b/meta/recipes-devtools/rpm/rpm/rpm-lua.patch
> new file mode 100644
> index 0000000..980e1b1
> --- /dev/null
> +++ b/meta/recipes-devtools/rpm/rpm/rpm-lua.patch
> @@ -0,0 +1,29 @@
> +Add support for cross compiling lua
> +
> +Signed-off-by: Mark Hatle<mark.hatle@windriver.com>
> +
> +diff -ur rpm-5.4.9.orig/configure.ac rpm-5.4.9/configure.ac
> +--- rpm-5.4.9.orig/configure.ac	2012-05-16 12:16:36.589813548 -0500
> ++++ rpm-5.4.9/configure.ac	2012-05-16 12:26:01.070813518 -0500
> +@@ -120,6 +120,9 @@
> +
> + AC_PATH_PROG(AS, as, as)
> +
> ++CC_FOR_BUILD=${CC_FOR_BUILD-\$(CC)}
> ++AC_SUBST(CC_FOR_BUILD)
> ++
> + dnl # GCC specifics
> + AC_PROG_GCC_TRADITIONAL
> + AC_ARG_ENABLE(build-pic,
> +diff -ur rpm-5.4.9.orig/lua/Makefile.am rpm-5.4.9/lua/Makefile.am
> +--- rpm-5.4.9.orig/lua/Makefile.am	2012-04-07 19:15:25.000000000 -0500
> ++++ rpm-5.4.9/lua/Makefile.am	2012-05-16 12:26:19.556856688 -0500
> +@@ -40,7 +40,7 @@
> +
> + # --- bin2c doesn't need anything but a compiler
> + bin2c$(EXEEXT):  bin2c.c
> +-	$(CC) -o $@ $<
> ++	$(CC_FOR_BUILD) -o $@ $<
> +
> + liblua_la_SOURCES =
> + liblua_la_CFLAGS = @WITH_LUA_SUBDIR_DEF@
> diff --git a/meta/recipes-devtools/rpm/rpm/rpm-scriptletexechelper.patch b/meta/recipes-devtools/rpm/rpm/rpm-scriptletexechelper.patch
> index e4db0e4..8a9e712 100644
> --- a/meta/recipes-devtools/rpm/rpm/rpm-scriptletexechelper.patch
> +++ b/meta/recipes-devtools/rpm/rpm/rpm-scriptletexechelper.patch
> @@ -12,10 +12,11 @@ Upstream-Status: Pending
>
>   Signed-off-by: Mark Hatle<mark.hatle@windriver.com>
>
> -diff -ur rpm-5.4.0.orig/lib/psm.c rpm-5.4.0/lib/psm.c
> ---- rpm-5.4.0.orig/lib/psm.c	2010-12-29 07:42:11.000000000 -0600
> -+++ rpm-5.4.0/lib/psm.c	2011-11-08 13:38:48.132791154 -0600
> -@@ -792,6 +792,10 @@
> +Index: rpm-5.4.9/lib/psm.c
> +===================================================================
> +--- rpm-5.4.9.orig/lib/psm.c
> ++++ rpm-5.4.9/lib/psm.c
> +@@ -801,6 +801,10 @@ static rpmRC runScript(rpmpsm psm, Heade
>        int xx;
>        int i;
>
> @@ -26,23 +27,23 @@ diff -ur rpm-5.4.0.orig/lib/psm.c rpm-5.4.0/lib/psm.c
>        if (psm->sstates != NULL&&  ix>= 0&&  ix<  RPMSCRIPT_MAX)
>    	ssp = psm->sstates + ix;
>        if (ssp != NULL)
> -@@ -858,14 +862,29 @@
> +@@ -867,14 +871,29 @@ assert(he->p.str != NULL);
>    		(F_ISSET(psm, UNORDERED) ? "a" : ""));
>
>        if (Phe->p.argv == NULL) {
> --	argv = alloca(5 * sizeof(*argv));
> +-	argv = (const char **) alloca(5 * sizeof(*argv));
>   -	argv[0] = "/bin/sh";
>   -	argc = 1;
> -+	argv = alloca(7 * sizeof(*argv));
> ++	argv = (const char **) alloca(7 * sizeof(*argv));
>   +	argc = 0;
>   +    } else {
> -+	argv = alloca((Phe->c + 6) * sizeof(*argv));
> ++	argv = (const char **) alloca((Phe->c + 6) * sizeof(*argv));
>   +	argc = 0;
>   +    }
>   +
>   +#ifdef RPM_VENDOR_POKY
>   +    if (scriptletWrapper&&  *scriptletWrapper) {
> -+        argv[argc++] = scriptletWrapper;
> ++	argv[argc++] = scriptletWrapper;
>   +	argv[argc] = rpmtsRootDir(ts);
>   +	if (!argv[argc] || !*argv[argc])
>   +	   argv[argc] = "/";
> @@ -51,10 +52,10 @@ diff -ur rpm-5.4.0.orig/lib/psm.c rpm-5.4.0/lib/psm.c
>   +#endif
>   +
>   +    if (Phe->p.argv == NULL) {
> -+        argv[argc++] = "/bin/sh";
> ++	argv[argc++] = "/bin/sh";
>    	ldconfig_done = 0;
>        } else {
> --	argv = alloca((Phe->c + 4) * sizeof(*argv));
> +-	argv = (const char **) alloca((Phe->c + 4) * sizeof(*argv));
>   -	memcpy(argv, Phe->p.argv, Phe->c * sizeof(*argv));
>   -	argc = Phe->c;
>   +	memcpy((argv + argc), Phe->p.argv, Phe->c * sizeof(*argv));
> @@ -62,7 +63,7 @@ diff -ur rpm-5.4.0.orig/lib/psm.c rpm-5.4.0/lib/psm.c
>    	ldconfig_done = (ldconfig_path&&  !strcmp(argv[0], ldconfig_path)
>    		? 1 : 0);
>        }
> -@@ -916,7 +935,12 @@
> +@@ -925,7 +944,12 @@ assert(he->p.str != NULL);
>    	    goto exit;
>
>    	if (rpmIsDebug()&&
> @@ -76,7 +77,7 @@ diff -ur rpm-5.4.0.orig/lib/psm.c rpm-5.4.0/lib/psm.c
>    	{
>    	    static const char set_x[] = "set -x\n";
>    	    nw = Fwrite(set_x, sizeof(set_x[0]), sizeof(set_x)-1, fd);
> -@@ -1051,12 +1075,22 @@
> +@@ -1060,12 +1084,22 @@ assert(he->p.str != NULL);
>
>    	{   const char * rootDir = rpmtsRootDir(ts);
>    	    if (!rpmtsChrootDone(ts)&&  rootDir != NULL&&
> @@ -99,7 +100,7 @@ diff -ur rpm-5.4.0.orig/lib/psm.c rpm-5.4.0/lib/psm.c
>    	    xx = Chdir("/");
>    	    rpmlog(RPMLOG_DEBUG, D_("%s: %s(%s)\texecv(%s) pid %d\n"),
>    			psm->stepName, sln, NVRA,
> -@@ -2961,6 +2995,13 @@
> +@@ -2977,6 +3011,13 @@ assert(psm->te != NULL);
>        case PSM_SCRIPT:	/* Run current package scriptlets. */
>    	/* XXX running %verifyscript/%sanitycheck doesn't have psm->te */
>        {	rpmtxn _parent = (psm&&  psm->te ? psm->te->txn : NULL);
> @@ -113,7 +114,7 @@ diff -ur rpm-5.4.0.orig/lib/psm.c rpm-5.4.0/lib/psm.c
>    	xx = rpmtxnBegin(rpmtsGetRdb(ts), _parent, NULL);
>    	rc = runInstScript(psm);
>    	if (rc)
> -@@ -2968,11 +3009,24 @@
> +@@ -2984,11 +3025,24 @@ assert(psm->te != NULL);
>    	else
>    	     xx = rpmtxnCommit(rpmtsGetRdb(ts)->db_txn);
>    	rpmtsGetRdb(ts)->db_txn = NULL;
> @@ -138,7 +139,7 @@ diff -ur rpm-5.4.0.orig/lib/psm.c rpm-5.4.0/lib/psm.c
>    	break;
>        case PSM_IMMED_TRIGGERS:
>    	/* Run triggers in this package other package(s) set off. */
> -@@ -2982,7 +3036,18 @@
> +@@ -2998,7 +3052,18 @@ assert(psm->te != NULL);
>    	    F_SET(psm, GOTTRIGGERS);
>    	}
>    	if (psm->triggers != NULL)
> diff --git a/meta/recipes-devtools/rpm/rpm/rpmdeps-oecore.patch b/meta/recipes-devtools/rpm/rpm/rpmdeps-oecore.patch
> index 1667901..f29866b 100644
> --- a/meta/recipes-devtools/rpm/rpm/rpmdeps-oecore.patch
> +++ b/meta/recipes-devtools/rpm/rpm/rpmdeps-oecore.patch
> @@ -16,20 +16,20 @@ RP 2012/2/7
>    2 files changed, 152 insertions(+), 1 deletions(-)
>    create mode 100644 tools/rpmdeps-oecore.c
>
> -diff --git a/tools/Makefile.am b/tools/Makefile.am
> -index f520843..2eba9bf 100644
> ---- a/tools/Makefile.am
> -+++ b/tools/Makefile.am
> +Index: rpm-5.4.9/tools/Makefile.am
> +===================================================================
> +--- rpm-5.4.9.orig/tools/Makefile.am
> ++++ rpm-5.4.9/tools/Makefile.am
>   @@ -58,7 +58,7 @@ pkgbin_PROGRAMS =	\
>    	@WITH_AUGEAS_AUGTOOL@ chroot cp @WITH_CUDF_CUDFTOOL@ find mtree \
>    	@WITH_SEMANAGE_SEMODULE@ wget \
>    	rpmcache rpmdigest rpmrepo rpmspecdump \
>   -	rpmcmp rpmdeps sqlite3 @WITH_KEYUTILS_RPMKEY@ @WITH_LIBELF_DEBUGEDIT@
>   +	rpmcmp rpmdeps rpmdeps-oecore sqlite3 @WITH_KEYUTILS_RPMKEY@ @WITH_LIBELF_DEBUGEDIT@
> - dist_man_MANS =		rpmgrep.1
> -
> - augtool_SOURCES =	augtool.c
> -@@ -155,6 +155,10 @@ rpmdeps_SOURCES =	rpmdeps.c
> + if WITH_DB
> + pkgbin_PROGRAMS +=	dbconvert
> + endif
> +@@ -168,6 +168,10 @@ rpmdeps_SOURCES =	rpmdeps.c
>    rpmdeps_LDFLAGS =	@LDFLAGS_STATIC@ $(LDFLAGS)
>    rpmdeps_LDADD =		$(RPM_LDADD_COMMON)
>
> @@ -40,11 +40,10 @@ index f520843..2eba9bf 100644
>    rpmdigest_SOURCES =	rpmdigest.c
>    rpmdigest_LDFLAGS =	@LDFLAGS_STATIC@ $(LDFLAGS)
>    rpmdigest_LDADD =	$(RPMIO_LDADD_COMMON)
> -diff --git a/tools/rpmdeps-oecore.c b/tools/rpmdeps-oecore.c
> -new file mode 100644
> -index 0000000..e646da9
> +Index: rpm-5.4.9/tools/rpmdeps-oecore.c
> +===================================================================
>   --- /dev/null
> -+++ b/tools/rpmdeps-oecore.c
> ++++ rpm-5.4.9/tools/rpmdeps-oecore.c
>   @@ -0,0 +1,147 @@
>   +#include "system.h"
>   +const char *__progname;
> @@ -193,6 +192,3 @@ index 0000000..e646da9
>   +    optCon = rpmcliFini(optCon);
>   +    return ec;
>   +}
> ---
> -1.7.4.1
> -
> diff --git a/meta/recipes-devtools/rpm/rpm_5.4.8.bb b/meta/recipes-devtools/rpm/rpm_5.4.9.bb
> similarity index 82%
> rename from meta/recipes-devtools/rpm/rpm_5.4.8.bb
> rename to meta/recipes-devtools/rpm/rpm_5.4.9.bb
> index a7458b6..3c22f22 100644
> --- a/meta/recipes-devtools/rpm/rpm_5.4.8.bb
> +++ b/meta/recipes-devtools/rpm/rpm_5.4.9.bb
> @@ -42,14 +42,12 @@ HOMEPAGE = "http://rpm5.org/"
>   LICENSE = "LGPLv2.1"
>   LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1"
>
> -DEPENDS = "beecrypt bzip2 zlib db openssl elfutils expat libpcre attr acl popt ${extrarpmdeps}"
> -extrarpmdeps = "python perl file"
> -extrarpmdeps_virtclass-native = "python-native file-native"
> -PR = "r37"
> +DEPENDS = "libpcre attr acl popt file"
> +PR = "r38"
>
>   # rpm2cpio is a shell script, which is part of the rpm src.rpm.  It is needed
>   # in order to extract the distribution SRPM into a format we can extract...
> -SRC_URI = "http://www.rpm5.org/files/rpm/rpm-5.4/rpm-5.4.8-0.20120401.src.rpm;extract=rpm-5.4.8.tar.gz \
> +SRC_URI = "http://www.rpm5.org/files/rpm/rpm-5.4/rpm-5.4.9-0.20120508.src.rpm;extract=rpm-5.4.9.tar.gz \
>   	   file://rpm-log-auto-rm.patch \
>   	   file://rpm-db-reduce.patch \
>   	   file://perfile_rpmdeps.sh \
> @@ -68,10 +66,11 @@ SRC_URI = "http://www.rpm5.org/files/rpm/rpm-5.4/rpm-5.4.8-0.20120401.src.rpm;ex
>   	   file://rpmdeps-oecore.patch \
>   	   file://rpm-resolvedep.patch \
>   	   file://rpm-no-perl-urpm.patch \
> +	   file://rpm-lua.patch \
>   	  "
>
> -SRC_URI[md5sum] = "424b60bf2e0a624a218440d943861644"
> -SRC_URI[sha256sum] = "56eb5033d4de98c217475fb34d466d551f8912959389e7854a806e2bd9e13380"
> +SRC_URI[md5sum] = "60d56ace884340c1b3fcac6a1d58e768"
> +SRC_URI[sha256sum] = "bac7cc5bd9d0e8262fdc0099349924608da8f680f5cb243751f696552239dde8"
>
>   inherit autotools gettext
>
> @@ -81,63 +80,74 @@ acpaths = "-I ${S}/db/dist/aclocal -I ${S}/db/dist/aclocal_java"
>   rpm_macros = "%{_usrlibrpm}/macros:%{_usrlibrpm}/poky/macros:%{_usrlibrpm}/poky/%{_target}/macros:%{_etcrpm}/macros.*:%{_etcrpm}/macros:%{_etcrpm}/%{_target}/macros:~/.oerpmmacros"
>   rpm_macros_virtclass-native = "%{_usrlibrpm}/macros:%{_usrlibrpm}/poky/macros:%{_usrlibrpm}/poky/%{_target}/macros:~/.oerpmmacros"
>
> -# Configure values taken from rpm.spec
> -WITH_BZIP2 = "--with-bzip2"
> +# sqlite lua tcl augeas nss gcrypt neon xz xar keyutils perl selinux
>
> -WITH_XZ = "--with-xz=none"
> +# Note: perl and sqlite w/o db specified does not currently work.
> +#       tcl, augeas, nss, gcrypt, xar and keyutils support is untested.
> +PACKAGECONFIG_virtclass-native ??= "db bzip2 zlib beecrypt openssl libelf python"
> +PACKAGECONFIG ??= "db bzip2 zlib beecrypt openssl libelf python"
>
> -WITH_Z = "--with-zlib $WITH_BZIP2 $WITH_XZ"
> +PACKAGECONFIG[bzip2] = "--with-bzip2,--without-bzip2,bzip2,"
> +PACKAGECONFIG[xz] = "--with-xz,--without-xz,xz,"
> +PACKAGECONFIG[zlib] = "--with-zlib,--without-zlib,zlib,"
> +PACKAGECONFIG[xar] = "--with-xar,--without-xar,xar,"
>
> -WITH_PYTHON = "	--with-python=${PYTHON_BASEVERSION} \
> +WITH_PYTHON = " --with-python=${PYTHON_BASEVERSION} \
>   		--with-python-inc-dir=${STAGING_INCDIR}/python${PYTHON_BASEVERSION} \
>   		--with-python-lib-dir=${libdir}/python${PYTHON_BASEVERSION} \
> -		--without-pythonembed \
> -	      "
> +		--without-pythonembed"
> +PACKAGECONFIG[python] = "${WITH_PYTHON},--without-python,python,"
>
>   # Perl modules are not built, but they could be enabled fairly easily
>   # the perl module creation and installation would need to be patched.
>   # (currently has host perl contamination issues)
> -#WITH_PERL = "	--with-perl --without-perlembed"
> -WITH_PERL = "	--without-perl --without-perl-urpm"
> +WITH_PERL = "--with-perl --without-perlembed --without-perl-urpm"
> +WITHOUT_PERL = "--without-perl --without-perl-urpm"
> +PACKAGECONFIG[perl] = "${WITH_PERL},${WITHOUT_PERL},perl,"
>
> -WITH_PERL_virtclass-native = " --without-perl --without-perl-urpm"
> +# The --with-dbsql will only tell RPM to check for support, db
> +# may or may not be built w/ the dbsql support.
> +WITH_DB = "--with-db --with-dbsql --without-db-tools-integrated"
> +PACKAGECONFIG[db] = "${WITH_DB},--without-db,db,"
>
> -WITH_DB = "--with-db --with-dbsql --without-db-tools-integrated --without-sqlite"
> +PACKAGECONFIG[sqlite] = "--with-sqlite,--without-sqlite,sqlite3,"
>
> -WITH_CRYPTO = "--with-beecrypt --with-openssl --without-nss --without-gcrypt"
> +PACKAGECONFIG[beecrypt] = "--with-beecrypt,--without-beecrypt,beecrypt,"
> +PACKAGECONFIG[openssl] = "--with-openssl,--without-openssl,openssl,"
> +PACKAGECONFIG[nss] = "--with-nss,--without-nss,nss,"
> +PACKAGECONFIG[gcrypt] = "--with-gcrypt,--without-gcrypt,gcrypt,"
> +PACKAGECONFIG[keyutils] = "--with-keyutils,--without-keyutils,keyutils,"
> +PACKAGECONFIG[libelf] = "--with-libelf,--without-libelf,elfutils,"
>
> -WITH_KEYUTILS = "--without-keyutils"
> -WITH_LIBELF = "--with-libelf"
> -WITH_SELINUX = "--without-selinux --without-sepol --without-semanage"
> -#WITH_NEON = "--with-neon=internal --without-libproxy --with-expat --without-gssapi"
> -WITH_NEON = "--without-neon --without-libproxy --without-expat --without-gssapi"
> +WITH_SELINUX = "--with-selinux --with-sepol --with-semanage"
> +WITHOUT_SELINUX = "--without-selinux --without-sepol --without-semanage"
> +PACKAGECONFIG[selinux] = "${WITH_SELINUX},${WITHOUT_SELINUX},selinux,"
>
> -EXTRA_OECONF = "--verbose \
> +WITH_NEON = "--with-neon --with-libproxy --with-expat --without-gssapi"
> +WITHOUT_NEON = "--without-neon --without-libproxy --without-expat --without-gssapi"
> +PACKAGECONFIG[neon] = "${WITH_NEON},${WITHOUT_NEON},neon,"
> +
> +PACKAGECONFIG[lua] = "--with-lua,--without-lua,"
> +PACKAGECONFIG[tcl] = "--with-tcl,--without-tcl,tcl,"
> +
> +PACAKGECONFIG[augeas] = "--with-augeas,--without-augeas,augeas,"
> +
> +EXTRA_OECONF += "--verbose \
>   		--sysconfdir=/etc \
> -		${WITH_DB} \
> -		${WITH_Z} \
>   		--with-file \
>   		--with-path-magic=%{_usrlibrpm}/../../share/misc/magic.mgc \
> -		--without-lua \
> -		--without-tcl \
>   		--with-syck=internal \
>   		--without-readline \
> -		--without-augeas \
> -		${WITH_CRYPTO} \
>   		--without-libtasn1 \
>   		--without-pakchois \
>   		--without-gnutls \
> -		${WITH_NEON} \
>   		--with-pcre \
>   		--enable-utf8 \
>   		--without-uuid \
>   		--with-attr \
>   		--with-acl \
> -		--without-xar \
>   		--with-popt=external \
> -		${WITH_KEYUTILS} \
>   		--with-pthreads \
> -		${WITH_LIBELF} \
>   		--without-cudf \
>   		--without-ficl \
>   		--without-aterm \
> @@ -146,14 +156,11 @@ EXTRA_OECONF = "--verbose \
>   		--without-rc \
>   		--without-js \
>   		--without-gpsee \
> -		${WITH_PYTHON} \
> -		${WITH_PERL} \
>   		--without-ruby \
>   		--without-squirrel \
>   		--with-build-extlibdep \
>   		--with-build-maxextlibdep \
>   		--without-valgrind \
> -                --without-xz \
>   		--disable-openmp \
>   		--enable-build-pic \
>   		--enable-build-versionscript \
> @@ -165,7 +172,7 @@ EXTRA_OECONF = "--verbose \
>   		--with-bugreport=http://bugzilla.yoctoproject.org \
>   		--program-prefix="
>
> -CFLAGS_append = " -DRPM_VENDOR_WINDRIVER -DRPM_VENDOR_POKY"
> +CFLAGS_append = " -DRPM_VENDOR_WINDRIVER -DRPM_VENDOR_POKY -DRPM_VENDOR_OE"
>
>   PACKAGES = "${PN}-dbg ${PN} ${PN}-doc ${PN}-libs ${PN}-dev ${PN}-staticdev ${PN}-common ${PN}-build python-rpm-dbg python-rpm-staticdev python-rpm perl-module-rpm perl-module-rpm-dev ${PN}-locale"
>
> @@ -173,7 +180,7 @@ SOLIBS = "5.4.so"
>
>   # Based on %files section in the rpm.spec
>
> -FILES_${PN} = "${bindir}/rpm \
> +FILES_${PN} =  "${bindir}/rpm \
>   		${bindir}/rpmconstant \
>   		${libdir}/rpm/rpm.* \
>   		${libdir}/rpm/tgpg \
> @@ -191,15 +198,10 @@ FILES_${PN} = "${bindir}/rpm \
>   		${libdir}/rpm/bin/rpmspecdump \
>   		${libdir}/rpm/bin/wget \
>   		/var/lib/rpm \
> +		/var/cache/rpm \
> +		/var/volatile/cache/rpm \
>   		"
>
> -#		${libdir}/rpm/magic
> -#		${libdir}/rpm/magic.mgc
> -#		${libdir}/rpm/magic.mime
> -#		${libdir}/rpm/magic.mime.mgc
> -#		${libdir}/rpm/bin/db_*
> -#		${libdir}/rpm/bin/grep
> -
>   FILES_${PN}-dbg += "${libdir}/rpm/.debug \
>   		${libdir}/rpm/bin/.debug \
>   		"
> @@ -218,12 +220,6 @@ FILES_${PN}-libs = "${libdir}/librpm-*.so \
>   		${libdir}/librpmbuild-*.so \
>   		"
>
> -###%{_rpmhome}/lib/libxar.so.*
> -###%{_rpmhome}/lib/libjs.so.*
> -###%{_rpmhome}/lib/librpmjsm.so.*
> -###%{_rpmhome}/lib/rpmjsm.so
> -
> -
>   FILES_${PN}-build = "${prefix}/src/rpm \
>   		${bindir}/rpmbuild \
>   		${libdir}/rpm/brp-* \
> @@ -269,8 +265,6 @@ FILES_${PN}-build = "${prefix}/src/rpm \
>   		${libdir}/rpm/bin/rpmlua \
>   		${libdir}/rpm/bin/rpmluac \
>   		${libdir}/rpm/bin/sqlite3 \
> -		${libdir}/rpm/lib/liblua.a \
> -		${libdir}/rpm/lib/liblua.la \
>   		${libdir}/rpm/macros.d/cmake \
>   		${libdir}/rpm/macros.d/java \
>   		${libdir}/rpm/macros.d/libtool \
> @@ -291,9 +285,6 @@ FILES_${PN}-build = "${prefix}/src/rpm \
>   		"
>   RDEPENDS_${PN}-build = "file"
>
> -#%rpmattr       %{_rpmhome}/gem_helper.rb
> -#%rpmattr       %{_rpmhome}/symclash.*
> -
>   FILES_python-rpm-dbg = "${libdir}/python*/rpm/.debug/_*"
>   FILES_python-rpm-staticdev = "${libdir}/python*/rpm/*.a"
>   FILES_python-rpm = "${libdir}/python*/rpm"
> @@ -317,6 +308,7 @@ FILES_${PN}-dev = "${includedir}/rpm \
>   		${libdir}/librpmmisc.so \
>   		${libdir}/librpmbuild.la \
>   		${libdir}/librpmbuild.so \
> +		${libdir}/rpm/lib/liblua.la \
>   		${libdir}/pkgconfig/rpm.pc \
>   		"
>
> @@ -327,25 +319,17 @@ FILES_${PN}-staticdev = " \
>   		${libdir}/librpmio.a \
>   		${libdir}/librpmmisc.a \
>   		${libdir}/librpmbuild.a \
> +		${libdir}/rpm/lib/liblua.a \
>   		"
>
> -###%{_rpmhome}/lib/libxar.a
> -###%{_rpmhome}/lib/libxar.la
> -###%{_rpmhome}/lib/libxar.so
> -###%{_rpmhome}/lib/libjs.a
> -###%{_rpmhome}/lib/libjs.la
> -###%{_rpmhome}/lib/libjs.so
> -###%{_rpmhome}/lib/librpmjsm.a
> -###%{_rpmhome}/lib/librpmjsm.la
> -###%{_rpmhome}/lib/librpmjsm.so
> -
>   do_configure() {
>   	# Disable tests!
> -	echo "all:">  tests/Makefile.am
> +	#echo "all:">  tests/Makefile.am
>
>   	./autogen.sh
>
>   	export varprefix=${localstatedir}
> +	export CC_FOR_BUILD="${BUILD_CC}"
>   	oe_runconf
>   }
>
> @@ -422,6 +406,8 @@ do_install_append() {
>   	rm -f ${D}/${libdir}/rpm/bin/dbconvert
>   	rm -f ${D}/${libdir}/rpm/bin/pom2spec
>
> +	rm -rf ${D}/var/lib/wdj ${D}/var/cache/wdj
> +	rm -f ${D}/usr/lib/rpm/bin/api-sanity-checker.pl
>   }
>
>   do_install_append_virtclass-native() {
> diff --git a/meta/recipes-extended/libzypp/libzypp/libzypp-rpm549.patch b/meta/recipes-extended/libzypp/libzypp/libzypp-rpm549.patch
> new file mode 100644
> index 0000000..8268a2d
> --- /dev/null
> +++ b/meta/recipes-extended/libzypp/libzypp/libzypp-rpm549.patch
> @@ -0,0 +1,28 @@
> +commit 6c47ad415246cc3a3edac2e1637106d330574c85
> +Author: Mark Hatle<mark.hatle@windriver.com>
> +Date:   Fri May 11 19:05:09 2012 -0500
> +
> +    RpmHeader.cc: RPM 5.4.9 integration
> +
> +    _RPMVSF_xxx - NODIGEST, NOSIGNATURES, NOHEADER, and NOPAYLOAD
> +    are now obsolete and no longer supported.
> +
> +    Signed-off-by: Mark Hatle<mark.hatle@windriver.com>
> +
> +diff --git a/zypp/target/rpm/RpmHeader.cc b/zypp/target/rpm/RpmHeader.cc
> +index 1224ecd..c96dae6 100644
> +--- a/zypp/target/rpm/RpmHeader.cc
> ++++ b/zypp/target/rpm/RpmHeader.cc
> +@@ -230,10 +230,12 @@ RpmHeader::constPtr RpmHeader::readPackage( const Pathname&  path_r,
> +   librpmDb::globalInit();
> +   rpmts ts = ::rpmtsCreate();
> +   unsigned vsflag = RPMVSF_DEFAULT;
> ++#if !defined(_RPM_5)
> +   if ( verification_r&  NODIGEST )
> +     vsflag |= _RPMVSF_NODIGESTS;
> +   if ( verification_r&  NOSIGNATURE )
> +     vsflag |= _RPMVSF_NOSIGNATURES;
> ++#endif
> +   ::rpmtsSetVSFlags( ts, rpmVSFlags(vsflag) );
> +
> +   Header nh = 0;
> diff --git a/meta/recipes-extended/libzypp/libzypp_git.bb b/meta/recipes-extended/libzypp/libzypp_git.bb
> index 3c3a9f0..c5761d5 100644
> --- a/meta/recipes-extended/libzypp/libzypp_git.bb
> +++ b/meta/recipes-extended/libzypp/libzypp_git.bb
> @@ -11,7 +11,7 @@ DEPENDS  = "rpm boost curl libxml2 zlib sat-solver expat openssl udev libproxy"
>   S = "${WORKDIR}/git"
>   SRCREV = "15b6c52260bbc52b3d8e585e271b67e10cc7c433"
>   PV = "0.0-git${SRCPV}"
> -PR = "r20"
> +PR = "r21"
>
>   SRC_URI = "git://github.com/openSUSE/libzypp.git;protocol=git \
>              file://no-doc.patch \
> @@ -23,6 +23,7 @@ SRC_URI = "git://github.com/openSUSE/libzypp.git;protocol=git \
>   	   file://fix_for_compile_wth_gcc-4.6.0.patch \
>   	   file://hardcode-lib-fix.patch \
>   	   file://close.patch \
> +	   file://libzypp-rpm549.patch \
>             "
>
>   SRC_URI_append_mips = " file://mips-workaround-gcc-tribool-error.patch"
Mark Hatle - May 24, 2012, 7:01 p.m.
On 5/23/12 6:14 PM, Saul Wold wrote:
> On 05/17/2012 04:46 PM, Mark Hatle wrote:
>> Beside upreving RPM, add necessary integration pathces to libzypp.
>>
>> Also change the configuration of RPM to support PACKAGECONFIG flags.
>> RPM is highly configurable, the default configuration is good for
>> minimal OE-Core use.
>>
> Mark,
>
> I have been having an issue with the do_install seeming to hang for
> rpm-native, I am still digging into this to see if it's a Bitbake issue
> or something else with RPM.
>
> A 'ps' shows the make install running, but not activity in the log file.

I made one last minute change, which didn't fail here.. but I wonder if it's the 
problem.  Can you go into the rpm recipe, do_configure, and remove the comment...

do_configure() {
         # Disable tests!
         #echo "all:" > tests/Makefile.am

         ./autogen.sh

...on the echo "all:" line?  I'm wondering if the tests are activating and it's 
attempting to do remote network access to test various things.

--Mark

> Sau!
>
>> Signed-off-by: Mark Hatle<mark.hatle@windriver.com>
>> ---
>>    meta/recipes-devtools/rpm/rpm/rpm-lua.patch        |   29 +++++
>>    .../rpm/rpm/rpm-scriptletexechelper.patch          |   33 +++---
>>    meta/recipes-devtools/rpm/rpm/rpmdeps-oecore.patch |   26 ++---
>>    .../rpm/{rpm_5.4.8.bb =>   rpm_5.4.9.bb}             |  124 +++++++++-----------
>>    .../libzypp/libzypp/libzypp-rpm549.patch           |   28 +++++
>>    meta/recipes-extended/libzypp/libzypp_git.bb       |    3 +-
>>    6 files changed, 142 insertions(+), 101 deletions(-)
>>    create mode 100644 meta/recipes-devtools/rpm/rpm/rpm-lua.patch
>>    rename meta/recipes-devtools/rpm/{rpm_5.4.8.bb =>   rpm_5.4.9.bb} (82%)
>>    create mode 100644 meta/recipes-extended/libzypp/libzypp/libzypp-rpm549.patch
>>
>> diff --git a/meta/recipes-devtools/rpm/rpm/rpm-lua.patch b/meta/recipes-devtools/rpm/rpm/rpm-lua.patch
>> new file mode 100644
>> index 0000000..980e1b1
>> --- /dev/null
>> +++ b/meta/recipes-devtools/rpm/rpm/rpm-lua.patch
>> @@ -0,0 +1,29 @@
>> +Add support for cross compiling lua
>> +
>> +Signed-off-by: Mark Hatle<mark.hatle@windriver.com>
>> +
>> +diff -ur rpm-5.4.9.orig/configure.ac rpm-5.4.9/configure.ac
>> +--- rpm-5.4.9.orig/configure.ac	2012-05-16 12:16:36.589813548 -0500
>> ++++ rpm-5.4.9/configure.ac	2012-05-16 12:26:01.070813518 -0500
>> +@@ -120,6 +120,9 @@
>> +
>> + AC_PATH_PROG(AS, as, as)
>> +
>> ++CC_FOR_BUILD=${CC_FOR_BUILD-\$(CC)}
>> ++AC_SUBST(CC_FOR_BUILD)
>> ++
>> + dnl # GCC specifics
>> + AC_PROG_GCC_TRADITIONAL
>> + AC_ARG_ENABLE(build-pic,
>> +diff -ur rpm-5.4.9.orig/lua/Makefile.am rpm-5.4.9/lua/Makefile.am
>> +--- rpm-5.4.9.orig/lua/Makefile.am	2012-04-07 19:15:25.000000000 -0500
>> ++++ rpm-5.4.9/lua/Makefile.am	2012-05-16 12:26:19.556856688 -0500
>> +@@ -40,7 +40,7 @@
>> +
>> + # --- bin2c doesn't need anything but a compiler
>> + bin2c$(EXEEXT):  bin2c.c
>> +-	$(CC) -o $@ $<
>> ++	$(CC_FOR_BUILD) -o $@ $<
>> +
>> + liblua_la_SOURCES =
>> + liblua_la_CFLAGS = @WITH_LUA_SUBDIR_DEF@
>> diff --git a/meta/recipes-devtools/rpm/rpm/rpm-scriptletexechelper.patch b/meta/recipes-devtools/rpm/rpm/rpm-scriptletexechelper.patch
>> index e4db0e4..8a9e712 100644
>> --- a/meta/recipes-devtools/rpm/rpm/rpm-scriptletexechelper.patch
>> +++ b/meta/recipes-devtools/rpm/rpm/rpm-scriptletexechelper.patch
>> @@ -12,10 +12,11 @@ Upstream-Status: Pending
>>
>>    Signed-off-by: Mark Hatle<mark.hatle@windriver.com>
>>
>> -diff -ur rpm-5.4.0.orig/lib/psm.c rpm-5.4.0/lib/psm.c
>> ---- rpm-5.4.0.orig/lib/psm.c	2010-12-29 07:42:11.000000000 -0600
>> -+++ rpm-5.4.0/lib/psm.c	2011-11-08 13:38:48.132791154 -0600
>> -@@ -792,6 +792,10 @@
>> +Index: rpm-5.4.9/lib/psm.c
>> +===================================================================
>> +--- rpm-5.4.9.orig/lib/psm.c
>> ++++ rpm-5.4.9/lib/psm.c
>> +@@ -801,6 +801,10 @@ static rpmRC runScript(rpmpsm psm, Heade
>>         int xx;
>>         int i;
>>
>> @@ -26,23 +27,23 @@ diff -ur rpm-5.4.0.orig/lib/psm.c rpm-5.4.0/lib/psm.c
>>         if (psm->sstates != NULL&&   ix>= 0&&   ix<   RPMSCRIPT_MAX)
>>     	ssp = psm->sstates + ix;
>>         if (ssp != NULL)
>> -@@ -858,14 +862,29 @@
>> +@@ -867,14 +871,29 @@ assert(he->p.str != NULL);
>>     		(F_ISSET(psm, UNORDERED) ? "a" : ""));
>>
>>         if (Phe->p.argv == NULL) {
>> --	argv = alloca(5 * sizeof(*argv));
>> +-	argv = (const char **) alloca(5 * sizeof(*argv));
>>    -	argv[0] = "/bin/sh";
>>    -	argc = 1;
>> -+	argv = alloca(7 * sizeof(*argv));
>> ++	argv = (const char **) alloca(7 * sizeof(*argv));
>>    +	argc = 0;
>>    +    } else {
>> -+	argv = alloca((Phe->c + 6) * sizeof(*argv));
>> ++	argv = (const char **) alloca((Phe->c + 6) * sizeof(*argv));
>>    +	argc = 0;
>>    +    }
>>    +
>>    +#ifdef RPM_VENDOR_POKY
>>    +    if (scriptletWrapper&&   *scriptletWrapper) {
>> -+        argv[argc++] = scriptletWrapper;
>> ++	argv[argc++] = scriptletWrapper;
>>    +	argv[argc] = rpmtsRootDir(ts);
>>    +	if (!argv[argc] || !*argv[argc])
>>    +	   argv[argc] = "/";
>> @@ -51,10 +52,10 @@ diff -ur rpm-5.4.0.orig/lib/psm.c rpm-5.4.0/lib/psm.c
>>    +#endif
>>    +
>>    +    if (Phe->p.argv == NULL) {
>> -+        argv[argc++] = "/bin/sh";
>> ++	argv[argc++] = "/bin/sh";
>>     	ldconfig_done = 0;
>>         } else {
>> --	argv = alloca((Phe->c + 4) * sizeof(*argv));
>> +-	argv = (const char **) alloca((Phe->c + 4) * sizeof(*argv));
>>    -	memcpy(argv, Phe->p.argv, Phe->c * sizeof(*argv));
>>    -	argc = Phe->c;
>>    +	memcpy((argv + argc), Phe->p.argv, Phe->c * sizeof(*argv));
>> @@ -62,7 +63,7 @@ diff -ur rpm-5.4.0.orig/lib/psm.c rpm-5.4.0/lib/psm.c
>>     	ldconfig_done = (ldconfig_path&&   !strcmp(argv[0], ldconfig_path)
>>     		? 1 : 0);
>>         }
>> -@@ -916,7 +935,12 @@
>> +@@ -925,7 +944,12 @@ assert(he->p.str != NULL);
>>     	    goto exit;
>>
>>     	if (rpmIsDebug()&&
>> @@ -76,7 +77,7 @@ diff -ur rpm-5.4.0.orig/lib/psm.c rpm-5.4.0/lib/psm.c
>>     	{
>>     	    static const char set_x[] = "set -x\n";
>>     	    nw = Fwrite(set_x, sizeof(set_x[0]), sizeof(set_x)-1, fd);
>> -@@ -1051,12 +1075,22 @@
>> +@@ -1060,12 +1084,22 @@ assert(he->p.str != NULL);
>>
>>     	{   const char * rootDir = rpmtsRootDir(ts);
>>     	    if (!rpmtsChrootDone(ts)&&   rootDir != NULL&&
>> @@ -99,7 +100,7 @@ diff -ur rpm-5.4.0.orig/lib/psm.c rpm-5.4.0/lib/psm.c
>>     	    xx = Chdir("/");
>>     	    rpmlog(RPMLOG_DEBUG, D_("%s: %s(%s)\texecv(%s) pid %d\n"),
>>     			psm->stepName, sln, NVRA,
>> -@@ -2961,6 +2995,13 @@
>> +@@ -2977,6 +3011,13 @@ assert(psm->te != NULL);
>>         case PSM_SCRIPT:	/* Run current package scriptlets. */
>>     	/* XXX running %verifyscript/%sanitycheck doesn't have psm->te */
>>         {	rpmtxn _parent = (psm&&   psm->te ? psm->te->txn : NULL);
>> @@ -113,7 +114,7 @@ diff -ur rpm-5.4.0.orig/lib/psm.c rpm-5.4.0/lib/psm.c
>>     	xx = rpmtxnBegin(rpmtsGetRdb(ts), _parent, NULL);
>>     	rc = runInstScript(psm);
>>     	if (rc)
>> -@@ -2968,11 +3009,24 @@
>> +@@ -2984,11 +3025,24 @@ assert(psm->te != NULL);
>>     	else
>>     	     xx = rpmtxnCommit(rpmtsGetRdb(ts)->db_txn);
>>     	rpmtsGetRdb(ts)->db_txn = NULL;
>> @@ -138,7 +139,7 @@ diff -ur rpm-5.4.0.orig/lib/psm.c rpm-5.4.0/lib/psm.c
>>     	break;
>>         case PSM_IMMED_TRIGGERS:
>>     	/* Run triggers in this package other package(s) set off. */
>> -@@ -2982,7 +3036,18 @@
>> +@@ -2998,7 +3052,18 @@ assert(psm->te != NULL);
>>     	    F_SET(psm, GOTTRIGGERS);
>>     	}
>>     	if (psm->triggers != NULL)
>> diff --git a/meta/recipes-devtools/rpm/rpm/rpmdeps-oecore.patch b/meta/recipes-devtools/rpm/rpm/rpmdeps-oecore.patch
>> index 1667901..f29866b 100644
>> --- a/meta/recipes-devtools/rpm/rpm/rpmdeps-oecore.patch
>> +++ b/meta/recipes-devtools/rpm/rpm/rpmdeps-oecore.patch
>> @@ -16,20 +16,20 @@ RP 2012/2/7
>>     2 files changed, 152 insertions(+), 1 deletions(-)
>>     create mode 100644 tools/rpmdeps-oecore.c
>>
>> -diff --git a/tools/Makefile.am b/tools/Makefile.am
>> -index f520843..2eba9bf 100644
>> ---- a/tools/Makefile.am
>> -+++ b/tools/Makefile.am
>> +Index: rpm-5.4.9/tools/Makefile.am
>> +===================================================================
>> +--- rpm-5.4.9.orig/tools/Makefile.am
>> ++++ rpm-5.4.9/tools/Makefile.am
>>    @@ -58,7 +58,7 @@ pkgbin_PROGRAMS =	\
>>     	@WITH_AUGEAS_AUGTOOL@ chroot cp @WITH_CUDF_CUDFTOOL@ find mtree \
>>     	@WITH_SEMANAGE_SEMODULE@ wget \
>>     	rpmcache rpmdigest rpmrepo rpmspecdump \
>>    -	rpmcmp rpmdeps sqlite3 @WITH_KEYUTILS_RPMKEY@ @WITH_LIBELF_DEBUGEDIT@
>>    +	rpmcmp rpmdeps rpmdeps-oecore sqlite3 @WITH_KEYUTILS_RPMKEY@ @WITH_LIBELF_DEBUGEDIT@
>> - dist_man_MANS =		rpmgrep.1
>> -
>> - augtool_SOURCES =	augtool.c
>> -@@ -155,6 +155,10 @@ rpmdeps_SOURCES =	rpmdeps.c
>> + if WITH_DB
>> + pkgbin_PROGRAMS +=	dbconvert
>> + endif
>> +@@ -168,6 +168,10 @@ rpmdeps_SOURCES =	rpmdeps.c
>>     rpmdeps_LDFLAGS =	@LDFLAGS_STATIC@ $(LDFLAGS)
>>     rpmdeps_LDADD =		$(RPM_LDADD_COMMON)
>>
>> @@ -40,11 +40,10 @@ index f520843..2eba9bf 100644
>>     rpmdigest_SOURCES =	rpmdigest.c
>>     rpmdigest_LDFLAGS =	@LDFLAGS_STATIC@ $(LDFLAGS)
>>     rpmdigest_LDADD =	$(RPMIO_LDADD_COMMON)
>> -diff --git a/tools/rpmdeps-oecore.c b/tools/rpmdeps-oecore.c
>> -new file mode 100644
>> -index 0000000..e646da9
>> +Index: rpm-5.4.9/tools/rpmdeps-oecore.c
>> +===================================================================
>>    --- /dev/null
>> -+++ b/tools/rpmdeps-oecore.c
>> ++++ rpm-5.4.9/tools/rpmdeps-oecore.c
>>    @@ -0,0 +1,147 @@
>>    +#include "system.h"
>>    +const char *__progname;
>> @@ -193,6 +192,3 @@ index 0000000..e646da9
>>    +    optCon = rpmcliFini(optCon);
>>    +    return ec;
>>    +}
>> ---
>> -1.7.4.1
>> -
>> diff --git a/meta/recipes-devtools/rpm/rpm_5.4.8.bb b/meta/recipes-devtools/rpm/rpm_5.4.9.bb
>> similarity index 82%
>> rename from meta/recipes-devtools/rpm/rpm_5.4.8.bb
>> rename to meta/recipes-devtools/rpm/rpm_5.4.9.bb
>> index a7458b6..3c22f22 100644
>> --- a/meta/recipes-devtools/rpm/rpm_5.4.8.bb
>> +++ b/meta/recipes-devtools/rpm/rpm_5.4.9.bb
>> @@ -42,14 +42,12 @@ HOMEPAGE = "http://rpm5.org/"
>>    LICENSE = "LGPLv2.1"
>>    LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1"
>>
>> -DEPENDS = "beecrypt bzip2 zlib db openssl elfutils expat libpcre attr acl popt ${extrarpmdeps}"
>> -extrarpmdeps = "python perl file"
>> -extrarpmdeps_virtclass-native = "python-native file-native"
>> -PR = "r37"
>> +DEPENDS = "libpcre attr acl popt file"
>> +PR = "r38"
>>
>>    # rpm2cpio is a shell script, which is part of the rpm src.rpm.  It is needed
>>    # in order to extract the distribution SRPM into a format we can extract...
>> -SRC_URI = "http://www.rpm5.org/files/rpm/rpm-5.4/rpm-5.4.8-0.20120401.src.rpm;extract=rpm-5.4.8.tar.gz \
>> +SRC_URI = "http://www.rpm5.org/files/rpm/rpm-5.4/rpm-5.4.9-0.20120508.src.rpm;extract=rpm-5.4.9.tar.gz \
>>    	   file://rpm-log-auto-rm.patch \
>>    	   file://rpm-db-reduce.patch \
>>    	   file://perfile_rpmdeps.sh \
>> @@ -68,10 +66,11 @@ SRC_URI = "http://www.rpm5.org/files/rpm/rpm-5.4/rpm-5.4.8-0.20120401.src.rpm;ex
>>    	   file://rpmdeps-oecore.patch \
>>    	   file://rpm-resolvedep.patch \
>>    	   file://rpm-no-perl-urpm.patch \
>> +	   file://rpm-lua.patch \
>>    	  "
>>
>> -SRC_URI[md5sum] = "424b60bf2e0a624a218440d943861644"
>> -SRC_URI[sha256sum] = "56eb5033d4de98c217475fb34d466d551f8912959389e7854a806e2bd9e13380"
>> +SRC_URI[md5sum] = "60d56ace884340c1b3fcac6a1d58e768"
>> +SRC_URI[sha256sum] = "bac7cc5bd9d0e8262fdc0099349924608da8f680f5cb243751f696552239dde8"
>>
>>    inherit autotools gettext
>>
>> @@ -81,63 +80,74 @@ acpaths = "-I ${S}/db/dist/aclocal -I ${S}/db/dist/aclocal_java"
>>    rpm_macros = "%{_usrlibrpm}/macros:%{_usrlibrpm}/poky/macros:%{_usrlibrpm}/poky/%{_target}/macros:%{_etcrpm}/macros.*:%{_etcrpm}/macros:%{_etcrpm}/%{_target}/macros:~/.oerpmmacros"
>>    rpm_macros_virtclass-native = "%{_usrlibrpm}/macros:%{_usrlibrpm}/poky/macros:%{_usrlibrpm}/poky/%{_target}/macros:~/.oerpmmacros"
>>
>> -# Configure values taken from rpm.spec
>> -WITH_BZIP2 = "--with-bzip2"
>> +# sqlite lua tcl augeas nss gcrypt neon xz xar keyutils perl selinux
>>
>> -WITH_XZ = "--with-xz=none"
>> +# Note: perl and sqlite w/o db specified does not currently work.
>> +#       tcl, augeas, nss, gcrypt, xar and keyutils support is untested.
>> +PACKAGECONFIG_virtclass-native ??= "db bzip2 zlib beecrypt openssl libelf python"
>> +PACKAGECONFIG ??= "db bzip2 zlib beecrypt openssl libelf python"
>>
>> -WITH_Z = "--with-zlib $WITH_BZIP2 $WITH_XZ"
>> +PACKAGECONFIG[bzip2] = "--with-bzip2,--without-bzip2,bzip2,"
>> +PACKAGECONFIG[xz] = "--with-xz,--without-xz,xz,"
>> +PACKAGECONFIG[zlib] = "--with-zlib,--without-zlib,zlib,"
>> +PACKAGECONFIG[xar] = "--with-xar,--without-xar,xar,"
>>
>> -WITH_PYTHON = "	--with-python=${PYTHON_BASEVERSION} \
>> +WITH_PYTHON = " --with-python=${PYTHON_BASEVERSION} \
>>    		--with-python-inc-dir=${STAGING_INCDIR}/python${PYTHON_BASEVERSION} \
>>    		--with-python-lib-dir=${libdir}/python${PYTHON_BASEVERSION} \
>> -		--without-pythonembed \
>> -	      "
>> +		--without-pythonembed"
>> +PACKAGECONFIG[python] = "${WITH_PYTHON},--without-python,python,"
>>
>>    # Perl modules are not built, but they could be enabled fairly easily
>>    # the perl module creation and installation would need to be patched.
>>    # (currently has host perl contamination issues)
>> -#WITH_PERL = "	--with-perl --without-perlembed"
>> -WITH_PERL = "	--without-perl --without-perl-urpm"
>> +WITH_PERL = "--with-perl --without-perlembed --without-perl-urpm"
>> +WITHOUT_PERL = "--without-perl --without-perl-urpm"
>> +PACKAGECONFIG[perl] = "${WITH_PERL},${WITHOUT_PERL},perl,"
>>
>> -WITH_PERL_virtclass-native = " --without-perl --without-perl-urpm"
>> +# The --with-dbsql will only tell RPM to check for support, db
>> +# may or may not be built w/ the dbsql support.
>> +WITH_DB = "--with-db --with-dbsql --without-db-tools-integrated"
>> +PACKAGECONFIG[db] = "${WITH_DB},--without-db,db,"
>>
>> -WITH_DB = "--with-db --with-dbsql --without-db-tools-integrated --without-sqlite"
>> +PACKAGECONFIG[sqlite] = "--with-sqlite,--without-sqlite,sqlite3,"
>>
>> -WITH_CRYPTO = "--with-beecrypt --with-openssl --without-nss --without-gcrypt"
>> +PACKAGECONFIG[beecrypt] = "--with-beecrypt,--without-beecrypt,beecrypt,"
>> +PACKAGECONFIG[openssl] = "--with-openssl,--without-openssl,openssl,"
>> +PACKAGECONFIG[nss] = "--with-nss,--without-nss,nss,"
>> +PACKAGECONFIG[gcrypt] = "--with-gcrypt,--without-gcrypt,gcrypt,"
>> +PACKAGECONFIG[keyutils] = "--with-keyutils,--without-keyutils,keyutils,"
>> +PACKAGECONFIG[libelf] = "--with-libelf,--without-libelf,elfutils,"
>>
>> -WITH_KEYUTILS = "--without-keyutils"
>> -WITH_LIBELF = "--with-libelf"
>> -WITH_SELINUX = "--without-selinux --without-sepol --without-semanage"
>> -#WITH_NEON = "--with-neon=internal --without-libproxy --with-expat --without-gssapi"
>> -WITH_NEON = "--without-neon --without-libproxy --without-expat --without-gssapi"
>> +WITH_SELINUX = "--with-selinux --with-sepol --with-semanage"
>> +WITHOUT_SELINUX = "--without-selinux --without-sepol --without-semanage"
>> +PACKAGECONFIG[selinux] = "${WITH_SELINUX},${WITHOUT_SELINUX},selinux,"
>>
>> -EXTRA_OECONF = "--verbose \
>> +WITH_NEON = "--with-neon --with-libproxy --with-expat --without-gssapi"
>> +WITHOUT_NEON = "--without-neon --without-libproxy --without-expat --without-gssapi"
>> +PACKAGECONFIG[neon] = "${WITH_NEON},${WITHOUT_NEON},neon,"
>> +
>> +PACKAGECONFIG[lua] = "--with-lua,--without-lua,"
>> +PACKAGECONFIG[tcl] = "--with-tcl,--without-tcl,tcl,"
>> +
>> +PACAKGECONFIG[augeas] = "--with-augeas,--without-augeas,augeas,"
>> +
>> +EXTRA_OECONF += "--verbose \
>>    		--sysconfdir=/etc \
>> -		${WITH_DB} \
>> -		${WITH_Z} \
>>    		--with-file \
>>    		--with-path-magic=%{_usrlibrpm}/../../share/misc/magic.mgc \
>> -		--without-lua \
>> -		--without-tcl \
>>    		--with-syck=internal \
>>    		--without-readline \
>> -		--without-augeas \
>> -		${WITH_CRYPTO} \
>>    		--without-libtasn1 \
>>    		--without-pakchois \
>>    		--without-gnutls \
>> -		${WITH_NEON} \
>>    		--with-pcre \
>>    		--enable-utf8 \
>>    		--without-uuid \
>>    		--with-attr \
>>    		--with-acl \
>> -		--without-xar \
>>    		--with-popt=external \
>> -		${WITH_KEYUTILS} \
>>    		--with-pthreads \
>> -		${WITH_LIBELF} \
>>    		--without-cudf \
>>    		--without-ficl \
>>    		--without-aterm \
>> @@ -146,14 +156,11 @@ EXTRA_OECONF = "--verbose \
>>    		--without-rc \
>>    		--without-js \
>>    		--without-gpsee \
>> -		${WITH_PYTHON} \
>> -		${WITH_PERL} \
>>    		--without-ruby \
>>    		--without-squirrel \
>>    		--with-build-extlibdep \
>>    		--with-build-maxextlibdep \
>>    		--without-valgrind \
>> -                --without-xz \
>>    		--disable-openmp \
>>    		--enable-build-pic \
>>    		--enable-build-versionscript \
>> @@ -165,7 +172,7 @@ EXTRA_OECONF = "--verbose \
>>    		--with-bugreport=http://bugzilla.yoctoproject.org \
>>    		--program-prefix="
>>
>> -CFLAGS_append = " -DRPM_VENDOR_WINDRIVER -DRPM_VENDOR_POKY"
>> +CFLAGS_append = " -DRPM_VENDOR_WINDRIVER -DRPM_VENDOR_POKY -DRPM_VENDOR_OE"
>>
>>    PACKAGES = "${PN}-dbg ${PN} ${PN}-doc ${PN}-libs ${PN}-dev ${PN}-staticdev ${PN}-common ${PN}-build python-rpm-dbg python-rpm-staticdev python-rpm perl-module-rpm perl-module-rpm-dev ${PN}-locale"
>>
>> @@ -173,7 +180,7 @@ SOLIBS = "5.4.so"
>>
>>    # Based on %files section in the rpm.spec
>>
>> -FILES_${PN} = "${bindir}/rpm \
>> +FILES_${PN} =  "${bindir}/rpm \
>>    		${bindir}/rpmconstant \
>>    		${libdir}/rpm/rpm.* \
>>    		${libdir}/rpm/tgpg \
>> @@ -191,15 +198,10 @@ FILES_${PN} = "${bindir}/rpm \
>>    		${libdir}/rpm/bin/rpmspecdump \
>>    		${libdir}/rpm/bin/wget \
>>    		/var/lib/rpm \
>> +		/var/cache/rpm \
>> +		/var/volatile/cache/rpm \
>>    		"
>>
>> -#		${libdir}/rpm/magic
>> -#		${libdir}/rpm/magic.mgc
>> -#		${libdir}/rpm/magic.mime
>> -#		${libdir}/rpm/magic.mime.mgc
>> -#		${libdir}/rpm/bin/db_*
>> -#		${libdir}/rpm/bin/grep
>> -
>>    FILES_${PN}-dbg += "${libdir}/rpm/.debug \
>>    		${libdir}/rpm/bin/.debug \
>>    		"
>> @@ -218,12 +220,6 @@ FILES_${PN}-libs = "${libdir}/librpm-*.so \
>>    		${libdir}/librpmbuild-*.so \
>>    		"
>>
>> -###%{_rpmhome}/lib/libxar.so.*
>> -###%{_rpmhome}/lib/libjs.so.*
>> -###%{_rpmhome}/lib/librpmjsm.so.*
>> -###%{_rpmhome}/lib/rpmjsm.so
>> -
>> -
>>    FILES_${PN}-build = "${prefix}/src/rpm \
>>    		${bindir}/rpmbuild \
>>    		${libdir}/rpm/brp-* \
>> @@ -269,8 +265,6 @@ FILES_${PN}-build = "${prefix}/src/rpm \
>>    		${libdir}/rpm/bin/rpmlua \
>>    		${libdir}/rpm/bin/rpmluac \
>>    		${libdir}/rpm/bin/sqlite3 \
>> -		${libdir}/rpm/lib/liblua.a \
>> -		${libdir}/rpm/lib/liblua.la \
>>    		${libdir}/rpm/macros.d/cmake \
>>    		${libdir}/rpm/macros.d/java \
>>    		${libdir}/rpm/macros.d/libtool \
>> @@ -291,9 +285,6 @@ FILES_${PN}-build = "${prefix}/src/rpm \
>>    		"
>>    RDEPENDS_${PN}-build = "file"
>>
>> -#%rpmattr       %{_rpmhome}/gem_helper.rb
>> -#%rpmattr       %{_rpmhome}/symclash.*
>> -
>>    FILES_python-rpm-dbg = "${libdir}/python*/rpm/.debug/_*"
>>    FILES_python-rpm-staticdev = "${libdir}/python*/rpm/*.a"
>>    FILES_python-rpm = "${libdir}/python*/rpm"
>> @@ -317,6 +308,7 @@ FILES_${PN}-dev = "${includedir}/rpm \
>>    		${libdir}/librpmmisc.so \
>>    		${libdir}/librpmbuild.la \
>>    		${libdir}/librpmbuild.so \
>> +		${libdir}/rpm/lib/liblua.la \
>>    		${libdir}/pkgconfig/rpm.pc \
>>    		"
>>
>> @@ -327,25 +319,17 @@ FILES_${PN}-staticdev = " \
>>    		${libdir}/librpmio.a \
>>    		${libdir}/librpmmisc.a \
>>    		${libdir}/librpmbuild.a \
>> +		${libdir}/rpm/lib/liblua.a \
>>    		"
>>
>> -###%{_rpmhome}/lib/libxar.a
>> -###%{_rpmhome}/lib/libxar.la
>> -###%{_rpmhome}/lib/libxar.so
>> -###%{_rpmhome}/lib/libjs.a
>> -###%{_rpmhome}/lib/libjs.la
>> -###%{_rpmhome}/lib/libjs.so
>> -###%{_rpmhome}/lib/librpmjsm.a
>> -###%{_rpmhome}/lib/librpmjsm.la
>> -###%{_rpmhome}/lib/librpmjsm.so
>> -
>>    do_configure() {
>>    	# Disable tests!
>> -	echo "all:">   tests/Makefile.am
>> +	#echo "all:">   tests/Makefile.am
>>
>>    	./autogen.sh
>>
>>    	export varprefix=${localstatedir}
>> +	export CC_FOR_BUILD="${BUILD_CC}"
>>    	oe_runconf
>>    }
>>
>> @@ -422,6 +406,8 @@ do_install_append() {
>>    	rm -f ${D}/${libdir}/rpm/bin/dbconvert
>>    	rm -f ${D}/${libdir}/rpm/bin/pom2spec
>>
>> +	rm -rf ${D}/var/lib/wdj ${D}/var/cache/wdj
>> +	rm -f ${D}/usr/lib/rpm/bin/api-sanity-checker.pl
>>    }
>>
>>    do_install_append_virtclass-native() {
>> diff --git a/meta/recipes-extended/libzypp/libzypp/libzypp-rpm549.patch b/meta/recipes-extended/libzypp/libzypp/libzypp-rpm549.patch
>> new file mode 100644
>> index 0000000..8268a2d
>> --- /dev/null
>> +++ b/meta/recipes-extended/libzypp/libzypp/libzypp-rpm549.patch
>> @@ -0,0 +1,28 @@
>> +commit 6c47ad415246cc3a3edac2e1637106d330574c85
>> +Author: Mark Hatle<mark.hatle@windriver.com>
>> +Date:   Fri May 11 19:05:09 2012 -0500
>> +
>> +    RpmHeader.cc: RPM 5.4.9 integration
>> +
>> +    _RPMVSF_xxx - NODIGEST, NOSIGNATURES, NOHEADER, and NOPAYLOAD
>> +    are now obsolete and no longer supported.
>> +
>> +    Signed-off-by: Mark Hatle<mark.hatle@windriver.com>
>> +
>> +diff --git a/zypp/target/rpm/RpmHeader.cc b/zypp/target/rpm/RpmHeader.cc
>> +index 1224ecd..c96dae6 100644
>> +--- a/zypp/target/rpm/RpmHeader.cc
>> ++++ b/zypp/target/rpm/RpmHeader.cc
>> +@@ -230,10 +230,12 @@ RpmHeader::constPtr RpmHeader::readPackage( const Pathname&   path_r,
>> +   librpmDb::globalInit();
>> +   rpmts ts = ::rpmtsCreate();
>> +   unsigned vsflag = RPMVSF_DEFAULT;
>> ++#if !defined(_RPM_5)
>> +   if ( verification_r&   NODIGEST )
>> +     vsflag |= _RPMVSF_NODIGESTS;
>> +   if ( verification_r&   NOSIGNATURE )
>> +     vsflag |= _RPMVSF_NOSIGNATURES;
>> ++#endif
>> +   ::rpmtsSetVSFlags( ts, rpmVSFlags(vsflag) );
>> +
>> +   Header nh = 0;
>> diff --git a/meta/recipes-extended/libzypp/libzypp_git.bb b/meta/recipes-extended/libzypp/libzypp_git.bb
>> index 3c3a9f0..c5761d5 100644
>> --- a/meta/recipes-extended/libzypp/libzypp_git.bb
>> +++ b/meta/recipes-extended/libzypp/libzypp_git.bb
>> @@ -11,7 +11,7 @@ DEPENDS  = "rpm boost curl libxml2 zlib sat-solver expat openssl udev libproxy"
>>    S = "${WORKDIR}/git"
>>    SRCREV = "15b6c52260bbc52b3d8e585e271b67e10cc7c433"
>>    PV = "0.0-git${SRCPV}"
>> -PR = "r20"
>> +PR = "r21"
>>
>>    SRC_URI = "git://github.com/openSUSE/libzypp.git;protocol=git \
>>               file://no-doc.patch \
>> @@ -23,6 +23,7 @@ SRC_URI = "git://github.com/openSUSE/libzypp.git;protocol=git \
>>    	   file://fix_for_compile_wth_gcc-4.6.0.patch \
>>    	   file://hardcode-lib-fix.patch \
>>    	   file://close.patch \
>> +	   file://libzypp-rpm549.patch \
>>              "
>>
>>    SRC_URI_append_mips = " file://mips-workaround-gcc-tribool-error.patch"

Patch

diff --git a/meta/recipes-devtools/rpm/rpm/rpm-lua.patch b/meta/recipes-devtools/rpm/rpm/rpm-lua.patch
new file mode 100644
index 0000000..980e1b1
--- /dev/null
+++ b/meta/recipes-devtools/rpm/rpm/rpm-lua.patch
@@ -0,0 +1,29 @@ 
+Add support for cross compiling lua
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+
+diff -ur rpm-5.4.9.orig/configure.ac rpm-5.4.9/configure.ac
+--- rpm-5.4.9.orig/configure.ac	2012-05-16 12:16:36.589813548 -0500
++++ rpm-5.4.9/configure.ac	2012-05-16 12:26:01.070813518 -0500
+@@ -120,6 +120,9 @@
+ 
+ AC_PATH_PROG(AS, as, as)
+ 
++CC_FOR_BUILD=${CC_FOR_BUILD-\$(CC)}
++AC_SUBST(CC_FOR_BUILD)
++
+ dnl # GCC specifics
+ AC_PROG_GCC_TRADITIONAL
+ AC_ARG_ENABLE(build-pic,
+diff -ur rpm-5.4.9.orig/lua/Makefile.am rpm-5.4.9/lua/Makefile.am
+--- rpm-5.4.9.orig/lua/Makefile.am	2012-04-07 19:15:25.000000000 -0500
++++ rpm-5.4.9/lua/Makefile.am	2012-05-16 12:26:19.556856688 -0500
+@@ -40,7 +40,7 @@
+ 
+ # --- bin2c doesn't need anything but a compiler
+ bin2c$(EXEEXT):  bin2c.c
+-	$(CC) -o $@ $<
++	$(CC_FOR_BUILD) -o $@ $<
+ 
+ liblua_la_SOURCES =
+ liblua_la_CFLAGS = @WITH_LUA_SUBDIR_DEF@
diff --git a/meta/recipes-devtools/rpm/rpm/rpm-scriptletexechelper.patch b/meta/recipes-devtools/rpm/rpm/rpm-scriptletexechelper.patch
index e4db0e4..8a9e712 100644
--- a/meta/recipes-devtools/rpm/rpm/rpm-scriptletexechelper.patch
+++ b/meta/recipes-devtools/rpm/rpm/rpm-scriptletexechelper.patch
@@ -12,10 +12,11 @@  Upstream-Status: Pending
 
 Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
 
-diff -ur rpm-5.4.0.orig/lib/psm.c rpm-5.4.0/lib/psm.c
---- rpm-5.4.0.orig/lib/psm.c	2010-12-29 07:42:11.000000000 -0600
-+++ rpm-5.4.0/lib/psm.c	2011-11-08 13:38:48.132791154 -0600
-@@ -792,6 +792,10 @@
+Index: rpm-5.4.9/lib/psm.c
+===================================================================
+--- rpm-5.4.9.orig/lib/psm.c
++++ rpm-5.4.9/lib/psm.c
+@@ -801,6 +801,10 @@ static rpmRC runScript(rpmpsm psm, Heade
      int xx;
      int i;
  
@@ -26,23 +27,23 @@  diff -ur rpm-5.4.0.orig/lib/psm.c rpm-5.4.0/lib/psm.c
      if (psm->sstates != NULL && ix >= 0 && ix < RPMSCRIPT_MAX)
  	ssp = psm->sstates + ix;
      if (ssp != NULL)
-@@ -858,14 +862,29 @@
+@@ -867,14 +871,29 @@ assert(he->p.str != NULL);
  		(F_ISSET(psm, UNORDERED) ? "a" : ""));
  
      if (Phe->p.argv == NULL) {
--	argv = alloca(5 * sizeof(*argv));
+-	argv = (const char **) alloca(5 * sizeof(*argv));
 -	argv[0] = "/bin/sh";
 -	argc = 1;
-+	argv = alloca(7 * sizeof(*argv));
++	argv = (const char **) alloca(7 * sizeof(*argv));
 +	argc = 0;
 +    } else {
-+	argv = alloca((Phe->c + 6) * sizeof(*argv));
++	argv = (const char **) alloca((Phe->c + 6) * sizeof(*argv));
 +	argc = 0;
 +    }
 +
 +#ifdef RPM_VENDOR_POKY
 +    if (scriptletWrapper && *scriptletWrapper) {
-+        argv[argc++] = scriptletWrapper;
++	argv[argc++] = scriptletWrapper;
 +	argv[argc] = rpmtsRootDir(ts);
 +	if (!argv[argc] || !*argv[argc])
 +	   argv[argc] = "/";
@@ -51,10 +52,10 @@  diff -ur rpm-5.4.0.orig/lib/psm.c rpm-5.4.0/lib/psm.c
 +#endif
 +
 +    if (Phe->p.argv == NULL) {
-+        argv[argc++] = "/bin/sh";
++	argv[argc++] = "/bin/sh";
  	ldconfig_done = 0;
      } else {
--	argv = alloca((Phe->c + 4) * sizeof(*argv));
+-	argv = (const char **) alloca((Phe->c + 4) * sizeof(*argv));
 -	memcpy(argv, Phe->p.argv, Phe->c * sizeof(*argv));
 -	argc = Phe->c;
 +	memcpy((argv + argc), Phe->p.argv, Phe->c * sizeof(*argv));
@@ -62,7 +63,7 @@  diff -ur rpm-5.4.0.orig/lib/psm.c rpm-5.4.0/lib/psm.c
  	ldconfig_done = (ldconfig_path && !strcmp(argv[0], ldconfig_path)
  		? 1 : 0);
      }
-@@ -916,7 +935,12 @@
+@@ -925,7 +944,12 @@ assert(he->p.str != NULL);
  	    goto exit;
  
  	if (rpmIsDebug() &&
@@ -76,7 +77,7 @@  diff -ur rpm-5.4.0.orig/lib/psm.c rpm-5.4.0/lib/psm.c
  	{
  	    static const char set_x[] = "set -x\n";
  	    nw = Fwrite(set_x, sizeof(set_x[0]), sizeof(set_x)-1, fd);
-@@ -1051,12 +1075,22 @@
+@@ -1060,12 +1084,22 @@ assert(he->p.str != NULL);
  
  	{   const char * rootDir = rpmtsRootDir(ts);
  	    if (!rpmtsChrootDone(ts) && rootDir != NULL &&
@@ -99,7 +100,7 @@  diff -ur rpm-5.4.0.orig/lib/psm.c rpm-5.4.0/lib/psm.c
  	    xx = Chdir("/");
  	    rpmlog(RPMLOG_DEBUG, D_("%s: %s(%s)\texecv(%s) pid %d\n"),
  			psm->stepName, sln, NVRA,
-@@ -2961,6 +2995,13 @@
+@@ -2977,6 +3011,13 @@ assert(psm->te != NULL);
      case PSM_SCRIPT:	/* Run current package scriptlets. */
  	/* XXX running %verifyscript/%sanitycheck doesn't have psm->te */
      {	rpmtxn _parent = (psm && psm->te ? psm->te->txn : NULL);
@@ -113,7 +114,7 @@  diff -ur rpm-5.4.0.orig/lib/psm.c rpm-5.4.0/lib/psm.c
  	xx = rpmtxnBegin(rpmtsGetRdb(ts), _parent, NULL);
  	rc = runInstScript(psm);
  	if (rc)
-@@ -2968,11 +3009,24 @@
+@@ -2984,11 +3025,24 @@ assert(psm->te != NULL);
  	else
  	     xx = rpmtxnCommit(rpmtsGetRdb(ts)->db_txn);
  	rpmtsGetRdb(ts)->db_txn = NULL;
@@ -138,7 +139,7 @@  diff -ur rpm-5.4.0.orig/lib/psm.c rpm-5.4.0/lib/psm.c
  	break;
      case PSM_IMMED_TRIGGERS:
  	/* Run triggers in this package other package(s) set off. */
-@@ -2982,7 +3036,18 @@
+@@ -2998,7 +3052,18 @@ assert(psm->te != NULL);
  	    F_SET(psm, GOTTRIGGERS);
  	}
  	if (psm->triggers != NULL)
diff --git a/meta/recipes-devtools/rpm/rpm/rpmdeps-oecore.patch b/meta/recipes-devtools/rpm/rpm/rpmdeps-oecore.patch
index 1667901..f29866b 100644
--- a/meta/recipes-devtools/rpm/rpm/rpmdeps-oecore.patch
+++ b/meta/recipes-devtools/rpm/rpm/rpmdeps-oecore.patch
@@ -16,20 +16,20 @@  RP 2012/2/7
  2 files changed, 152 insertions(+), 1 deletions(-)
  create mode 100644 tools/rpmdeps-oecore.c
 
-diff --git a/tools/Makefile.am b/tools/Makefile.am
-index f520843..2eba9bf 100644
---- a/tools/Makefile.am
-+++ b/tools/Makefile.am
+Index: rpm-5.4.9/tools/Makefile.am
+===================================================================
+--- rpm-5.4.9.orig/tools/Makefile.am
++++ rpm-5.4.9/tools/Makefile.am
 @@ -58,7 +58,7 @@ pkgbin_PROGRAMS =	\
  	@WITH_AUGEAS_AUGTOOL@ chroot cp @WITH_CUDF_CUDFTOOL@ find mtree \
  	@WITH_SEMANAGE_SEMODULE@ wget \
  	rpmcache rpmdigest rpmrepo rpmspecdump \
 -	rpmcmp rpmdeps sqlite3 @WITH_KEYUTILS_RPMKEY@ @WITH_LIBELF_DEBUGEDIT@
 +	rpmcmp rpmdeps rpmdeps-oecore sqlite3 @WITH_KEYUTILS_RPMKEY@ @WITH_LIBELF_DEBUGEDIT@
- dist_man_MANS =		rpmgrep.1
- 
- augtool_SOURCES =	augtool.c
-@@ -155,6 +155,10 @@ rpmdeps_SOURCES =	rpmdeps.c
+ if WITH_DB
+ pkgbin_PROGRAMS +=	dbconvert
+ endif
+@@ -168,6 +168,10 @@ rpmdeps_SOURCES =	rpmdeps.c
  rpmdeps_LDFLAGS =	@LDFLAGS_STATIC@ $(LDFLAGS)
  rpmdeps_LDADD =		$(RPM_LDADD_COMMON)
  
@@ -40,11 +40,10 @@  index f520843..2eba9bf 100644
  rpmdigest_SOURCES =	rpmdigest.c
  rpmdigest_LDFLAGS =	@LDFLAGS_STATIC@ $(LDFLAGS)
  rpmdigest_LDADD =	$(RPMIO_LDADD_COMMON)
-diff --git a/tools/rpmdeps-oecore.c b/tools/rpmdeps-oecore.c
-new file mode 100644
-index 0000000..e646da9
+Index: rpm-5.4.9/tools/rpmdeps-oecore.c
+===================================================================
 --- /dev/null
-+++ b/tools/rpmdeps-oecore.c
++++ rpm-5.4.9/tools/rpmdeps-oecore.c
 @@ -0,0 +1,147 @@
 +#include "system.h"
 +const char *__progname;
@@ -193,6 +192,3 @@  index 0000000..e646da9
 +    optCon = rpmcliFini(optCon);
 +    return ec;
 +}
--- 
-1.7.4.1
-
diff --git a/meta/recipes-devtools/rpm/rpm_5.4.8.bb b/meta/recipes-devtools/rpm/rpm_5.4.9.bb
similarity index 82%
rename from meta/recipes-devtools/rpm/rpm_5.4.8.bb
rename to meta/recipes-devtools/rpm/rpm_5.4.9.bb
index a7458b6..3c22f22 100644
--- a/meta/recipes-devtools/rpm/rpm_5.4.8.bb
+++ b/meta/recipes-devtools/rpm/rpm_5.4.9.bb
@@ -42,14 +42,12 @@  HOMEPAGE = "http://rpm5.org/"
 LICENSE = "LGPLv2.1"
 LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1"
 
-DEPENDS = "beecrypt bzip2 zlib db openssl elfutils expat libpcre attr acl popt ${extrarpmdeps}"
-extrarpmdeps = "python perl file"
-extrarpmdeps_virtclass-native = "python-native file-native"
-PR = "r37"
+DEPENDS = "libpcre attr acl popt file"
+PR = "r38"
 
 # rpm2cpio is a shell script, which is part of the rpm src.rpm.  It is needed
 # in order to extract the distribution SRPM into a format we can extract...
-SRC_URI = "http://www.rpm5.org/files/rpm/rpm-5.4/rpm-5.4.8-0.20120401.src.rpm;extract=rpm-5.4.8.tar.gz \
+SRC_URI = "http://www.rpm5.org/files/rpm/rpm-5.4/rpm-5.4.9-0.20120508.src.rpm;extract=rpm-5.4.9.tar.gz \
 	   file://rpm-log-auto-rm.patch \
 	   file://rpm-db-reduce.patch \
 	   file://perfile_rpmdeps.sh \
@@ -68,10 +66,11 @@  SRC_URI = "http://www.rpm5.org/files/rpm/rpm-5.4/rpm-5.4.8-0.20120401.src.rpm;ex
 	   file://rpmdeps-oecore.patch \
 	   file://rpm-resolvedep.patch \
 	   file://rpm-no-perl-urpm.patch \
+	   file://rpm-lua.patch \
 	  "
 
-SRC_URI[md5sum] = "424b60bf2e0a624a218440d943861644"
-SRC_URI[sha256sum] = "56eb5033d4de98c217475fb34d466d551f8912959389e7854a806e2bd9e13380"
+SRC_URI[md5sum] = "60d56ace884340c1b3fcac6a1d58e768"
+SRC_URI[sha256sum] = "bac7cc5bd9d0e8262fdc0099349924608da8f680f5cb243751f696552239dde8"
 
 inherit autotools gettext
 
@@ -81,63 +80,74 @@  acpaths = "-I ${S}/db/dist/aclocal -I ${S}/db/dist/aclocal_java"
 rpm_macros = "%{_usrlibrpm}/macros:%{_usrlibrpm}/poky/macros:%{_usrlibrpm}/poky/%{_target}/macros:%{_etcrpm}/macros.*:%{_etcrpm}/macros:%{_etcrpm}/%{_target}/macros:~/.oerpmmacros"
 rpm_macros_virtclass-native = "%{_usrlibrpm}/macros:%{_usrlibrpm}/poky/macros:%{_usrlibrpm}/poky/%{_target}/macros:~/.oerpmmacros"
 
-# Configure values taken from rpm.spec
-WITH_BZIP2 = "--with-bzip2"
+# sqlite lua tcl augeas nss gcrypt neon xz xar keyutils perl selinux
 
-WITH_XZ = "--with-xz=none"
+# Note: perl and sqlite w/o db specified does not currently work.
+#       tcl, augeas, nss, gcrypt, xar and keyutils support is untested.
+PACKAGECONFIG_virtclass-native ??= "db bzip2 zlib beecrypt openssl libelf python"
+PACKAGECONFIG ??= "db bzip2 zlib beecrypt openssl libelf python"
 
-WITH_Z = "--with-zlib $WITH_BZIP2 $WITH_XZ"
+PACKAGECONFIG[bzip2] = "--with-bzip2,--without-bzip2,bzip2,"
+PACKAGECONFIG[xz] = "--with-xz,--without-xz,xz,"
+PACKAGECONFIG[zlib] = "--with-zlib,--without-zlib,zlib,"
+PACKAGECONFIG[xar] = "--with-xar,--without-xar,xar,"
 
-WITH_PYTHON = "	--with-python=${PYTHON_BASEVERSION} \
+WITH_PYTHON = " --with-python=${PYTHON_BASEVERSION} \
 		--with-python-inc-dir=${STAGING_INCDIR}/python${PYTHON_BASEVERSION} \
 		--with-python-lib-dir=${libdir}/python${PYTHON_BASEVERSION} \
-		--without-pythonembed \
-	      "
+		--without-pythonembed"
+PACKAGECONFIG[python] = "${WITH_PYTHON},--without-python,python,"
 
 # Perl modules are not built, but they could be enabled fairly easily
 # the perl module creation and installation would need to be patched.
 # (currently has host perl contamination issues)
-#WITH_PERL = "	--with-perl --without-perlembed"
-WITH_PERL = "	--without-perl --without-perl-urpm"
+WITH_PERL = "--with-perl --without-perlembed --without-perl-urpm"
+WITHOUT_PERL = "--without-perl --without-perl-urpm"
+PACKAGECONFIG[perl] = "${WITH_PERL},${WITHOUT_PERL},perl,"
 
-WITH_PERL_virtclass-native = " --without-perl --without-perl-urpm"
+# The --with-dbsql will only tell RPM to check for support, db
+# may or may not be built w/ the dbsql support.
+WITH_DB = "--with-db --with-dbsql --without-db-tools-integrated"
+PACKAGECONFIG[db] = "${WITH_DB},--without-db,db,"
 
-WITH_DB = "--with-db --with-dbsql --without-db-tools-integrated --without-sqlite"
+PACKAGECONFIG[sqlite] = "--with-sqlite,--without-sqlite,sqlite3,"
 
-WITH_CRYPTO = "--with-beecrypt --with-openssl --without-nss --without-gcrypt"
+PACKAGECONFIG[beecrypt] = "--with-beecrypt,--without-beecrypt,beecrypt,"
+PACKAGECONFIG[openssl] = "--with-openssl,--without-openssl,openssl,"
+PACKAGECONFIG[nss] = "--with-nss,--without-nss,nss,"
+PACKAGECONFIG[gcrypt] = "--with-gcrypt,--without-gcrypt,gcrypt,"
+PACKAGECONFIG[keyutils] = "--with-keyutils,--without-keyutils,keyutils,"
+PACKAGECONFIG[libelf] = "--with-libelf,--without-libelf,elfutils,"
 
-WITH_KEYUTILS = "--without-keyutils"
-WITH_LIBELF = "--with-libelf"
-WITH_SELINUX = "--without-selinux --without-sepol --without-semanage"
-#WITH_NEON = "--with-neon=internal --without-libproxy --with-expat --without-gssapi"
-WITH_NEON = "--without-neon --without-libproxy --without-expat --without-gssapi"
+WITH_SELINUX = "--with-selinux --with-sepol --with-semanage"
+WITHOUT_SELINUX = "--without-selinux --without-sepol --without-semanage"
+PACKAGECONFIG[selinux] = "${WITH_SELINUX},${WITHOUT_SELINUX},selinux,"
 
-EXTRA_OECONF = "--verbose \
+WITH_NEON = "--with-neon --with-libproxy --with-expat --without-gssapi"
+WITHOUT_NEON = "--without-neon --without-libproxy --without-expat --without-gssapi"
+PACKAGECONFIG[neon] = "${WITH_NEON},${WITHOUT_NEON},neon,"
+
+PACKAGECONFIG[lua] = "--with-lua,--without-lua,"
+PACKAGECONFIG[tcl] = "--with-tcl,--without-tcl,tcl,"
+
+PACAKGECONFIG[augeas] = "--with-augeas,--without-augeas,augeas,"
+
+EXTRA_OECONF += "--verbose \
 		--sysconfdir=/etc \
-		${WITH_DB} \
-		${WITH_Z} \
 		--with-file \
 		--with-path-magic=%{_usrlibrpm}/../../share/misc/magic.mgc \
-		--without-lua \
-		--without-tcl \
 		--with-syck=internal \
 		--without-readline \
-		--without-augeas \
-		${WITH_CRYPTO} \
 		--without-libtasn1 \
 		--without-pakchois \
 		--without-gnutls \
-		${WITH_NEON} \
 		--with-pcre \
 		--enable-utf8 \
 		--without-uuid \
 		--with-attr \
 		--with-acl \
-		--without-xar \
 		--with-popt=external \
-		${WITH_KEYUTILS} \
 		--with-pthreads \
-		${WITH_LIBELF} \
 		--without-cudf \
 		--without-ficl \
 		--without-aterm \
@@ -146,14 +156,11 @@  EXTRA_OECONF = "--verbose \
 		--without-rc \
 		--without-js \
 		--without-gpsee \
-		${WITH_PYTHON} \
-		${WITH_PERL} \
 		--without-ruby \
 		--without-squirrel \
 		--with-build-extlibdep \
 		--with-build-maxextlibdep \
 		--without-valgrind \
-                --without-xz \
 		--disable-openmp \
 		--enable-build-pic \
 		--enable-build-versionscript \
@@ -165,7 +172,7 @@  EXTRA_OECONF = "--verbose \
 		--with-bugreport=http://bugzilla.yoctoproject.org \
 		--program-prefix="
 
-CFLAGS_append = " -DRPM_VENDOR_WINDRIVER -DRPM_VENDOR_POKY"
+CFLAGS_append = " -DRPM_VENDOR_WINDRIVER -DRPM_VENDOR_POKY -DRPM_VENDOR_OE"
 
 PACKAGES = "${PN}-dbg ${PN} ${PN}-doc ${PN}-libs ${PN}-dev ${PN}-staticdev ${PN}-common ${PN}-build python-rpm-dbg python-rpm-staticdev python-rpm perl-module-rpm perl-module-rpm-dev ${PN}-locale"
 
@@ -173,7 +180,7 @@  SOLIBS = "5.4.so"
 
 # Based on %files section in the rpm.spec
 
-FILES_${PN} = "${bindir}/rpm \
+FILES_${PN} =  "${bindir}/rpm \
 		${bindir}/rpmconstant \
 		${libdir}/rpm/rpm.* \
 		${libdir}/rpm/tgpg \
@@ -191,15 +198,10 @@  FILES_${PN} = "${bindir}/rpm \
 		${libdir}/rpm/bin/rpmspecdump \
 		${libdir}/rpm/bin/wget \
 		/var/lib/rpm \
+		/var/cache/rpm \
+		/var/volatile/cache/rpm \
 		"
 
-#		${libdir}/rpm/magic
-#		${libdir}/rpm/magic.mgc
-#		${libdir}/rpm/magic.mime
-#		${libdir}/rpm/magic.mime.mgc
-#		${libdir}/rpm/bin/db_*
-#		${libdir}/rpm/bin/grep
-
 FILES_${PN}-dbg += "${libdir}/rpm/.debug \
 		${libdir}/rpm/bin/.debug \
 		"
@@ -218,12 +220,6 @@  FILES_${PN}-libs = "${libdir}/librpm-*.so \
 		${libdir}/librpmbuild-*.so \
 		"
 
-###%{_rpmhome}/lib/libxar.so.*
-###%{_rpmhome}/lib/libjs.so.*
-###%{_rpmhome}/lib/librpmjsm.so.*
-###%{_rpmhome}/lib/rpmjsm.so
-
-
 FILES_${PN}-build = "${prefix}/src/rpm \
 		${bindir}/rpmbuild \
 		${libdir}/rpm/brp-* \
@@ -269,8 +265,6 @@  FILES_${PN}-build = "${prefix}/src/rpm \
 		${libdir}/rpm/bin/rpmlua \
 		${libdir}/rpm/bin/rpmluac \
 		${libdir}/rpm/bin/sqlite3 \
-		${libdir}/rpm/lib/liblua.a \
-		${libdir}/rpm/lib/liblua.la \
 		${libdir}/rpm/macros.d/cmake \
 		${libdir}/rpm/macros.d/java \
 		${libdir}/rpm/macros.d/libtool \
@@ -291,9 +285,6 @@  FILES_${PN}-build = "${prefix}/src/rpm \
 		"
 RDEPENDS_${PN}-build = "file"
 
-#%rpmattr       %{_rpmhome}/gem_helper.rb
-#%rpmattr       %{_rpmhome}/symclash.*
-
 FILES_python-rpm-dbg = "${libdir}/python*/rpm/.debug/_*"
 FILES_python-rpm-staticdev = "${libdir}/python*/rpm/*.a"
 FILES_python-rpm = "${libdir}/python*/rpm"
@@ -317,6 +308,7 @@  FILES_${PN}-dev = "${includedir}/rpm \
 		${libdir}/librpmmisc.so \
 		${libdir}/librpmbuild.la \
 		${libdir}/librpmbuild.so \
+		${libdir}/rpm/lib/liblua.la \
 		${libdir}/pkgconfig/rpm.pc \
 		"
 
@@ -327,25 +319,17 @@  FILES_${PN}-staticdev = " \
 		${libdir}/librpmio.a \
 		${libdir}/librpmmisc.a \
 		${libdir}/librpmbuild.a \
+		${libdir}/rpm/lib/liblua.a \
 		"
 
-###%{_rpmhome}/lib/libxar.a
-###%{_rpmhome}/lib/libxar.la
-###%{_rpmhome}/lib/libxar.so
-###%{_rpmhome}/lib/libjs.a
-###%{_rpmhome}/lib/libjs.la
-###%{_rpmhome}/lib/libjs.so
-###%{_rpmhome}/lib/librpmjsm.a
-###%{_rpmhome}/lib/librpmjsm.la
-###%{_rpmhome}/lib/librpmjsm.so
-
 do_configure() {
 	# Disable tests!
-	echo "all:" > tests/Makefile.am
+	#echo "all:" > tests/Makefile.am
 
 	./autogen.sh
 
 	export varprefix=${localstatedir}
+	export CC_FOR_BUILD="${BUILD_CC}"
 	oe_runconf
 }
 
@@ -422,6 +406,8 @@  do_install_append() {
 	rm -f ${D}/${libdir}/rpm/bin/dbconvert
 	rm -f ${D}/${libdir}/rpm/bin/pom2spec
 
+	rm -rf ${D}/var/lib/wdj ${D}/var/cache/wdj
+	rm -f ${D}/usr/lib/rpm/bin/api-sanity-checker.pl
 }
 
 do_install_append_virtclass-native() {
diff --git a/meta/recipes-extended/libzypp/libzypp/libzypp-rpm549.patch b/meta/recipes-extended/libzypp/libzypp/libzypp-rpm549.patch
new file mode 100644
index 0000000..8268a2d
--- /dev/null
+++ b/meta/recipes-extended/libzypp/libzypp/libzypp-rpm549.patch
@@ -0,0 +1,28 @@ 
+commit 6c47ad415246cc3a3edac2e1637106d330574c85
+Author: Mark Hatle <mark.hatle@windriver.com>
+Date:   Fri May 11 19:05:09 2012 -0500
+
+    RpmHeader.cc: RPM 5.4.9 integration
+    
+    _RPMVSF_xxx - NODIGEST, NOSIGNATURES, NOHEADER, and NOPAYLOAD
+    are now obsolete and no longer supported.
+    
+    Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+
+diff --git a/zypp/target/rpm/RpmHeader.cc b/zypp/target/rpm/RpmHeader.cc
+index 1224ecd..c96dae6 100644
+--- a/zypp/target/rpm/RpmHeader.cc
++++ b/zypp/target/rpm/RpmHeader.cc
+@@ -230,10 +230,12 @@ RpmHeader::constPtr RpmHeader::readPackage( const Pathname & path_r,
+   librpmDb::globalInit();
+   rpmts ts = ::rpmtsCreate();
+   unsigned vsflag = RPMVSF_DEFAULT;
++#if !defined(_RPM_5)
+   if ( verification_r & NODIGEST )
+     vsflag |= _RPMVSF_NODIGESTS;
+   if ( verification_r & NOSIGNATURE )
+     vsflag |= _RPMVSF_NOSIGNATURES;
++#endif
+   ::rpmtsSetVSFlags( ts, rpmVSFlags(vsflag) );
+ 
+   Header nh = 0;
diff --git a/meta/recipes-extended/libzypp/libzypp_git.bb b/meta/recipes-extended/libzypp/libzypp_git.bb
index 3c3a9f0..c5761d5 100644
--- a/meta/recipes-extended/libzypp/libzypp_git.bb
+++ b/meta/recipes-extended/libzypp/libzypp_git.bb
@@ -11,7 +11,7 @@  DEPENDS  = "rpm boost curl libxml2 zlib sat-solver expat openssl udev libproxy"
 S = "${WORKDIR}/git"
 SRCREV = "15b6c52260bbc52b3d8e585e271b67e10cc7c433"
 PV = "0.0-git${SRCPV}"
-PR = "r20"
+PR = "r21"
 
 SRC_URI = "git://github.com/openSUSE/libzypp.git;protocol=git \
            file://no-doc.patch \
@@ -23,6 +23,7 @@  SRC_URI = "git://github.com/openSUSE/libzypp.git;protocol=git \
 	   file://fix_for_compile_wth_gcc-4.6.0.patch \
 	   file://hardcode-lib-fix.patch \
 	   file://close.patch \
+	   file://libzypp-rpm549.patch \
           "
 
 SRC_URI_append_mips = " file://mips-workaround-gcc-tribool-error.patch"