package_rpm: Add capability to directly query packageorigin
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. (From OE-Core rev: a8ff3141fd78442bf328c9d3a489db88ad27486b) Signed-off-by: Mark Hatle <mark.hatle@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
b81d788c79
commit
75c302ca80
|
@ -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
|
||||
|
||||
|
|
|
@ -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);
|
|
@ -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"
|
||||
|
|
Loading…
Reference in New Issue