<div>Hi Mark,</div><div> </div><div>many thanks for the explanation.</div><div> </div><div>Cheers,</div><div>Giuseppe<br><br></div><div class="gmail_quote">2012/6/12 Mark Hatle <span dir="ltr">&lt;<a href="mailto:mark.hatle@windriver.com" target="_blank">mark.hatle@windriver.com</a>&gt;</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"><div class="im">On 6/12/12 2:21 AM, Giuseppe Condorelli wrote:<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">
Hi Mark,<br>
this can be interesting for me. Please can you explain with an example what<br>
really this patch does?<br>
</blockquote>
<br></div>
The resolver database is seeded with all of the items from the packagefeed. When you seed (install) a database, each entry gets a record of where the package file exists on the disk.  This is stored in the packageorigin field.  It is designed to be used by resolver systems.<br>

<br>
Before you could only query the packageorigin field if you were using raw RPM calls or using the --yaml export features.  We wanted to be able to query the file path from the resolver via the shell.  This patch added that ability.<br>

<br>
The packageorigin is likely not useful to anyone, unless you are using it in conjunction w/ an associated package feed/resolver database.<br>
<br>
--Mark<br>
<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">
Many thanks,<br>
Giuseppe<br>
<br>
2012/6/11 Mark Hatle &lt;<a href="mailto:mark.hatle@windriver.com" target="_blank">mark.hatle@windriver.com</a> &lt;mailto:<a href="mailto:mark.hatle@windriver.com" target="_blank">mark.hatle@windriver.<u></u>com</a>&gt;&gt;<div class="im">
<br>
<br>
    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 &lt;<a href="mailto:mark.hatle@windriver.com" target="_blank">mark.hatle@windriver.com</a><br></div>
    &lt;mailto:<a href="mailto:mark.hatle@windriver.com" target="_blank">mark.hatle@windriver.<u></u>com</a>&gt;&gt;<div class="im"><br>
    ---<br>
    meta/classes/package_rpm.<u></u>bbclass | 18 +++++++-------<br>
    .../rpm/rpm/rpm-packageorigin.<u></u>patch | 23 ++++++++++++++++++++<br></div>
    meta/recipes-devtools/rpm/<a href="http://rpm_5.4.9.bb" target="_blank">rpm_<u></u>5.4.9.bb</a> &lt;<a href="http://rpm_5.4.9.bb" target="_blank">http://rpm_5.4.9.bb</a>&gt; | 3 +-<div><div class="h5"><br>
    3 files changed, 34 insertions(+), 10 deletions(-)<br>
    create mode 100644 meta/recipes-devtools/rpm/rpm/<u></u>rpm-packageorigin.patch<br>
<br>
    diff --git a/meta/classes/package_rpm.<u></u>bbclass b/meta/classes/package_rpm.<u></u>bbclass<br>
    index 35928ab..097fa12 100644<br>
    --- a/meta/classes/package_rpm.<u></u>bbclass<br>
    +++ b/meta/classes/package_rpm.<u></u>bbclass<br>
    @@ -130,12 +130,12 @@ resolve_package_rpm () {<br>
    shift<br>
    local pkg_name=&quot;&quot;<br>
    for solve in `cat ${conffile}`; do<br>
    - pkg_name=$(${RPM} -D &quot;_dbpath $solve&quot; -D &quot;__dbi_txn create nofsync&quot; -q<br>
    --yaml $@ | grep -i &#39;Packageorigin&#39; | cut -d : -f 2)<br>
    - if [ -n &quot;$pkg_name&quot; ]; then<br>
    + pkg_name=$(${RPM} -D &quot;_dbpath $solve&quot; -D &quot;__dbi_txn create nofsync&quot; -q<br>
    --qf &quot;%{packageorigin}\n&quot; &quot;$@&quot; | grep -v &quot;is not installed&quot; || true)<br>
    + if [ -n &quot;$pkg_name&quot; -a &quot;$pkg_name&quot; != &quot;(none)&quot; ]; 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 &quot;Manifest: ${target_rootfs}/install/<u></u>install.manifest&quot;<br>
    - ${RPM} -D &quot;_dbpath ${target_rootfs}/install&quot; -qa --yaml \<br>
    + ${RPM} -D &quot;_dbpath ${target_rootfs}/install&quot; -qa --qf &quot;%{packageorigin}\n&quot; \<br>
    -D &quot;__dbi_txn create nofsync private&quot; \<br>
    - | grep -i &#39;Packageorigin&#39; | cut -d : -f 2 &gt;<br>
    ${target_rootfs}/install/<u></u>install_solution.manifest<br>
    + &gt; ${target_rootfs}/install/<u></u>install_solution.manifest<br>
<br>
    touch ${target_rootfs}/install/<u></u>install_multilib_solution.<u></u>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 &quot;Manifest: ${target_rootfs}/install/<u></u>install_multilib.manifest&quot;<br>
    - ${RPM} -D &quot;_dbpath ${target_rootfs}/install&quot; -qa --yaml \<br>
    + ${RPM} -D &quot;_dbpath ${target_rootfs}/install&quot; -qa --qf &quot;%{packageorigin}\n&quot; \<br>
    -D &quot;__dbi_txn create nofsync private&quot; \<br>
    - | grep -i &#39;Packageorigin&#39; | cut -d : -f 2 &gt;<br>
    ${target_rootfs}/install/<u></u>install_multilib_solution.<u></u>manifest<br>
    + &gt; ${target_rootfs}/install/<u></u>install_multilib_solution.<u></u>manifest<br>
<br>
    fi<br>
<br>
    @@ -478,9 +478,9 @@ EOF<br>
    -U --justdb --noscripts --notriggers --noparentdirs --nolinktos --ignoresize \<br>
    ${target_rootfs}/install/<u></u>initial_install.manifest<br>
<br>
    - ${RPM} -D &quot;_dbpath ${target_rootfs}/initial&quot; -qa --yaml \<br>
    + ${RPM} -D &quot;_dbpath ${target_rootfs}/initial&quot; -qa --qf &quot;%{packageorigin}\n&quot; \<br>
    -D &quot;__dbi_txn create nofsync private&quot; \<br>
    - | grep -i &#39;Packageorigin&#39; | cut -d : -f 2 &gt;<br>
    ${target_rootfs}/install/<u></u>initial_solution.manifest<br>
    + &gt; ${target_rootfs}/install/<u></u>initial_solution.manifest<br>
<br>
    rpm_update_pkg ${target_rootfs}/install/<u></u>initial_solution.manifest<br>
<br>
    diff --git a/meta/recipes-devtools/rpm/<u></u>rpm/rpm-packageorigin.patch<br>
    b/meta/recipes-devtools/rpm/<u></u>rpm/rpm-packageorigin.patch<br>
    new file mode 100644<br>
    index 0000000..3c6dad4<br>
    --- /dev/null<br>
    +++ b/meta/recipes-devtools/rpm/<u></u>rpm/rpm-packageorigin.patch<br>
    @@ -0,0 +1,23 @@<br>
    +Add the ability to query the packageorigin<br>
    +<br></div></div>
    +Written by jbj at <a href="http://rpm5.org" target="_blank">rpm5.org</a> &lt;<a href="http://rpm5.org" target="_blank">http://rpm5.org</a>&gt;<div class="im"><br>
    +<br>
    +Signed-off-by: Mark Hatle &lt;<a href="mailto:mark.hatle@windriver.com" target="_blank">mark.hatle@windriver.com</a><br></div>
    &lt;mailto:<a href="mailto:mark.hatle@windriver.com" target="_blank">mark.hatle@windriver.<u></u>com</a>&gt;&gt;<div class="im"><br>
    +<br>
    +Index: rpm-5.4.8/rpmdb/hdrfmt.c<br>
    +=============================<u></u>==============================<u></u>========<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-&gt;tag = RPMTAG_PACKAGEORIGIN;<br>
    +- if (!headerGet(h, he, HEADERGET_NOEXTENSION)<br>
    +- &amp;&amp; (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-&gt;t = RPM_STRING_TYPE;<br>
    + he-&gt;p.str = xstrdup(origin);<br></div>
    diff --git a/meta/recipes-devtools/rpm/<a href="http://rpm_5.4.9.bb" target="_blank">rp<u></u>m_5.4.9.bb</a> &lt;<a href="http://rpm_5.4.9.bb" target="_blank">http://rpm_5.4.9.bb</a>&gt;<br>
    b/meta/recipes-devtools/rpm/<a href="http://rpm_5.4.9.bb" target="_blank">rp<u></u>m_5.4.9.bb</a> &lt;<a href="http://rpm_5.4.9.bb" target="_blank">http://rpm_5.4.9.bb</a>&gt;<br>
    index 2ca0f58..a38a684 100644<br>
    --- a/meta/recipes-devtools/rpm/<a href="http://rpm_5.4.9.bb" target="_blank">rp<u></u>m_5.4.9.bb</a> &lt;<a href="http://rpm_5.4.9.bb" target="_blank">http://rpm_5.4.9.bb</a>&gt;<br>
    +++ b/meta/recipes-devtools/rpm/<a href="http://rpm_5.4.9.bb" target="_blank">rp<u></u>m_5.4.9.bb</a> &lt;<a href="http://rpm_5.4.9.bb" target="_blank">http://rpm_5.4.9.bb</a>&gt;<div class="im"><br>
    @@ -43,7 +43,7 @@ LICENSE = &quot;LGPLv2.1&quot;<br>
    LIC_FILES_CHKSUM = &quot;file://COPYING.LIB;md5=<u></u>2d5025d4aa3495befef8f17206a5b0<u></u>a1&quot;<br>
<br>
    DEPENDS = &quot;libpcre attr acl popt ossp-uuid file&quot;<br>
    -PR = &quot;r41&quot;<br>
    +PR = &quot;r42&quot;<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 =<br>
    &quot;<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/<u></u>rpm/rpm-5.4/rpm-5.4.9-0.<u></u>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>
    &quot;<br>
<br>
    SRC_URI[md5sum] = &quot;<u></u>60d56ace884340c1b3fcac6a1d58e7<u></u>68&quot;<br>
    --<br>
    1.7.3.4<br>
<br>
<br>
    ______________________________<u></u>_________________<br>
    Openembedded-core mailing list<br>
    <a href="mailto:Openembedded-core@lists.openembedded.org" target="_blank">Openembedded-core@lists.<u></u>openembedded.org</a><br></div>
    &lt;mailto:<a href="mailto:Openembedded-core@lists.openembedded.org" target="_blank">Openembedded-core@<u></u>lists.openembedded.org</a>&gt;<br>
    <a href="http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core" target="_blank">http://lists.linuxtogo.org/<u></u>cgi-bin/mailman/listinfo/<u></u>openembedded-core</a><div class="im"><br>
<br>
<br>
<br>
<br>
______________________________<u></u>_________________<br>
Openembedded-core mailing list<br>
<a href="mailto:Openembedded-core@lists.openembedded.org" target="_blank">Openembedded-core@lists.<u></u>openembedded.org</a><br>
<a href="http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core" target="_blank">http://lists.linuxtogo.org/<u></u>cgi-bin/mailman/listinfo/<u></u>openembedded-core</a><br>
</div></blockquote><div class="HOEnZb"><div class="h5">
<br>
<br>
______________________________<u></u>_________________<br>
Openembedded-core mailing list<br>
<a href="mailto:Openembedded-core@lists.openembedded.org" target="_blank">Openembedded-core@lists.<u></u>openembedded.org</a><br>
<a href="http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core" target="_blank">http://lists.linuxtogo.org/<u></u>cgi-bin/mailman/listinfo/<u></u>openembedded-core</a><br>
</div></div></blockquote></div><br>