[oe-commits] Paul Eggleton : classes/image: handle multilibs in complementary package lookup

git at git.openembedded.org git at git.openembedded.org
Wed Dec 19 17:53:50 UTC 2012


Module: openembedded-core.git
Branch: master
Commit: ff01518c6667e1b6e87df4e5a435a701d0f38fa7
URL:    http://git.openembedded.org/?p=openembedded-core.git&a=commit;h=ff01518c6667e1b6e87df4e5a435a701d0f38fa7

Author: Paul Eggleton <paul.eggleton at linux.intel.com>
Date:   Fri Dec 14 16:40:33 2012 -0600

classes/image: handle multilibs in complementary package lookup

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 at 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 at windriver.com>
Signed-off-by: Saul Wold <sgw at linux.intel.com>

---

 meta/classes/image.bbclass       |   16 +++++++++++++++-
 meta/classes/package_rpm.bbclass |    5 ++++-
 2 files changed, 19 insertions(+), 2 deletions(-)

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





More information about the Openembedded-commits mailing list