blob: 3a4121a4a555ef8b89648979f9ca050a85a0bd78 [file] [log] [blame]
Primiano Tuccid7750452017-09-29 14:38:51 +01001#!/usr/bin/env python
2# Copyright (C) 2017 The Android Open Source Project
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15
16import argparse
17import os
18import shutil
19import sys
20
21
22def Main():
23 parser = argparse.ArgumentParser()
24 parser.add_argument('--verbose', '-v', action='store_true')
25 parser.add_argument('--pid', help='(optional) save pid into given file')
Primiano Tuccid7750452017-09-29 14:38:51 +010026 args = parser.parse_args()
27
28 root_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
Primiano Tuccie7ca7c62018-04-07 08:28:03 +020029
30 if sys.platform.startswith('linux'):
31 emulator_root = os.path.join(
32 root_dir, 'buildtools', 'emulator', 'linux-x86_64')
33 emulator_path = os.path.join(emulator_root, 'qemu', 'linux-x86_64')
34 else:
35 emulator_root = os.path.join(
36 root_dir, 'buildtools', 'emulator', 'darwin-x86_64')
37 emulator_path = os.path.join(emulator_root, 'qemu', 'darwin-x86_64')
38
Lalit Maganti367fcd52018-02-05 16:06:13 +000039 aosp_path = os.path.join(root_dir, 'buildtools', 'aosp-arm')
Primiano Tuccid7750452017-09-29 14:38:51 +010040
Primiano Tuccid7750452017-09-29 14:38:51 +010041 env = {
42 # Travis CI doesn't set this and causes the emulator to fallback in
43 # 32-bit mode with a "Cannot decide host bitness because $SHELL" error.
44 'SHELL': '/bin/bash',
Lalit Maganti367fcd52018-02-05 16:06:13 +000045 'LD_LIBRARY_PATH': os.path.join(emulator_root, 'lib64', 'qt', 'lib'),
Primiano Tuccie7ca7c62018-04-07 08:28:03 +020046 'DYLD_LIBRARY_PATH': os.path.join(emulator_root, 'lib64', 'qt', 'lib'),
Primiano Tuccid7750452017-09-29 14:38:51 +010047 }
Lalit Maganti367fcd52018-02-05 16:06:13 +000048 emulator_bin = os.path.join(emulator_path, 'qemu-system-armel')
49 emulator_args = ['-no-window', '-no-snapshot', '-gpu', 'off', '-no-accel',
50 '-sysdir', aosp_path,
51 '-system', os.path.join(aosp_path, 'system-qemu.img'),
52 '-kernel', os.path.join(aosp_path, 'kernel-ranchu'),
53 '-ramdisk', os.path.join(aosp_path, 'ramdisk.img'),
54 '-vendor', os.path.join(aosp_path, 'vendor-qemu.img'),
55 '-data', os.path.join(aosp_path, 'userdata-qemu.img')]
Primiano Tuccid7750452017-09-29 14:38:51 +010056 print '\n'.join('='.join(x) for x in env.items())
57 print ' '.join([emulator_bin] + emulator_args)
58 if args.pid:
59 with open(args.pid, 'w') as f:
60 f.write(str(os.getpid()))
61 os.execve(emulator_bin, [emulator_bin] + emulator_args, env)
62
63
64if __name__ == '__main__':
65 sys.exit(Main())