| OLD | NEW |
| (Empty) |
| 1 #!/usr/bin/env python | |
| 2 # Copyright 2014 The Chromium Authors. All rights reserved. | |
| 3 # Use of this source code is governed by a BSD-style license that can be | |
| 4 # found in the LICENSE file. | |
| 5 | |
| 6 import argparse | |
| 7 import atexit | |
| 8 import logging | |
| 9 import os | |
| 10 import shutil | |
| 11 import sys | |
| 12 import tempfile | |
| 13 | |
| 14 sys.path.append(os.path.join(os.path.dirname(__file__), os.pardir, os.pardir, | |
| 15 os.pardir, 'build', 'android')) | |
| 16 from pylib import constants | |
| 17 | |
| 18 sys.path.insert(0, os.path.join(os.path.abspath(os.path.dirname(__file__)), | |
| 19 os.pardir, os.pardir, os.pardir, 'mojo', | |
| 20 'tools')) | |
| 21 | |
| 22 from mopy.android import AndroidShell | |
| 23 from mopy.config import Config | |
| 24 | |
| 25 USAGE = ('run_mandoline.py [<shell-and-app-args>] [<start-page-url>]') | |
| 26 | |
| 27 def _CreateSOLinks(dest_dir): | |
| 28 '''Creates links from files (eg. *.mojo) to the real .so for gdb to find.''' | |
| 29 # The files to create links for. The key is the name as seen on the device, | |
| 30 # and the target an array of path elements as to where the .so lives (relative | |
| 31 # to the output directory). | |
| 32 # TODO(sky): come up with some way to automate this. | |
| 33 files_to_link = { | |
| 34 'html_viewer.mojo': ['libhtml_viewer_library.so'], | |
| 35 'libmandoline_runner.so': ['mandoline_runner'], | |
| 36 } | |
| 37 build_dir = constants.GetOutDirectory() | |
| 38 print build_dir | |
| 39 for android_name, so_path in files_to_link.iteritems(): | |
| 40 src = os.path.join(build_dir, *so_path) | |
| 41 if not os.path.isfile(src): | |
| 42 print '*** Expected file not found', src | |
| 43 print '*** Aborting launch.' | |
| 44 sys.exit(-1) | |
| 45 os.symlink(src, os.path.join(dest_dir, android_name)) | |
| 46 | |
| 47 | |
| 48 def main(): | |
| 49 logging.basicConfig() | |
| 50 | |
| 51 parser = argparse.ArgumentParser(usage=USAGE) | |
| 52 | |
| 53 debug_group = parser.add_mutually_exclusive_group() | |
| 54 debug_group.add_argument('--debug', help='Debug build (default)', | |
| 55 default=True, action='store_true') | |
| 56 debug_group.add_argument('--release', help='Release build', default=False, | |
| 57 dest='debug', action='store_false') | |
| 58 parser.add_argument('--build-dir', help='Build directory') | |
| 59 parser.add_argument('--target-cpu', help='CPU architecture to run for.', | |
| 60 choices=['x64', 'x86', 'arm'], default='arm') | |
| 61 parser.add_argument('--device', help='Serial number of the target device.') | |
| 62 parser.add_argument('--gdb', help='Run gdb', | |
| 63 default=False, action='store_true') | |
| 64 runner_args, args = parser.parse_known_args() | |
| 65 | |
| 66 config = Config(build_dir=runner_args.build_dir, | |
| 67 target_os=Config.OS_ANDROID, | |
| 68 target_cpu=runner_args.target_cpu, | |
| 69 is_debug=runner_args.debug, | |
| 70 apk_name='Mandoline.apk') | |
| 71 shell = AndroidShell(config) | |
| 72 shell.InitShell(runner_args.device) | |
| 73 p = shell.ShowLogs() | |
| 74 | |
| 75 temp_gdb_dir = None | |
| 76 if runner_args.gdb: | |
| 77 temp_gdb_dir = tempfile.mkdtemp() | |
| 78 atexit.register(shutil.rmtree, temp_gdb_dir, True) | |
| 79 _CreateSOLinks(temp_gdb_dir) | |
| 80 | |
| 81 shell.StartActivity('MandolineActivity', | |
| 82 args, | |
| 83 sys.stdout, | |
| 84 p.terminate, | |
| 85 temp_gdb_dir) | |
| 86 return 0 | |
| 87 | |
| 88 | |
| 89 if __name__ == '__main__': | |
| 90 sys.exit(main()) | |
| OLD | NEW |