Patchwork [1/2] classes/image: handle multilibs in complementary package lookup

login
register
mail settings
Submitter Mark Hatle
Date Dec. 14, 2012, 10:40 p.m.
Message ID <1355524834-9550-2-git-send-email-mark.hatle@windriver.com>
Download mbox | patch
Permalink /patch/41053/
State Accepted
Commit ff01518c6667e1b6e87df4e5a435a701d0f38fa7
Headers show

Comments

Mark Hatle - Dec. 14, 2012, 10:40 p.m.
From: Paul Eggleton <paul.eggleton@linux.intel.com>

For multilib the vendor string is altered, so we need to iterate over
all of the multilib vendors when we do the glob processing for
complementary packages.

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>

In addition, the RPM package arch have been munged by adding the multilib
identifier.  This identifier needs to be stripped when generating the
installed_packages list for the complementary lookup code to work.

Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
---
 meta/classes/image.bbclass       |   16 +++++++++++++++-
 meta/classes/package_rpm.bbclass |    5 ++++-
 2 files changed, 19 insertions(+), 2 deletions(-)

Patch

diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
index 1461144..8bf718a 100644
--- a/meta/classes/image.bbclass
+++ b/meta/classes/image.bbclass
@@ -113,6 +113,17 @@  python () {
             bb.fatal("%s contains conflicting IMAGE_FEATURES %s %s" % (d.getVar('PN', True), feature, ' '.join(list(temp))))
 
     d.setVar('IMAGE_FEATURES', ' '.join(list(remain_features)))
+
+    # Ensure we have the vendor list for complementary package handling
+    ml_vendor_list = ""
+    multilibs = d.getVar('MULTILIBS', True) or ""
+    for ext in multilibs.split():
+        eext = ext.split(':')
+        if len(eext) > 1 and eext[0] == 'multilib':
+            localdata = bb.data.createCopy(d)
+            vendor = localdata.getVar("TARGET_VENDOR_virtclass-multilib-" + eext[1], False)
+            ml_vendor_list += " " + vendor
+    d.setVar('MULTILIB_VENDORS', ml_vendor_list)
 }
 
 python image_handler () {
@@ -357,7 +368,10 @@  rootfs_install_complementary() {
 
     if [ "$GLOBS" != "" ] ; then
         # Use the magic script to do all the work for us :)
-        oe-pkgdata-util glob ${TMPDIR}/pkgdata ${TARGET_VENDOR}-${TARGET_OS} ${WORKDIR}/installed_pkgs.txt "$GLOBS" > ${WORKDIR}/complementary_pkgs.txt
+        : > ${WORKDIR}/complementary_pkgs.txt
+        for vendor in ${TARGET_VENDOR} ${MULTILIB_VENDORS} ; do
+            oe-pkgdata-util glob ${TMPDIR}/pkgdata $vendor-${TARGET_OS} ${WORKDIR}/installed_pkgs.txt "$GLOBS" >> ${WORKDIR}/complementary_pkgs.txt
+        done
 
         # Install the packages, if any
         sed -i '/^$/d' ${WORKDIR}/complementary_pkgs.txt
diff --git a/meta/classes/package_rpm.bbclass b/meta/classes/package_rpm.bbclass
index a00b702..05108b2 100644
--- a/meta/classes/package_rpm.bbclass
+++ b/meta/classes/package_rpm.bbclass
@@ -99,8 +99,11 @@  translate_smart_to_oe() {
 				if [ "$arch" = "$cmp_arch" -o "$fixed_arch" = "$cmp_arch" ]; then
 					if [ "$mlib" = "default" ]; then
 						new_pkg="$pkg"
+						new_arch=$cmp_arch
 					else
 						new_pkg="$mlib-$pkg"
+						# We need to strip off the ${mlib}_ prefix on the arch
+						new_arch=${cmp_arch#${mlib}_}
 					fi
 					# Workaround for bug 3565
 					# Simply look to see if we know of a package with that name, if not try again!
@@ -121,7 +124,7 @@  translate_smart_to_oe() {
 
 		#echo "$pkg -> $new_pkg" >&2
 		if [ "$arg1" = "arch" ]; then
-			echo $new_pkg $cmp_arch $other
+			echo $new_pkg $new_arch $other
 		else
 			echo $new_pkg $other
 		fi