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

Unified Diff: tools/isolate_driver.py

Issue 555553002: Add new isolation mode "prepare". (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: wt -> wb Created 6 years, 3 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 | « build/isolate.gypi ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/isolate_driver.py
diff --git a/tools/isolate_driver.py b/tools/isolate_driver.py
index 192de2cb837d9530d655a03303a73d1ccf9e8286..73ad0d6547742c0fce1b729a5212a842aa42c568 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, 'wb') as f:
+ 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(
« no previous file with comments | « build/isolate.gypi ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698