Chromium Code Reviews| Index: tools/isolate_driver.py |
| diff --git a/tools/isolate_driver.py b/tools/isolate_driver.py |
| index 192de2cb837d9530d655a03303a73d1ccf9e8286..5c02c0ea9f8cfc67ce88a2b0c523f3e04166da70 100755 |
| --- a/tools/isolate_driver.py |
| +++ b/tools/isolate_driver.py |
| @@ -19,11 +19,12 @@ WARNING: The target to use for build.ninja analysis is the base name of the |
| 'foo_test_run' analysed. |
| """ |
| -import StringIO |
| import glob |
| +import json |
| import logging |
| import os |
| import posixpath |
| +import StringIO |
| import subprocess |
| import sys |
| import time |
| @@ -248,9 +249,23 @@ def create_wrapper(args, isolate_index, isolated_index): |
| args[isolate_index] = temp_isolate |
| +def prepare_isolate_call(args, output): |
| + """Gathers all information required to run isolate.py later. |
| + |
| + Dumps it as JSON to |output| file. |
| + """ |
| + with open(output, 'wt') as f: |
|
M-A Ruel
2014/09/08 22:40:28
Why not 'wb'? I hate CR with passion. :)
Vadim Sh.
2014/09/08 23:57:19
Done.
|
| + json.dump({ |
| + 'args': args, |
| + 'dir': os.getcwd(), |
| + 'version': 1, |
| + }, f, indent=2, sort_keys=True) |
| + |
| + |
| def main(): |
| logging.basicConfig(level=logging.ERROR, format='%(levelname)7s %(message)s') |
| args = sys.argv[1:] |
| + mode = args[0] if args else None |
| isolate = None |
| isolated = None |
| is_component = False |
| @@ -261,13 +276,19 @@ def main(): |
| isolated = i + 1 |
| if arg == 'component=shared_library': |
| is_component = True |
| - if isolate is None or isolated is None: |
| + if isolate is None or isolated is None or not mode: |
| print >> sys.stderr, 'Internal failure' |
| return 1 |
| if is_component: |
| create_wrapper(args, isolate, isolated) |
| + # In 'prepare' mode just collect all required information for postponed |
| + # isolated.py invocation later, store it in *.isolated.gen.json file. |
| + if mode == 'prepare': |
| + prepare_isolate_call(args[1:], args[isolated] + '.gen.json') |
| + return 0 |
| + |
| swarming_client = os.path.join(SRC_DIR, 'tools', 'swarming_client') |
| sys.stdout.flush() |
| result = subprocess.call( |