<div>Hi Mark,</div><div> </div><div>this can be interesting for me. Please can you explain with an example what really this patch does?</div><div>Many thanks,</div><div>Giuseppe<br><br></div><div class="gmail_quote">2012/6/11 Mark Hatle <span dir="ltr"><<a href="mailto:mark.hatle@windriver.com" target="_blank">mark.hatle@windriver.com</a>></span><br>
<blockquote style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid" class="gmail_quote">Add functionality to RPM to directly query the packageorigin (path) from<br>
the resolver database, instead of having to do this via an indirect method.<br>
<br>
This results in a minor performance improvement.<br>
<br>
Signed-off-by: Mark Hatle <<a href="mailto:mark.hatle@windriver.com">mark.hatle@windriver.com</a>><br>
---<br>
meta/classes/package_rpm.bbclass | 18 +++++++-------<br>
.../rpm/rpm/rpm-packageorigin.patch | 23 ++++++++++++++++++++<br>
meta/recipes-devtools/rpm/<a href="http://rpm_5.4.9.bb" target="_blank">rpm_5.4.9.bb</a> | 3 +-<br>
3 files changed, 34 insertions(+), 10 deletions(-)<br>
create mode 100644 meta/recipes-devtools/rpm/rpm/rpm-packageorigin.patch<br>
<br>
diff --git a/meta/classes/package_rpm.bbclass b/meta/classes/package_rpm.bbclass<br>
index 35928ab..097fa12 100644<br>
--- a/meta/classes/package_rpm.bbclass<br>
+++ b/meta/classes/package_rpm.bbclass<br>
@@ -130,12 +130,12 @@ resolve_package_rpm () {<br>
shift<br>
local pkg_name=""<br>
for solve in `cat ${conffile}`; do<br>
- pkg_name=$(${RPM} -D "_dbpath $solve" -D "__dbi_txn create nofsync" -q --yaml $@ | grep -i 'Packageorigin' | cut -d : -f 2)<br>
- if [ -n "$pkg_name" ]; then<br>
+ pkg_name=$(${RPM} -D "_dbpath $solve" -D "__dbi_txn create nofsync" -q --qf "%{packageorigin}\n" "$@" | grep -v "is not installed" || true)<br>
+ if [ -n "$pkg_name" -a "$pkg_name" != "(none)" ]; then<br>
+ echo $pkg_name<br>
break;<br>
fi<br>
done<br>
- echo $pkg_name<br>
}<br>
<br>
# rpm common command and options<br>
@@ -401,9 +401,9 @@ package_install_internal_rpm () {<br>
<br>
# Now that we have a solution, pull out a list of what to install...<br>
echo "Manifest: ${target_rootfs}/install/install.manifest"<br>
- ${RPM} -D "_dbpath ${target_rootfs}/install" -qa --yaml \<br>
+ ${RPM} -D "_dbpath ${target_rootfs}/install" -qa --qf "%{packageorigin}\n" \<br>
-D "__dbi_txn create nofsync private" \<br>
- | grep -i 'Packageorigin' | cut -d : -f 2 > ${target_rootfs}/install/install_solution.manifest<br>
+ > ${target_rootfs}/install/install_solution.manifest<br>
<br>
touch ${target_rootfs}/install/install_multilib_solution.manifest<br>
<br>
@@ -421,9 +421,9 @@ package_install_internal_rpm () {<br>
<br>
# Now that we have a solution, pull out a list of what to install...<br>
echo "Manifest: ${target_rootfs}/install/install_multilib.manifest"<br>
- ${RPM} -D "_dbpath ${target_rootfs}/install" -qa --yaml \<br>
+ ${RPM} -D "_dbpath ${target_rootfs}/install" -qa --qf "%{packageorigin}\n" \<br>
-D "__dbi_txn create nofsync private" \<br>
- | grep -i 'Packageorigin' | cut -d : -f 2 > ${target_rootfs}/install/install_multilib_solution.manifest<br>
+ > ${target_rootfs}/install/install_multilib_solution.manifest<br>
<br>
fi<br>
<br>
@@ -478,9 +478,9 @@ EOF<br>
-U --justdb --noscripts --notriggers --noparentdirs --nolinktos --ignoresize \<br>
${target_rootfs}/install/initial_install.manifest<br>
<br>
- ${RPM} -D "_dbpath ${target_rootfs}/initial" -qa --yaml \<br>
+ ${RPM} -D "_dbpath ${target_rootfs}/initial" -qa --qf "%{packageorigin}\n" \<br>
-D "__dbi_txn create nofsync private" \<br>
- | grep -i 'Packageorigin' | cut -d : -f 2 > ${target_rootfs}/install/initial_solution.manifest<br>
+ > ${target_rootfs}/install/initial_solution.manifest<br>
<br>
rpm_update_pkg ${target_rootfs}/install/initial_solution.manifest<br>
<br>
diff --git a/meta/recipes-devtools/rpm/rpm/rpm-packageorigin.patch b/meta/recipes-devtools/rpm/rpm/rpm-packageorigin.patch<br>
new file mode 100644<br>
index 0000000..3c6dad4<br>
--- /dev/null<br>
+++ b/meta/recipes-devtools/rpm/rpm/rpm-packageorigin.patch<br>
@@ -0,0 +1,23 @@<br>
+Add the ability to query the packageorigin<br>
+<br>
+Written by jbj at <a href="http://rpm5.org" target="_blank">rpm5.org</a><br>
+<br>
+Signed-off-by: Mark Hatle <<a href="mailto:mark.hatle@windriver.com">mark.hatle@windriver.com</a>><br>
+<br>
+Index: rpm-5.4.8/rpmdb/hdrfmt.c<br>
+===================================================================<br>
+--- rpm-5.4.8.orig/rpmdb/hdrfmt.c<br>
++++ rpm-5.4.8/rpmdb/hdrfmt.c<br>
+@@ -2403,8 +2403,10 @@ static int pkgoriginTag(Header h, HE_t<br>
+ int rc = 1;<br>
+<br>
+ he->tag = RPMTAG_PACKAGEORIGIN;<br>
+- if (!headerGet(h, he, HEADERGET_NOEXTENSION)<br>
+- && (origin = headerGetOrigin(h)) != NULL)<br>
++ /* XXX two sources for tag data: what search precedence? */<br>
++ if (headerGet(h, he, HEADERGET_NOEXTENSION))<br>
++ rc = 0;<br>
++ else if ((origin = headerGetOrigin(h)) != NULL)<br>
+ {<br>
+ he->t = RPM_STRING_TYPE;<br>
+ he->p.str = xstrdup(origin);<br>
diff --git a/meta/recipes-devtools/rpm/<a href="http://rpm_5.4.9.bb" target="_blank">rpm_5.4.9.bb</a> b/meta/recipes-devtools/rpm/<a href="http://rpm_5.4.9.bb" target="_blank">rpm_5.4.9.bb</a><br>
index 2ca0f58..a38a684 100644<br>
--- a/meta/recipes-devtools/rpm/<a href="http://rpm_5.4.9.bb" target="_blank">rpm_5.4.9.bb</a><br>
+++ b/meta/recipes-devtools/rpm/<a href="http://rpm_5.4.9.bb" target="_blank">rpm_5.4.9.bb</a><br>
@@ -43,7 +43,7 @@ LICENSE = "LGPLv2.1"<br>
LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1"<br>
<br>
DEPENDS = "libpcre attr acl popt ossp-uuid file"<br>
-PR = "r41"<br>
+PR = "r42"<br>
<br>
# rpm2cpio is a shell script, which is part of the rpm src.rpm. It is needed<br>
# in order to extract the distribution SRPM into a format we can extract...<br>
@@ -70,6 +70,7 @@ SRC_URI = "<a href="http://www.rpm5.org/files/rpm/rpm-5.4/rpm-5.4.9-0.20120508.src.rpm;ex" target="_blank">http://www.rpm5.org/files/rpm/rpm-5.4/rpm-5.4.9-0.20120508.src.rpm;ex</a><br>
file://rpm-macros.patch \<br>
file://rpm-lua.patch \<br>
file://rpm-ossp-uuid.patch \<br>
+ file://rpm-packageorigin.patch \<br>
"<br>
<br>
SRC_URI[md5sum] = "60d56ace884340c1b3fcac6a1d58e768"<br>
<span class="HOEnZb"><font color="#888888">--<br>
1.7.3.4<br>
<br>
<br>
_______________________________________________<br>
Openembedded-core mailing list<br>
<a href="mailto:Openembedded-core@lists.openembedded.org">Openembedded-core@lists.openembedded.org</a><br>
<a href="http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core" target="_blank">http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core</a><br>
</font></span></blockquote></div><br>