summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Lock <joshua.g.lock@intel.com>2016-09-21 20:35:37 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-09-21 21:59:14 +0100
commita5adabe1414061d6864c5913dd5e66a4527838f1 (patch)
treed2ab5e4da7c91ed769c7a20d900f0feac6d92c8d
parente843b2d49a151c1fe0d2a7ba00c41d2a35775736 (diff)
downloadopenembedded-core-a5adabe1414061d6864c5913dd5e66a4527838f1.tar.gz
openembedded-core-a5adabe1414061d6864c5913dd5e66a4527838f1.tar.bz2
openembedded-core-a5adabe1414061d6864c5913dd5e66a4527838f1.zip
runqemu: try and guess qemu-system binary when MACHINE isn't set
Emulate some logic from the prior, shell based, version of runqemu to try and infer the correct setting for MACHINE from the kernel and rootfs filenames. Signed-off-by: Joshua Lock <joshua.g.lock@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rwxr-xr-xscripts/runqemu36
1 files changed, 36 insertions, 0 deletions
diff --git a/scripts/runqemu b/scripts/runqemu
index 5170d87570..591746f657 100755
--- a/scripts/runqemu
+++ b/scripts/runqemu
@@ -846,9 +846,45 @@ class BaseConfig(object):
self.set('ROOTFS_OPTIONS', self.rootfs_options)
+ def guess_qb_system(self):
+ """attempt to determine the appropriate qemu-system binary"""
+ mach = self.get('MACHINE')
+ if not mach:
+ search = '.*(qemux86-64|qemux86|qemuarm64|qemuarm|qemumips64|qemumips|qemuppc).*'
+ if self.rootfs:
+ match = re.match(search, self.rootfs)
+ if match:
+ mach = match.group(1)
+ elif self.kernel:
+ match = re.match(search, self.kernel)
+ if match:
+ mach = match.group(1)
+
+ if not mach:
+ return None
+
+ if mach == 'qemuarm':
+ qbsys = 'arm'
+ elif mach == 'qemuarm64':
+ qbsys = 'aarch64'
+ elif mach == 'qemux86':
+ qbsys = 'i386'
+ elif mach == 'qemux86-64':
+ qbsys = 'x86_64'
+ elif mach == 'qemuppc':
+ qbsys = 'ppc'
+ elif mach == 'qemumips':
+ qbsys = 'mips'
+ elif mach == 'qemumips64':
+ qbsys = 'mips64'
+
+ return 'qemu-system-%s' % qbsys
+
def setup_final(self):
qemu_system = self.get('QB_SYSTEM_NAME')
if not qemu_system:
+ qemu_system = self.guess_qb_system()
+ if not qemu_system:
raise Exception("Failed to boot, QB_SYSTEM_NAME is NULL!")
qemu_bin = '%s/%s' % (self.get('STAGING_BINDIR_NATIVE'), qemu_system)