Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(47)

Unified Diff: sky/tools/skydb

Issue 880143002: Remove skydb dependency on build/android/pylib (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sky/tools/android_library_cacher.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sky/tools/skydb
diff --git a/sky/tools/skydb b/sky/tools/skydb
index 602b0372068a309035b8099a8242c09039a40aa6..66023c96dd68a7fdcf0d609abb24d0f3f2801e37 100755
--- a/sky/tools/skydb
+++ b/sky/tools/skydb
@@ -19,13 +19,6 @@ import sys
import time
import urlparse
-SRC_ROOT = skypy.paths.Paths('ignored').src_root
-sys.path.insert(0, os.path.join(SRC_ROOT, 'build', 'android'))
-from pylib import android_commands
-from pylib import constants
-from pylib import forwarder
-
-
SUPPORTED_MIME_TYPES = [
'text/html',
'text/sky',
@@ -35,15 +28,20 @@ SUPPORTED_MIME_TYPES = [
DEFAULT_SKY_COMMAND_PORT = 7777
GDB_PORT = 8888
SKY_SERVER_PORT = 9999
-PID_FILE_PATH = "/tmp/skydb.pids"
DEFAULT_URL = "https://raw.githubusercontent.com/domokit/mojo/master/sky/examples/home.sky"
ANDROID_PACKAGE = "org.chromium.mojo.shell"
ANDROID_ACTIVITY = "%s/.MojoShellActivity" % ANDROID_PACKAGE
ANDROID_APK_NAME = 'MojoShell.apk'
+
+PID_FILE_PATH = "/tmp/skydb.pids"
CACHE_LINKS_PATH = '/tmp/mojo_cache_links'
SYSTEM_LIBS_ROOT_PATH = '/tmp/device_libs'
+SRC_ROOT = skypy.paths.Paths('ignored').src_root
+ADB_PATH = os.path.join(SRC_ROOT,
+ 'third_party/android_tools/sdk/platform-tools/adb')
+
# FIXME: Move this into mopy.config
def gn_args_from_build_dir(build_dir):
@@ -85,7 +83,7 @@ class SkyDebugger(object):
# (to embed a comma into a string escape it using "\,")
escaped_args = map(lambda arg: arg.replace(',', '\\,'), shell_args)
return [
- 'adb', 'shell',
+ ADB_PATH, 'shell',
'am', 'start',
'-W',
'-S',
@@ -111,6 +109,10 @@ class SkyDebugger(object):
'mojo:window_manager',
]
+ if args.url_or_path:
+ shell_args.append(
+ '--args-for=mojo:window_manager %s' % self._url_from_args(args))
+
# Map all mojo: urls to http: urls using the --origin command.
build_dir_url = SkyServer.url_for_path(
remote_server_port,
@@ -133,12 +135,6 @@ class SkyDebugger(object):
return shell_command
- def _connect_to_device(self):
- device = android_commands.AndroidCommands(
- android_commands.GetAttachedDevices()[0])
- device.EnableAdbRoot()
- return device
-
def sky_server_for_args(self, args):
# FIXME: This is a hack. sky_server should just take a build_dir
# not a magical "configuration" name.
@@ -155,7 +151,7 @@ class SkyDebugger(object):
return skypy.paths.Paths(root_relative_build_dir)
def _find_remote_pid_for_package(self, package):
- ps_output = subprocess.check_output(['adb', 'shell', 'ps'])
+ ps_output = subprocess.check_output([ADB_PATH, 'shell', 'ps'])
for line in ps_output.split('\n'):
fields = line.split()
if fields and fields[-1] == package:
@@ -163,7 +159,7 @@ class SkyDebugger(object):
return None
def _find_install_location_for_package(self, package):
- pm_command = ['adb', 'shell', 'pm', 'path', package]
+ pm_command = [ADB_PATH, 'shell', 'pm', 'path', package]
pm_output = subprocess.check_output(pm_command)
# e.g. package:/data/app/org.chromium.mojo.shell-1/base.apk
return pm_output.split(':')[-1]
@@ -193,25 +189,20 @@ class SkyDebugger(object):
self.pids['sky_command_port'] = args.command_port
if is_android:
- # Pray to the build/android gods in their misspelled tongue.
- constants.SetOutputDirectort(self.paths.build_dir)
-
# We could make installing conditional on an argument.
apk_path = os.path.join(self.paths.build_dir, 'apks',
ANDROID_APK_NAME)
- subprocess.check_call(['adb', 'install', '-r', apk_path])
-
- device = self._connect_to_device()
- self.pids['device_serial'] = device.GetDevice()
+ subprocess.check_call([ADB_PATH, 'install', '-r', apk_path])
- forwarder.Forwarder.Map([(0, sky_server.port)], device)
- device_http_port = forwarder.Forwarder.DevicePortForHostPort(
- sky_server.port)
- self.pids['remote_sky_server_port'] = device_http_port
+ port_string = 'tcp:%s' % sky_server.port
+ subprocess.check_call([
+ ADB_PATH, 'reverse', port_string, port_string
+ ])
+ self.pids['remote_sky_server_port'] = sky_server.port
port_string = 'tcp:%s' % args.command_port
subprocess.check_call([
- 'adb', 'forward', port_string, port_string
+ ADB_PATH, 'forward', port_string, port_string
])
self.pids['remote_sky_command_port'] = args.command_port
@@ -251,7 +242,7 @@ class SkyDebugger(object):
gdb_server_path = os.path.join(
os.path.dirname(package_path), 'lib/arm/gdbserver')
gdbserver_cmd = [
- 'adb', 'shell',
+ ADB_PATH, 'shell',
gdb_server_path, '--attach',
':%d' % GDB_PORT,
str(self.pids['mojo_shell_pid'])
@@ -262,7 +253,7 @@ class SkyDebugger(object):
port_string = 'tcp:%d' % GDB_PORT
subprocess.check_call([
- 'adb', 'forward', port_string, port_string
+ ADB_PATH, 'forward', port_string, port_string
])
self.pids['remote_gdbserver_port'] = GDB_PORT
@@ -270,10 +261,11 @@ class SkyDebugger(object):
if not self._wait_for_sky_command_port():
logging.error('Failed to start sky')
self.stop_command(None)
- else:
- self.load_command(args)
else:
- print 'No load issued, connect with gdb first and then run load.'
+ # We could just run gdb_attach_command here, but when I do that
+ # it auto-suspends in my zsh. Unclear why.
+ # self.gdb_attach_command(args)
+ print "Run skydb gdb_attach to attach."
def _kill_if_exists(self, key, name):
pid = self.pids.pop(key, None)
@@ -292,19 +284,17 @@ class SkyDebugger(object):
self._kill_if_exists('sky_server_pid', 'sky_server')
- # We could be much more surgical here:
if 'remote_sky_server_port' in self.pids:
- device = android_commands.AndroidCommands(
- self.pids['device_serial'])
- forwarder.Forwarder.UnmapAllDevicePorts(device)
+ port_string = 'tcp:%s' % self.pids['remote_sky_server_port']
+ subprocess.call([ADB_PATH, 'reverse', '--remove', port_string])
if 'remote_sky_command_port' in self.pids:
# adb forward --remove takes the *host* port, not the remote port.
port_string = 'tcp:%s' % self.pids['sky_command_port']
- subprocess.call(['adb', 'forward', '--remove', port_string])
+ subprocess.call([ADB_PATH, 'forward', '--remove', port_string])
subprocess.call([
- 'adb', 'shell', 'am', 'force-stop', ANDROID_PACKAGE])
+ ADB_PATH, 'shell', 'am', 'force-stop', ANDROID_PACKAGE])
else:
# Only try to kill mojo_shell if it's running locally.
self._kill_if_exists('mojo_shell_pid', 'mojo_shell')
@@ -314,19 +304,20 @@ class SkyDebugger(object):
'adb shell gdbserver')
port_string = 'tcp:%s' % self.pids['remote_gdbserver_port']
- subprocess.call(['adb', 'forward', '--remove', port_string])
+ subprocess.call([ADB_PATH, 'forward', '--remove', port_string])
self.pids = {} # Clear out our pid file.
+ def _url_from_args(self, args):
+ if urlparse.urlparse(args.url_or_path).scheme:
+ return args.url_or_path
+ # The load happens on the remote device, use the remote port.
+ remote_sky_server_port = self.pids.get('remote_sky_server_port',
+ self.pids['sky_server_port'])
+ return SkyServer.url_for_path(remote_sky_server_port,
+ self.pids['sky_server_root'], args.url_or_path)
+
def load_command(self, args):
- if not urlparse.urlparse(args.url_or_path).scheme:
- # The load happens on the remote device, use the remote port.
- remote_sky_server_port = self.pids.get('remote_sky_server_port',
- self.pids['sky_server_port'])
- url = SkyServer.url_for_path(remote_sky_server_port,
- self.pids['sky_server_root'], args.url_or_path)
- else:
- url = args.url_or_path
- self._run_basic_command('/load', url)
+ self._run_basic_command('/load', self._url_from_args(args))
def _read_mojo_map(self):
# TODO(eseidel): Does not work for android.
@@ -437,7 +428,7 @@ class SkyDebugger(object):
'MojoShellApplication',
'chromium',
]
- subprocess.call(['adb', 'logcat', '-d', '-s'] + TAGS)
+ subprocess.call([ADB_PATH, 'logcat', '-d', '-s'] + TAGS)
def _pull_system_libraries(self, system_libs_root):
# Pull down the system libraries this pid has already mapped in.
@@ -506,7 +497,7 @@ class SkyDebugger(object):
eval_commands.append(
'set solib-search-path %s' % ':'.join(symbol_search_paths))
- exec_command = ['/usr/bin/strace', '-o', 'trace.txt', gdb_path]
+ exec_command = [gdb_path]
for command in eval_commands:
exec_command += ['--eval-command', command]
@@ -519,7 +510,7 @@ class SkyDebugger(object):
os.execv(exec_command[0], exec_command)
def print_crash_command(self, args):
- logcat_cmd = ['adb', 'logcat', '-d']
+ logcat_cmd = [ADB_PATH, 'logcat', '-d']
logcat = subprocess.Popen(logcat_cmd, stdout=subprocess.PIPE)
stack_path = os.path.join(SRC_ROOT,
« no previous file with comments | « sky/tools/android_library_cacher.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698