зеркало из https://github.com/mozilla/gecko-dev.git
88 строки
3.3 KiB
Python
88 строки
3.3 KiB
Python
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
|
|
import os
|
|
import platform
|
|
|
|
from emulator import Emulator
|
|
|
|
|
|
class B2GEmulator(Emulator):
|
|
|
|
def __init__(self, homedir=None, noWindow=False, logcat_dir=None, arch="x86",
|
|
emulatorBinary=None, res='480x800', userdata=None,
|
|
memory='512', partition_size='512'):
|
|
super(B2GEmulator, self).__init__(noWindow=noWindow, logcat_dir=logcat_dir,
|
|
arch=arch, emulatorBinary=emulatorBinary,
|
|
res=res, userdata=userdata,
|
|
memory=memory, partition_size=partition_size)
|
|
self.homedir = homedir
|
|
if self.homedir is not None:
|
|
self.homedir = os.path.expanduser(homedir)
|
|
|
|
def _check_file(self, filePath):
|
|
if not os.path.exists(filePath):
|
|
raise Exception(('File not found: %s; did you pass the B2G home '
|
|
'directory as the homedir parameter, or set '
|
|
'B2G_HOME correctly?') % filePath)
|
|
|
|
def _check_for_adb(self, host_dir):
|
|
if self._default_adb() == 0:
|
|
return
|
|
adb_paths = [os.path.join(self.homedir,'glue','gonk','out','host',
|
|
host_dir ,'bin','adb'),os.path.join(self.homedir, 'out',
|
|
'host', host_dir,'bin','adb'),os.path.join(self.homedir,
|
|
'bin','adb')]
|
|
for option in adb_paths:
|
|
if os.path.exists(option):
|
|
self.adb = option
|
|
return
|
|
raise Exception('adb not found!')
|
|
|
|
def _locate_files(self):
|
|
if self.homedir is None:
|
|
self.homedir = os.getenv('B2G_HOME')
|
|
if self.homedir is None:
|
|
raise Exception('Must define B2G_HOME or pass the homedir parameter')
|
|
self._check_file(self.homedir)
|
|
|
|
if self.arch not in ("x86", "arm"):
|
|
raise Exception("Emulator architecture must be one of x86, arm, got: %s" %
|
|
self.arch)
|
|
|
|
host_dir = "linux-x86"
|
|
if platform.system() == "Darwin":
|
|
host_dir = "darwin-x86"
|
|
|
|
host_bin_dir = os.path.join("out", "host", host_dir, "bin")
|
|
|
|
if self.arch == "x86":
|
|
binary = os.path.join(host_bin_dir, "emulator-x86")
|
|
kernel = "prebuilts/qemu-kernel/x86/kernel-qemu"
|
|
sysdir = "out/target/product/generic_x86"
|
|
self.tail_args = []
|
|
else:
|
|
binary = os.path.join(host_bin_dir, "emulator")
|
|
kernel = "prebuilts/qemu-kernel/arm/kernel-qemu-armv7"
|
|
sysdir = "out/target/product/generic"
|
|
self.tail_args = ["-cpu", "cortex-a8"]
|
|
|
|
self._check_for_adb(host_dir)
|
|
|
|
if not self.binary:
|
|
self.binary = os.path.join(self.homedir, binary)
|
|
|
|
self._check_file(self.binary)
|
|
|
|
self.kernelImg = os.path.join(self.homedir, kernel)
|
|
self._check_file(self.kernelImg)
|
|
|
|
self.sysDir = os.path.join(self.homedir, sysdir)
|
|
self._check_file(self.sysDir)
|
|
|
|
if not self.dataImg:
|
|
self.dataImg = os.path.join(self.sysDir, 'userdata.img')
|
|
self._check_file(self.dataImg)
|