[OE-core] [PATCH 4/9] package_rpm: Add capability to directly query packageorigin
Giuseppe Condorelli
giuseppe.condorelli at gmail.com
Wed Jun 13 08:03:54 UTC 2012
Hi Mark,
many thanks for the explanation.
Cheers,
Giuseppe
2012/6/12 Mark Hatle <mark.hatle at windriver.com>
> On 6/12/12 2:21 AM, Giuseppe Condorelli wrote:
>
>> Hi Mark,
>> this can be interesting for me. Please can you explain with an example
>> what
>> really this patch does?
>>
>
> 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.
>
> 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.
>
> The packageorigin is likely not useful to anyone, unless you are using it
> in conjunction w/ an associated package feed/resolver database.
>
> --Mark
>
> Many thanks,
>> Giuseppe
>>
>> 2012/6/11 Mark Hatle <mark.hatle at windriver.com <mailto:
>> mark.hatle at windriver.**com <mark.hatle at windriver.com>>>
>>
>>
>> Add functionality to RPM to directly query the packageorigin (path)
>> from
>> the resolver database, instead of having to do this via an indirect
>> method.
>>
>> This results in a minor performance improvement.
>>
>> Signed-off-by: Mark Hatle <mark.hatle at windriver.com
>> <mailto:mark.hatle at windriver.**com <mark.hatle at windriver.com>>>
>>
>> ---
>> meta/classes/package_rpm.**bbclass | 18 +++++++-------
>> .../rpm/rpm/rpm-packageorigin.**patch | 23 ++++++++++++++++++++
>> meta/recipes-devtools/rpm/rpm_**5.4.9.bb <http://rpm_5.4.9.bb> <
>> http://rpm_5.4.9.bb> | 3 +-
>>
>> 3 files changed, 34 insertions(+), 10 deletions(-)
>> create mode 100644 meta/recipes-devtools/rpm/rpm/**
>> rpm-packageorigin.patch
>>
>> diff --git a/meta/classes/package_rpm.**bbclass
>> b/meta/classes/package_rpm.**bbclass
>> index 35928ab..097fa12 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 0000000..3c6dad4
>> --- /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 <http://rpm5.org>
>>
>> +
>> +Signed-off-by: Mark Hatle <mark.hatle at windriver.com
>> <mailto:mark.hatle at windriver.**com <mark.hatle at 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/rp**m_5.4.9.bb<http://rpm_5.4.9.bb><
>> http://rpm_5.4.9.bb>
>> b/meta/recipes-devtools/rpm/rp**m_5.4.9.bb <http://rpm_5.4.9.bb> <
>> http://rpm_5.4.9.bb>
>> index 2ca0f58..a38a684 100644
>> --- a/meta/recipes-devtools/rpm/rp**m_5.4.9.bb <http://rpm_5.4.9.bb> <
>> http://rpm_5.4.9.bb>
>> +++ b/meta/recipes-devtools/rpm/rp**m_5.4.9.bb <http://rpm_5.4.9.bb> <
>> http://rpm_5.4.9.bb>
>>
>> @@ -43,7 +43,7 @@ LICENSE = "LGPLv2.1"
>> LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=**
>> 2d5025d4aa3495befef8f17206a5b0**a1"
>>
>> 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<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] = "**60d56ace884340c1b3fcac6a1d58e7**68"
>> --
>> 1.7.3.4
>>
>>
>> ______________________________**_________________
>> Openembedded-core mailing list
>> Openembedded-core at lists.**openembedded.org<Openembedded-core at lists.openembedded.org>
>> <mailto:Openembedded-core@**lists.openembedded.org<Openembedded-core at lists.openembedded.org>
>> >
>> http://lists.linuxtogo.org/**cgi-bin/mailman/listinfo/**
>> openembedded-core<http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core>
>>
>>
>>
>>
>>
>> ______________________________**_________________
>> Openembedded-core mailing list
>> Openembedded-core at lists.**openembedded.org<Openembedded-core at lists.openembedded.org>
>> http://lists.linuxtogo.org/**cgi-bin/mailman/listinfo/**openembedded-core<http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core>
>>
>
>
> ______________________________**_________________
> Openembedded-core mailing list
> Openembedded-core at lists.**openembedded.org<Openembedded-core at lists.openembedded.org>
> http://lists.linuxtogo.org/**cgi-bin/mailman/listinfo/**openembedded-core<http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20120613/18ee91dd/attachment-0002.html>
More information about the Openembedded-core
mailing list