From 9d26851ecbea2298185a0db30821d8c09ef892ce Mon Sep 17 00:00:00 2001 From: Eric Seidel Date: Tue, 7 Apr 2015 15:15:56 -0700 Subject: [PATCH] Fix sky_tool's calling of adb, and shelldb's analyze and stop Just silly fixes needed for our 4 copies of our python run script. R=ianh@google.com Review URL: https://codereview.chromium.org/1064983003 --- sdk/packages/sky/lib/sky_tool | 11 +++++++++++ tools/shelldb | 30 +++++++++++++++++++++++------- 2 files changed, 34 insertions(+), 7 deletions(-) diff --git a/sdk/packages/sky/lib/sky_tool b/sdk/packages/sky/lib/sky_tool index 7d0747083bd..f7b8b6f1164 100755 --- a/sdk/packages/sky/lib/sky_tool +++ b/sdk/packages/sky/lib/sky_tool @@ -209,8 +209,19 @@ class StopSky(object): class SkyShellRunner(object): + def _check_for_adb(self): + try: + subprocess.call([ADB_PATH, '--help']) + except OSError: + print "'adb' (from the Android SDK) not in $PATH, can't continue." + return False + return True + + def main(self): logging.basicConfig(level=logging.WARNING) + if not self._check_for_adb() + sys.exit(2) parser = argparse.ArgumentParser(description='Sky Demo Runner') subparsers = parser.add_subparsers(help='sub-command help') diff --git a/tools/shelldb b/tools/shelldb index ba5b1d1bd95..e63c176e4f2 100755 --- a/tools/shelldb +++ b/tools/shelldb @@ -9,6 +9,7 @@ import json import logging import os import re +import signal import subprocess import sys import time @@ -23,7 +24,7 @@ DEFAULT_URL = "sky://domokit.github.io/home" APK_NAME = 'SkyDemo.apk' ADB_PATH = os.path.join(SRC_ROOT, 'third_party/android_tools/sdk/platform-tools/adb') - +ANDROID_PACKAGE = "org.domokit.sky.demo" PID_FILE_PATH = "/tmp/skydemo.pids" PID_FILE_KEYS = frozenset([ @@ -69,6 +70,10 @@ class Pids(object): def clear(self): self._dict = {} + def pop(self, key, default=None): + assert key in self._known_keys, '%s not in allowed_keys' % key + return self._dict.pop(key, default) + @classmethod def read_from(cls, path, known_keys): contents = {} @@ -106,6 +111,13 @@ def _url_from_args(args, pids): return _convert_to_sky_url(url) +def dev_sdk_root(build_dir): + return os.path.join(build_dir, 'gen', 'sky_sdk') + +def dev_packages_root(build_dir): + return os.path.join(dev_sdk_root(build_dir), 'packages_root') + + class StartSky(object): def add_subparser(self, subparsers): start_parser = subparsers.add_parser('start', @@ -143,8 +155,8 @@ class StartSky(object): print "'%s' does not exist?" % apk_path return 2 - sdk_root = os.path.join(args.build_dir, 'gen', 'sky_sdk') - packages_root = os.path.join(sdk_root, 'packages_root') + sdk_root = dev_sdk_root(args.build_dir) + packages_root = dev_packages_root(args.build_dir) sky_tools_directory = os.path.join(SRC_ROOT, 'sky/tools') subprocess.check_call([ os.path.join(sky_tools_directory, 'deploy_sdk.py'), @@ -197,8 +209,8 @@ class StopSky(object): def run(self, args, pids): self._kill_if_exists(pids, 'sky_server_pid', 'sky_server') - if 'remote_sky_server_port' in self.pids: - port_string = 'tcp:%s' % self.pids['remote_sky_server_port'] + if 'remote_sky_server_port' in pids: + port_string = 'tcp:%s' % pids['remote_sky_server_port'] subprocess.call([ADB_PATH, 'reverse', '--remove', port_string]) subprocess.call([ @@ -215,9 +227,12 @@ class Analyze(object): analyze_parser.set_defaults(func=self.run) def run(self, args, pids): + build_dir = pids.get('build_dir') + if not build_dir: + logging.fatal("pids file missing build_dir. Try 'start' first.") + return 2 ANALYZER_PATH = 'third_party/dart-sdk/dart-sdk/bin/dartanalyzer' - build_dir = os.path.abspath(pids['build_dir']) bindings_path = os.path.join(build_dir, 'gen/sky/bindings') sky_builtin_path = \ os.path.join(SRC_ROOT, 'sky/engine/bindings/builtin.dart') @@ -225,9 +240,10 @@ class Analyze(object): analyzer_args = [ANALYZER_PATH, "--url-mapping=dart:sky,%s" % dart_sky_path, "--url-mapping=dart:sky_builtin,%s" % sky_builtin_path, + "--package-root", dev_packages_root(build_dir), args.app_path ] - subprocess.call(analyzer_args) + return subprocess.call(analyzer_args) class StartTracing(object): def add_subparser(self, subparsers):