diff options
-rw-r--r-- | meta/classes/package_rpm.bbclass | 18 | ||||
-rw-r--r-- | meta/recipes-devtools/rpm/rpm/rpm-packageorigin.patch | 23 | ||||
-rw-r--r-- | meta/recipes-devtools/rpm/rpm_5.4.9.bb | 3 |
3 files changed, 34 insertions, 10 deletions
diff --git a/meta/classes/package_rpm.bbclass b/meta/classes/package_rpm.bbclass index 35928abb91..097fa1227a 100644 --- a/meta/classes/package_rpm.bbclass +++ b/meta/classes/package_rpm.bbclass @@ -130,12 +130,12 @@ resolve_package_rpm () { shift local pkg_name="" for solve in `cat ${conffile}`; do - pkg_name=$(${RPM} -D "_dbpath $solve" -D "__dbi_txn create nofsync" -q --yaml $@ | grep -i 'Packageorigin' | cut -d : -f 2) - if [ -n "$pkg_name" ]; then + pkg_name=$(${RPM} -D "_dbpath $solve" -D "__dbi_txn create nofsync" -q --qf "%{packageorigin}\n" "$@" | grep -v "is not installed" || true) + if [ -n "$pkg_name" -a "$pkg_name" != "(none)" ]; then + echo $pkg_name break; fi done - echo $pkg_name } # rpm common command and options @@ -401,9 +401,9 @@ package_install_internal_rpm () { # Now that we have a solution, pull out a list of what to install... echo "Manifest: ${target_rootfs}/install/install.manifest" - ${RPM} -D "_dbpath ${target_rootfs}/install" -qa --yaml \ + ${RPM} -D "_dbpath ${target_rootfs}/install" -qa --qf "%{packageorigin}\n" \ -D "__dbi_txn create nofsync private" \ - | grep -i 'Packageorigin' | cut -d : -f 2 > ${target_rootfs}/install/install_solution.manifest + > ${target_rootfs}/install/install_solution.manifest touch ${target_rootfs}/install/install_multilib_solution.manifest @@ -421,9 +421,9 @@ package_install_internal_rpm () { # Now that we have a solution, pull out a list of what to install... echo "Manifest: ${target_rootfs}/install/install_multilib.manifest" - ${RPM} -D "_dbpath ${target_rootfs}/install" -qa --yaml \ + ${RPM} -D "_dbpath ${target_rootfs}/install" -qa --qf "%{packageorigin}\n" \ -D "__dbi_txn create nofsync private" \ - | grep -i 'Packageorigin' | cut -d : -f 2 > ${target_rootfs}/install/install_multilib_solution.manifest + > ${target_rootfs}/install/install_multilib_solution.manifest fi @@ -478,9 +478,9 @@ EOF -U --justdb --noscripts --notriggers --noparentdirs --nolinktos --ignoresize \ ${target_rootfs}/install/initial_install.manifest - ${RPM} -D "_dbpath ${target_rootfs}/initial" -qa --yaml \ + ${RPM} -D "_dbpath ${target_rootfs}/initial" -qa --qf "%{packageorigin}\n" \ -D "__dbi_txn create nofsync private" \ - | grep -i 'Packageorigin' | cut -d : -f 2 > ${target_rootfs}/install/initial_solution.manifest + > ${target_rootfs}/install/initial_solution.manifest rpm_update_pkg ${target_rootfs}/install/initial_solution.manifest diff --git a/meta/recipes-devtools/rpm/rpm/rpm-packageorigin.patch b/meta/recipes-devtools/rpm/rpm/rpm-packageorigin.patch new file mode 100644 index 0000000000..3c6dad4d50 --- /dev/null +++ b/meta/recipes-devtools/rpm/rpm/rpm-packageorigin.patch @@ -0,0 +1,23 @@ +Add the ability to query the packageorigin + +Written by jbj at rpm5.org + +Signed-off-by: Mark Hatle <mark.hatle@windriver.com> + +Index: rpm-5.4.8/rpmdb/hdrfmt.c +=================================================================== +--- rpm-5.4.8.orig/rpmdb/hdrfmt.c ++++ rpm-5.4.8/rpmdb/hdrfmt.c +@@ -2403,8 +2403,10 @@ static int pkgoriginTag(Header h, HE_t + int rc = 1; + + he->tag = RPMTAG_PACKAGEORIGIN; +- if (!headerGet(h, he, HEADERGET_NOEXTENSION) +- && (origin = headerGetOrigin(h)) != NULL) ++ /* XXX two sources for tag data: what search precedence? */ ++ if (headerGet(h, he, HEADERGET_NOEXTENSION)) ++ rc = 0; ++ else if ((origin = headerGetOrigin(h)) != NULL) + { + he->t = RPM_STRING_TYPE; + he->p.str = xstrdup(origin); diff --git a/meta/recipes-devtools/rpm/rpm_5.4.9.bb b/meta/recipes-devtools/rpm/rpm_5.4.9.bb index 2ca0f58ff0..a38a684ff4 100644 --- a/meta/recipes-devtools/rpm/rpm_5.4.9.bb +++ b/meta/recipes-devtools/rpm/rpm_5.4.9.bb @@ -43,7 +43,7 @@ LICENSE = "LGPLv2.1" LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1" DEPENDS = "libpcre attr acl popt ossp-uuid file" -PR = "r41" +PR = "r42" # 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... @@ -70,6 +70,7 @@ SRC_URI = "http://www.rpm5.org/files/rpm/rpm-5.4/rpm-5.4.9-0.20120508.src.rpm;ex file://rpm-macros.patch \ file://rpm-lua.patch \ file://rpm-ossp-uuid.patch \ + file://rpm-packageorigin.patch \ " SRC_URI[md5sum] = "60d56ace884340c1b3fcac6a1d58e768" |