[oe-commits] Richard Purdie : qemu/libc-package: Fix qemu option handling

git at git.openembedded.org git at git.openembedded.org
Fri Dec 5 18:02:02 UTC 2014


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

Author: Richard Purdie <richard.purdie at linuxfoundation.org>
Date:   Thu Dec  4 19:49:19 2014 +0000

qemu/libc-package: Fix qemu option handling

The 'overrides' here are PACKAGE_ARCH based and hence not overrides
as such and the _append wasn't working in many cases. This adjusts the
code to use PACKAGE_ARCH as the accessor and ensures the variables
work as expected. This fixes various segfaults and ensures postinsts
run at build time rather than on the target system.

The bug was introduced in http://git.yoctoproject.org/cgit.cgi/poky/commit/?id=7efad8a1b56df6ee07c12ad360c0493d7b1d6d23.

Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
Signed-off-by: Ross Burton <ross.burton at intel.com>

---

 meta/classes/libc-package.bbclass                  |  4 +--
 meta/classes/qemu.bbclass                          | 29 ++++++++++++----------
 .../recipes-devtools/qemu/qemuwrapper-cross_1.0.bb |  2 +-
 3 files changed, 18 insertions(+), 17 deletions(-)

diff --git a/meta/classes/libc-package.bbclass b/meta/classes/libc-package.bbclass
index c1bc399..eb76ff9 100644
--- a/meta/classes/libc-package.bbclass
+++ b/meta/classes/libc-package.bbclass
@@ -298,9 +298,7 @@ python package_do_split_gconvs () {
                 --inputfile=%s/i18n/locales/%s --charmap=%s %s" \
                 % (treedir, datadir, locale, encoding, name)
 
-            qemu_options = d.getVar("QEMU_OPTIONS_%s" % d.getVar('PACKAGE_ARCH', True), True)
-            if not qemu_options:
-                qemu_options = d.getVar('QEMU_OPTIONS', True)
+            qemu_options = d.getVar('QEMU_OPTIONS', True)
 
             cmd = "PSEUDO_RELOADED=YES PATH=\"%s\" I18NPATH=\"%s\" %s -L %s \
                 -E LD_LIBRARY_PATH=%s %s %s/bin/localedef %s" % \
diff --git a/meta/classes/qemu.bbclass b/meta/classes/qemu.bbclass
index b2cf85d..601f587 100644
--- a/meta/classes/qemu.bbclass
+++ b/meta/classes/qemu.bbclass
@@ -29,20 +29,23 @@ def qemu_run_binary(data, rootfs_path, binary):
 
     libdir = rootfs_path + data.getVar("libdir", False)
     base_libdir = rootfs_path + data.getVar("base_libdir", False)
-    oldest_kernel = data.getVar("OLDEST_KERNEL", True)
+    qemu_options = data.getVar("QEMU_OPTIONS", True)
 
-    return "PSEUDO_UNLOAD=1 " + qemu_binary + " -r " + oldest_kernel + " -L " + rootfs_path\
+    return "PSEUDO_UNLOAD=1 " + qemu_binary + " " + qemu_options + " -L " + rootfs_path\
             + " -E LD_LIBRARY_PATH=" + libdir + ":" + base_libdir + " "\
             + rootfs_path + binary
 
-QEMU_OPTIONS = "-r ${OLDEST_KERNEL}"
-QEMU_OPTIONS_append_iwmmxt    = " -cpu pxa270-c5"
-QEMU_OPTIONS_append_armv6     = " -cpu arm1136"
-QEMU_OPTIONS_append_armv7a    = " -cpu cortex-a8"
-QEMU_OPTIONS_append_e500v2    = " -cpu e500v2"
-QEMU_OPTIONS_append_e500mc    = " -cpu e500mc"
-QEMU_OPTIONS_append_e5500     = " -cpu e5500"
-QEMU_OPTIONS_append_e5500-64b = " -cpu e5500"
-QEMU_OPTIONS_append_e6500     = " -cpu e6500"
-QEMU_OPTIONS_append_e6500-64b = " -cpu e6500"
-QEMU_OPTIONS_append_ppc7400   = " -cpu 7400"
+# QEMU_EXTRAOPTIONS is not meant to be directly used, the extensions are 
+# PACKAGE_ARCH, not overrides and hence have to do this dance. Simply being arch 
+# specific isn't good enough.
+QEMU_OPTIONS = "-r ${OLDEST_KERNEL} ${@d.getVar("QEMU_EXTRAOPTIONS_%s" % d.getVar('PACKAGE_ARCH', True), True) or ""}"
+QEMU_EXTRAOPTIONS_iwmmxt    = " -cpu pxa270-c5"
+QEMU_EXTRAOPTIONS_armv6     = " -cpu arm1136"
+QEMU_EXTRAOPTIONS_armv7a    = " -cpu cortex-a8"
+QEMU_EXTRAOPTIONS_e500v2    = " -cpu e500v2"
+QEMU_EXTRAOPTIONS_e500mc    = " -cpu e500mc"
+QEMU_EXTRAOPTIONS_e5500     = " -cpu e5500"
+QEMU_EXTRAOPTIONS_e5500-64b = " -cpu e5500"
+QEMU_EXTRAOPTIONS_e6500     = " -cpu e6500"
+QEMU_EXTRAOPTIONS_e6500-64b = " -cpu e6500"
+QEMU_EXTRAOPTIONS_ppc7400   = " -cpu 7400"
diff --git a/meta/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb b/meta/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb
index d2981b5..959cd6f 100644
--- a/meta/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb
+++ b/meta/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb
@@ -9,7 +9,7 @@ do_install () {
 
 	echo "#!/bin/sh" > ${D}${bindir_crossscripts}/qemuwrapper
 	qemu_binary=${@qemu_target_binary(d)}
-	qemu_options='${@d.getVar("QEMU_OPTIONS_%s" % d.getVar('PACKAGE_ARCH', True), True) or d.getVar('QEMU_OPTIONS', True) or ""}'
+	qemu_options='${QEMU_OPTIONS}'
 	echo "$qemu_binary $qemu_options \"\$@\"" >> ${D}${bindir_crossscripts}/qemuwrapper
 	fallback_qemu_bin=
 	case $qemu_binary in



More information about the Openembedded-commits mailing list