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

Side by Side Diff: mojo/devtools/common/devtoolslib/shell_arguments.py

Issue 1844943004: devtools: download shell binaries and set origin when run w/ --mojo-version. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 4 years, 8 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
OLDNEW
1 # Copyright 2015 The Chromium Authors. All rights reserved. 1 # Copyright 2015 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 """Produces configured shell abstractions. 5 """Produces configured shell abstractions.
6 6
7 This module knows how to produce a configured shell abstraction based on 7 This module knows how to produce a configured shell abstraction based on
8 shell_config.ShellConfig. 8 shell_config.ShellConfig.
9 """ 9 """
10 10
11 import os.path 11 import os.path
12 import urlparse 12 import urlparse
13 13
14 from devtoolslib import download
15 from devtoolslib import paths
14 from devtoolslib.android_shell import AndroidShell 16 from devtoolslib.android_shell import AndroidShell
15 from devtoolslib.linux_shell import LinuxShell 17 from devtoolslib.linux_shell import LinuxShell
16 from devtoolslib.shell_config import ShellConfigurationException 18 from devtoolslib.shell_config import ShellConfigurationException
17 19
18 # When spinning up servers for local origins, we want to use predictable ports 20 # When spinning up servers for local origins, we want to use predictable ports
19 # so that caching works between subsequent runs with the same command line. 21 # so that caching works between subsequent runs with the same command line.
20 _LOCAL_ORIGIN_PORT = 31840 22 _LOCAL_ORIGIN_PORT = 31840
21 _MAPPINGS_BASE_PORT = 31841 23 _MAPPINGS_BASE_PORT = 31841
22 24
23 25
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 once on the argument list (e.g. url-mappings) so we need to coalesce any 188 once on the argument list (e.g. url-mappings) so we need to coalesce any
187 overrides and the existing value into just one argument. 189 overrides and the existing value into just one argument.
188 190
189 Returns: 191 Returns:
190 A tuple of (shell, shell_args). |shell| is the configured shell abstraction, 192 A tuple of (shell, shell_args). |shell| is the configured shell abstraction,
191 |shell_args| is updated list of shell arguments. 193 |shell_args| is updated list of shell arguments.
192 194
193 Throws: 195 Throws:
194 ShellConfigurationException if shell abstraction could not be configured. 196 ShellConfigurationException if shell abstraction could not be configured.
195 """ 197 """
198 platform = 'android-arm' if shell_config.android else 'linux-x64'
199
200 shell_path = shell_config.shell_path
201 if not shell_path and shell_config.mojo_version:
202 download_dir = os.path.join(paths.DEVTOOLS_ROOT, '_prebuilt')
203 shell_path = download.download_shell(shell_config.mojo_version, platform,
204 download_dir, shell_config.verbose)
205 if shell_config.verbose:
206 if shell_path:
207 print('Using shell binary at ' + shell_path)
208 else:
209 print('No shell path given, only running on Android with pre-installed '
210 'shell will be possible.')
211
196 if shell_config.android: 212 if shell_config.android:
197 shell = AndroidShell(shell_config.adb_path, shell_config.target_device, 213 shell = AndroidShell(shell_config.adb_path, shell_config.target_device,
198 logcat_tags=shell_config.logcat_tags, 214 logcat_tags=shell_config.logcat_tags,
199 verbose=shell_config.verbose) 215 verbose=shell_config.verbose)
200 216
201 device_status, error = shell.check_device() 217 device_status, error = shell.check_device()
202 if not device_status: 218 if not device_status:
203 raise ShellConfigurationException('Device check failed: ' + error) 219 raise ShellConfigurationException('Device check failed: ' + error)
204 if shell_config.shell_path: 220 if shell_path:
205 shell.install_apk(shell_config.shell_path) 221 shell.install_apk(shell_path)
206 else: 222 else:
207 if not shell_config.shell_path: 223 if not shell_path:
208 raise ShellConfigurationException('Can not run without a shell binary. ' 224 raise ShellConfigurationException('Can not run without a shell binary. '
209 'Please pass --shell-path.') 225 'Please pass --mojo-version or '
210 shell = LinuxShell(shell_config.shell_path) 226 '--shell-path.')
227 shell = LinuxShell(shell_path)
211 if shell_config.use_osmesa: 228 if shell_config.use_osmesa:
212 shell_args.append('--args-for=mojo:native_viewport_service --use-osmesa') 229 shell_args.append('--args-for=mojo:native_viewport_service --use-osmesa')
213 230
214 shell_args = _apply_mappings(shell, shell_args, shell_config.map_url_list, 231 shell_args = _apply_mappings(shell, shell_args, shell_config.map_url_list,
215 shell_config.map_origin_list, 232 shell_config.map_origin_list,
216 shell_config.reuse_servers) 233 shell_config.reuse_servers)
217 234
235 # Configure origin for mojo: urls.
218 if shell_config.origin: 236 if shell_config.origin:
237 # If origin was set on the command line, this takes precedence.
219 if _is_web_url(shell_config.origin): 238 if _is_web_url(shell_config.origin):
220 shell_args.append('--origin=' + shell_config.origin) 239 shell_args.append('--origin=' + shell_config.origin)
221 else: 240 else:
222 local_origin_port = _LOCAL_ORIGIN_PORT 241 local_origin_port = _LOCAL_ORIGIN_PORT
223 shell_args.extend(configure_local_origin(shell, shell_config.origin, 242 shell_args.extend(configure_local_origin(shell, shell_config.origin,
224 local_origin_port, 243 local_origin_port,
225 shell_config.reuse_servers)) 244 shell_config.reuse_servers))
245 elif shell_config.mojo_version:
246 # Otherwise we infer the origin from the mojo_version.
247 web_origin = "https://storage.googleapis.com/mojo/services/%s/%s" % (
248 platform, shell_config.mojo_version)
249 if shell_config.verbose:
250 print('Inferring origin from `MOJO_VERSION` as: ' + web_origin)
251 shell_args.append('--origin=' + web_origin)
226 252
227 if shell_config.content_handlers: 253 if shell_config.content_handlers:
228 for (mime_type, 254 for (mime_type,
229 content_handler_url) in shell_config.content_handlers.iteritems(): 255 content_handler_url) in shell_config.content_handlers.iteritems():
230 shell_args = append_to_argument(shell_args, '--content-handlers=', 256 shell_args = append_to_argument(shell_args, '--content-handlers=',
231 '%s,%s' % (mime_type, 257 '%s,%s' % (mime_type,
232 content_handler_url)) 258 content_handler_url))
233 259
234 for dev_server_config in shell_config.dev_servers: 260 for dev_server_config in shell_config.dev_servers:
235 shell_args = _configure_dev_server(shell, shell_args, dev_server_config, 261 shell_args = _configure_dev_server(shell, shell_args, dev_server_config,
236 shell_config.reuse_servers, 262 shell_config.reuse_servers,
237 shell_config.verbose) 263 shell_config.verbose)
238 264
239 return shell, shell_args 265 return shell, shell_args
OLDNEW
« no previous file with comments | « mojo/devtools/common/devtoolslib/paths.py ('k') | mojo/devtools/common/devtoolslib/shell_config.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698