Patchwork [1/1] classes/rootfs_rpm: handle recommends in query functions

login
register
mail settings
Submitter Paul Eggleton
Date Dec. 22, 2011, 5:20 p.m.
Message ID <c87d0a54bb0e9eeea2395f4a2ee1f4d038d2b855.1324574345.git.paul.eggleton@linux.intel.com>
Download mbox | patch
Permalink /patch/17501/
State Accepted
Commit b6787f5d6e181d8c39cce7b050e261d1a1d1b075
Headers show

Comments

Paul Eggleton - Dec. 22, 2011, 5:20 p.m.
Implement list_package_recommends() for rpm, and filter out the
"suggests" (RPM's equivalent of recommends) in list_package_depends().

Respectively, these changes fix buildhistory handling of recommends for
RPM (so that they are included in the image graphs) and also prevents
failures during do_rootfs with buildhistory enabled if a recommend is
unsatisfied.

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
---
 meta/classes/rootfs_rpm.bbclass |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

Patch

diff --git a/meta/classes/rootfs_rpm.bbclass b/meta/classes/rootfs_rpm.bbclass
index 5fd45d7..966b074 100644
--- a/meta/classes/rootfs_rpm.bbclass
+++ b/meta/classes/rootfs_rpm.bbclass
@@ -174,7 +174,9 @@  get_package_filename() {
 list_package_depends() {
 	pkglist=`list_installed_packages`
 
-	for req in `${RPM_QUERY_CMD} -q --qf "[%{REQUIRES}\n]" $1`; do
+	# REQUIRE* lists "soft" requirements (which we know as recommends and RPM refers to
+	# as "suggests") so filter these out with the help of awk
+	for req in `${RPM_QUERY_CMD} -q --qf "[%{REQUIRENAME} %{REQUIREFLAGS}\n]" $1 | awk '{ if( and($2, 0x80000) == 0) print $1 }'`; do
 		if echo "$req" | grep -q "^rpmlib" ; then continue ; fi
 
 		realpkg=""
@@ -193,7 +195,7 @@  list_package_depends() {
 }
 
 list_package_recommends() {
-	:
+	${RPM_QUERY_CMD} -q --suggests $1
 }
 
 install_all_locales() {