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

Side by Side Diff: sky/tools/shelldb

Issue 1145823002: Fix shelldb workflow (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 7 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 unified diff | Download patch
« no previous file with comments | « sky/sdk/lib/internals.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2015 The Chromium Authors. All rights reserved. 2 # Copyright 2015 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 17 matching lines...) Expand all
28 28
29 PID_FILE_PATH = "/tmp/skydemo.pids" 29 PID_FILE_PATH = "/tmp/skydemo.pids"
30 PID_FILE_KEYS = frozenset([ 30 PID_FILE_KEYS = frozenset([
31 'remote_sky_server_port', 31 'remote_sky_server_port',
32 'sky_server_pid', 32 'sky_server_pid',
33 'sky_server_port', 33 'sky_server_port',
34 'sky_server_root', 34 'sky_server_root',
35 'build_dir', 35 'build_dir',
36 ]) 36 ])
37 37
38 _IGNORED_PATTERNS = [
39 # Ignored because they're not indicative of specific errors.
40 re.compile(r'^$'),
41 re.compile(r'^Analyzing \['),
42 re.compile(r'^No issues found'),
43 re.compile(r'^[0-9]+ errors? and [0-9]+ warnings? found.'),
44 re.compile(r'^([0-9]+|No) (error|warning|issue)s? found.'),
45
46 # TODO: Remove once sdk-extensions are in place
47 re.compile(r'^\[error\] Native functions can only be declared in'),
48 # TODO: Remove this once dev SDK includes Uri.directory constructor.
49 re.compile(r'.*The class \'Uri\' does not have a constructor \'directory\''),
50 ]
51
38 # This 'strict dictionary' approach is useful for catching typos. 52 # This 'strict dictionary' approach is useful for catching typos.
39 class Pids(object): 53 class Pids(object):
40 def __init__(self, known_keys, contents=None): 54 def __init__(self, known_keys, contents=None):
41 self._known_keys = known_keys 55 self._known_keys = known_keys
42 self._dict = contents if contents is not None else {} 56 self._dict = contents if contents is not None else {}
43 57
44 def __len__(self): 58 def __len__(self):
45 return len(self._dict) 59 return len(self._dict)
46 60
47 def get(self, key, default=None): 61 def get(self, key, default=None):
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 if urlparse.urlparse(args.url_or_path).scheme: 118 if urlparse.urlparse(args.url_or_path).scheme:
105 return args.url_or_path 119 return args.url_or_path
106 # The load happens on the remote device, use the remote port. 120 # The load happens on the remote device, use the remote port.
107 remote_sky_server_port = pids.get('remote_sky_server_port', 121 remote_sky_server_port = pids.get('remote_sky_server_port',
108 pids['sky_server_port']) 122 pids['sky_server_port'])
109 url = SkyServer.url_for_path(remote_sky_server_port, 123 url = SkyServer.url_for_path(remote_sky_server_port,
110 pids['sky_server_root'], args.url_or_path) 124 pids['sky_server_root'], args.url_or_path)
111 return _convert_to_sky_url(url) 125 return _convert_to_sky_url(url)
112 126
113 127
114 def dev_sdk_root(build_dir):
115 return os.path.join(build_dir, 'gen', 'sky_sdk')
116
117 def dev_packages_root(build_dir): 128 def dev_packages_root(build_dir):
118 return os.path.join(dev_sdk_root(build_dir), 'packages_root') 129 return os.path.join(build_dir, 'gen', 'dart-pkg', 'packages')
119 130
120 131
121 class StartSky(object): 132 class StartSky(object):
122 def add_subparser(self, subparsers): 133 def add_subparser(self, subparsers):
123 start_parser = subparsers.add_parser('start', 134 start_parser = subparsers.add_parser('start',
124 help='launch SKyShell.apk on the device') 135 help='launch SKyShell.apk on the device')
125 start_parser.add_argument('build_dir', type=str) 136 start_parser.add_argument('build_dir', type=str)
126 start_parser.add_argument('url_or_path', nargs='?', type=str, 137 start_parser.add_argument('url_or_path', nargs='?', type=str,
127 default=DEFAULT_URL) 138 default=DEFAULT_URL)
128 start_parser.add_argument('--no_install', action="store_false", 139 start_parser.add_argument('--no_install', action="store_false",
(...skipping 19 matching lines...) Expand all
148 server_root = self._server_root_for_url(args.url_or_path) 159 server_root = self._server_root_for_url(args.url_or_path)
149 sky_server = SkyServer(SKY_SERVER_PORT, configuration, server_root, pack ages_root) 160 sky_server = SkyServer(SKY_SERVER_PORT, configuration, server_root, pack ages_root)
150 return sky_server 161 return sky_server
151 162
152 def run(self, args, pids): 163 def run(self, args, pids):
153 apk_path = os.path.join(args.build_dir, 'apks', APK_NAME) 164 apk_path = os.path.join(args.build_dir, 'apks', APK_NAME)
154 if not os.path.exists(apk_path): 165 if not os.path.exists(apk_path):
155 print "'%s' does not exist?" % apk_path 166 print "'%s' does not exist?" % apk_path
156 return 2 167 return 2
157 168
158 sdk_root = dev_sdk_root(args.build_dir)
159 packages_root = dev_packages_root(args.build_dir) 169 packages_root = dev_packages_root(args.build_dir)
160 sky_tools_directory = os.path.join(SRC_ROOT, 'sky/tools')
161 subprocess.check_call([
162 os.path.join(sky_tools_directory, 'deploy_sdk.py'),
163 '--build-dir', args.build_dir,
164 '--non-interactive',
165 '--dev-environment',
166 '--fake-pub-get-into', packages_root,
167 sdk_root,
168 ])
169
170 sky_server = self._sky_server_for_args(args, packages_root) 170 sky_server = self._sky_server_for_args(args, packages_root)
171 pids['sky_server_pid'] = sky_server.start() 171 pids['sky_server_pid'] = sky_server.start()
172 pids['sky_server_port'] = sky_server.port 172 pids['sky_server_port'] = sky_server.port
173 pids['sky_server_root'] = sky_server.root 173 pids['sky_server_root'] = sky_server.root
174 174
175 pids['build_dir'] = os.path.abspath(args.build_dir) 175 pids['build_dir'] = os.path.abspath(args.build_dir)
176 176
177 if args.install: 177 if args.install:
178 # -r to replace an existing apk, -d to allow version downgrade. 178 # -r to replace an existing apk, -d to allow version downgrade.
179 subprocess.check_call([ADB_PATH, 'install', '-r', '-d', apk_path]) 179 subprocess.check_call([ADB_PATH, 'install', '-r', '-d', apk_path])
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
230 def run(self, args, pids): 230 def run(self, args, pids):
231 build_dir = pids.get('build_dir') 231 build_dir = pids.get('build_dir')
232 if not build_dir: 232 if not build_dir:
233 logging.fatal("pids file missing build_dir. Try 'start' first.") 233 logging.fatal("pids file missing build_dir. Try 'start' first.")
234 return 2 234 return 2
235 ANALYZER_PATH = 'third_party/dart-sdk/dart-sdk/bin/dartanalyzer' 235 ANALYZER_PATH = 'third_party/dart-sdk/dart-sdk/bin/dartanalyzer'
236 236
237 bindings_path = os.path.join(build_dir, 'gen/sky/bindings') 237 bindings_path = os.path.join(build_dir, 'gen/sky/bindings')
238 sky_builtin_path = \ 238 sky_builtin_path = \
239 os.path.join(SRC_ROOT, 'sky/engine/bindings/builtin.dart') 239 os.path.join(SRC_ROOT, 'sky/engine/bindings/builtin.dart')
240 sky_internals_path = \
241 os.path.join(SRC_ROOT, 'sky/sdk/lib/internals.dart')
240 dart_sky_path = os.path.join(bindings_path, 'dart_sky.dart') 242 dart_sky_path = os.path.join(bindings_path, 'dart_sky.dart')
241 analyzer_args = [ANALYZER_PATH, 243 analyzer_args = [ANALYZER_PATH,
244 "--url-mapping=dart:sky.internals,%s" % sky_internals_path,
242 "--url-mapping=dart:sky,%s" % dart_sky_path, 245 "--url-mapping=dart:sky,%s" % dart_sky_path,
243 "--url-mapping=dart:sky_builtin,%s" % sky_builtin_path, 246 "--url-mapping=dart:sky_builtin,%s" % sky_builtin_path,
244 "--package-root", dev_packages_root(build_dir), 247 "--package-root", dev_packages_root(build_dir),
245 "--package-warnings", 248 "--package-warnings",
246 args.app_path 249 args.app_path
247 ] 250 ]
248 return subprocess.call(analyzer_args) 251 try:
252 subprocess.check_output(analyzer_args,
253 shell=False,
254 stderr=subprocess.STDOUT)
255 except subprocess.CalledProcessError as e:
256 errors = set(l for l in e.output.split('\n')
257 if not any(p.match(l) for p in _IGNORED_PATTERNS))
258 # If we do not have any errors left after filtering, return 0.
259 if len(errors) == 0:
260 return 0
261 # Print errors.
262 for error in sorted(errors):
263 print >> sys.stderr, error
264 # Return analyzer error code.
265 return e.returncode
266 return 0
267
249 268
250 class StartTracing(object): 269 class StartTracing(object):
251 def add_subparser(self, subparsers): 270 def add_subparser(self, subparsers):
252 start_tracing_parser = subparsers.add_parser('start_tracing', 271 start_tracing_parser = subparsers.add_parser('start_tracing',
253 help=('start tracing a running sky instance')) 272 help=('start tracing a running sky instance'))
254 start_tracing_parser.set_defaults(func=self.run) 273 start_tracing_parser.set_defaults(func=self.run)
255 274
256 def run(self, args, pids): 275 def run(self, args, pids):
257 subprocess.check_output([ADB_PATH, 'shell', 276 subprocess.check_output([ADB_PATH, 'shell',
258 'am', 'broadcast', 277 'am', 'broadcast',
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 args = parser.parse_args() 331 args = parser.parse_args()
313 pids = Pids.read_from(PID_FILE_PATH, PID_FILE_KEYS) 332 pids = Pids.read_from(PID_FILE_PATH, PID_FILE_KEYS)
314 exit_code = args.func(args, pids) 333 exit_code = args.func(args, pids)
315 # We could do this with an at-exit handler instead? 334 # We could do this with an at-exit handler instead?
316 pids.write_to(PID_FILE_PATH) 335 pids.write_to(PID_FILE_PATH)
317 sys.exit(exit_code) 336 sys.exit(exit_code)
318 337
319 338
320 if __name__ == '__main__': 339 if __name__ == '__main__':
321 SkyShellRunner().main() 340 SkyShellRunner().main()
OLDNEW
« no previous file with comments | « sky/sdk/lib/internals.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698