| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 from skypy.skyserver import SkyServer | 6 from skypy.skyserver import SkyServer |
| 7 import argparse | 7 import argparse |
| 8 import json | 8 import json |
| 9 import logging | 9 import logging |
| 10 import os | 10 import os |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 119 self.pids['sky_server_root'], | 119 self.pids['sky_server_root'], |
| 120 self.pids['build_dir']) | 120 self.pids['build_dir']) |
| 121 shell_args += ['--origin=%s' % build_dir_url] | 121 shell_args += ['--origin=%s' % build_dir_url] |
| 122 | 122 |
| 123 # Desktop-only work-around for mojo crashing under chromoting. | 123 # Desktop-only work-around for mojo crashing under chromoting. |
| 124 if not is_android and args.use_osmesa: | 124 if not is_android and args.use_osmesa: |
| 125 shell_args.append( | 125 shell_args.append( |
| 126 '--args-for=mojo:native_viewport_service --use-osmesa') | 126 '--args-for=mojo:native_viewport_service --use-osmesa') |
| 127 | 127 |
| 128 if is_android and args.gdb: | 128 if is_android and args.gdb: |
| 129 shell_args.append('--wait_for_debugger') | 129 shell_args.append('--wait-for-debugger') |
| 130 | 130 |
| 131 if 'remote_sky_server_port' in self.pids: | 131 if 'remote_sky_server_port' in self.pids: |
| 132 shell_command = self._wrap_for_android(shell_args) | 132 shell_command = self._wrap_for_android(shell_args) |
| 133 else: | 133 else: |
| 134 shell_command = [self.paths.mojo_shell_path] + shell_args | 134 shell_command = [self.paths.mojo_shell_path] + shell_args |
| 135 | 135 |
| 136 return shell_command | 136 return shell_command |
| 137 | 137 |
| 138 def sky_server_for_args(self, args): | 138 def sky_server_for_args(self, args): |
| 139 # FIXME: This is a hack. sky_server should just take a build_dir | 139 # FIXME: This is a hack. sky_server should just take a build_dir |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 173 print "mojo_shell not found in build_dir '%s'" % args.build_dir | 173 print "mojo_shell not found in build_dir '%s'" % args.build_dir |
| 174 print "Are you sure you sure that's a valid build_dir location?" | 174 print "Are you sure you sure that's a valid build_dir location?" |
| 175 print "See skydb start --help for more info" | 175 print "See skydb start --help for more info" |
| 176 sys.exit(2) | 176 sys.exit(2) |
| 177 | 177 |
| 178 # FIXME: This is probably not the right way to compute is_android | 178 # FIXME: This is probably not the right way to compute is_android |
| 179 # from the build directory? | 179 # from the build directory? |
| 180 gn_args = gn_args_from_build_dir(self.paths.build_dir) | 180 gn_args = gn_args_from_build_dir(self.paths.build_dir) |
| 181 is_android = 'android_sdk_version' in gn_args | 181 is_android = 'android_sdk_version' in gn_args |
| 182 | 182 |
| 183 if is_android and args.gdb and not 'is_debug' in gn_args: |
| 184 # FIXME: We don't include gdbserver in the release APK... |
| 185 print "Cannot debug Release builds on Android" |
| 186 sys.exit(2) |
| 187 |
| 183 sky_server = self.sky_server_for_args(args) | 188 sky_server = self.sky_server_for_args(args) |
| 184 self.pids['sky_server_pid'] = sky_server.start() | 189 self.pids['sky_server_pid'] = sky_server.start() |
| 185 self.pids['sky_server_port'] = sky_server.port | 190 self.pids['sky_server_port'] = sky_server.port |
| 186 self.pids['sky_server_root'] = sky_server.root | 191 self.pids['sky_server_root'] = sky_server.root |
| 187 | 192 |
| 188 self.pids['build_dir'] = self.paths.build_dir | 193 self.pids['build_dir'] = self.paths.build_dir |
| 189 self.pids['sky_command_port'] = args.command_port | 194 self.pids['sky_command_port'] = args.command_port |
| 190 | 195 |
| 191 if is_android: | 196 if is_android: |
| 192 # We could make installing conditional on an argument. | 197 # We could make installing conditional on an argument. |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 258 self.pids['remote_gdbserver_port'] = GDB_PORT | 263 self.pids['remote_gdbserver_port'] = GDB_PORT |
| 259 | 264 |
| 260 if not args.gdb: | 265 if not args.gdb: |
| 261 if not self._wait_for_sky_command_port(): | 266 if not self._wait_for_sky_command_port(): |
| 262 logging.error('Failed to start sky') | 267 logging.error('Failed to start sky') |
| 263 self.stop_command(None) | 268 self.stop_command(None) |
| 264 else: | 269 else: |
| 265 # We could just run gdb_attach_command here, but when I do that | 270 # We could just run gdb_attach_command here, but when I do that |
| 266 # it auto-suspends in my zsh. Unclear why. | 271 # it auto-suspends in my zsh. Unclear why. |
| 267 # self.gdb_attach_command(args) | 272 # self.gdb_attach_command(args) |
| 268 print "Run skydb gdb_attach to attach." | 273 print "Run 'skydb gdb_attach' to attach." |
| 269 | 274 |
| 270 def _kill_if_exists(self, key, name): | 275 def _kill_if_exists(self, key, name): |
| 271 pid = self.pids.pop(key, None) | 276 pid = self.pids.pop(key, None) |
| 272 if not pid: | 277 if not pid: |
| 273 logging.info('No pid for %s, nothing to do.' % name) | 278 logging.info('No pid for %s, nothing to do.' % name) |
| 274 return | 279 return |
| 275 logging.info('Killing %s (%d).' % (name, pid)) | 280 logging.info('Killing %s (%d).' % (name, pid)) |
| 276 try: | 281 try: |
| 277 os.kill(pid, signal.SIGTERM) | 282 os.kill(pid, signal.SIGTERM) |
| 278 except OSError: | 283 except OSError: |
| (...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 589 load_parser.set_defaults(func=self.load_command) | 594 load_parser.set_defaults(func=self.load_command) |
| 590 | 595 |
| 591 args = parser.parse_args() | 596 args = parser.parse_args() |
| 592 args.func(args) | 597 args.func(args) |
| 593 | 598 |
| 594 self._write_pid_file(PID_FILE_PATH, self.pids) | 599 self._write_pid_file(PID_FILE_PATH, self.pids) |
| 595 | 600 |
| 596 | 601 |
| 597 if __name__ == '__main__': | 602 if __name__ == '__main__': |
| 598 SkyDebugger().main() | 603 SkyDebugger().main() |
| OLD | NEW |