Commit 87affbc5 authored by machenbach's avatar machenbach Committed by Commit bot

[gn] Fix isolate_driver for gn

This makes the isolate-driver script rebase all paths to be
relative to the isolate-file location. This is an assumption
of the go binaries and is needed for batcharchive to work.

In gyp, actions were executed relative to the gyp file that
specified them, while in gn it's relative to the product dir.

BUG=chromium:474921

Review-Url: https://codereview.chromium.org/2039873002
Cr-Commit-Position: refs/heads/master@{#36746}
parent fb9ce937
......@@ -101,6 +101,8 @@ template("v8_isolate_run") {
use_snapshot = "0"
}
# Note, all paths will be rebased in isolate_driver.py to be relative to
# the isolate file.
args = [
v8_test_isolation_mode,
"--isolated",
......
......@@ -30,6 +30,16 @@ def prepare_isolate_call(args, output):
'version': 1,
}, f, indent=2, sort_keys=True)
def rebase_directories(args, abs_base):
"""Rebases all paths to be relative to abs_base."""
def replace(index):
args[index] = os.path.relpath(os.path.abspath(args[index]), abs_base)
for i, arg in enumerate(args):
if arg in ['--isolate', '--isolated']:
replace(i + 1)
if arg == '--path-variable':
# Path variables have a triple form: --path-variable NAME <path>.
replace(i + 2)
def main():
logging.basicConfig(level=logging.ERROR, format='%(levelname)7s %(message)s')
......@@ -49,6 +59,14 @@ def main():
print >> sys.stderr, 'Internal failure'
return 1
# Make sure all paths are relative to the isolate file. This is an
# expectation of the go binaries. In gn, this script is not called
# relative to the isolate file, but relative to the product dir.
new_base = os.path.abspath(os.path.dirname(args[isolate]))
rebase_directories(args, new_base)
assert args[isolate] == os.path.basename(args[isolate])
os.chdir(new_base)
# In 'prepare' mode just collect all required information for postponed
# isolated.py invocation later, store it in *.isolated.gen.json file.
if mode == 'prepare':
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment