]> code.ossystems Code Review - openembedded-core.git/commitdiff
qemu/libc-package: Fix qemu option handling
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Thu, 4 Dec 2014 19:49:19 +0000 (19:49 +0000)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Fri, 5 Dec 2014 17:59:42 +0000 (17:59 +0000)
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@linuxfoundation.org>
Signed-off-by: Ross Burton <ross.burton@intel.com>
meta/classes/libc-package.bbclass
meta/classes/qemu.bbclass
meta/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb

index c1bc399c1872475e03499202637b9fffa3a821f7..eb76ff953a820da9d2dbc2025834ba60fe3578e0 100644 (file)
@@ -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" % \
index b2cf85d628edde121482e589dfcf651ad2113265..601f5875341be69df29d1c98ff9ccf1a7fe35396 100644 (file)
@@ -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"
index d2981b5575883fc2c77426c548669bafe3b77525..959cd6fba0f54e72f45f594aaa2740442f82c835 100644 (file)
@@ -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