1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
build / android / gyp / trace_event_bytecode_rewriter.py [blame]
#!/usr/bin/env python3
# Copyright 2021 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Wrapper script around TraceEventAdder script."""
import argparse
import sys
import tempfile
import os
from util import build_utils
import action_helpers # build_utils adds //build to sys.path.
# The real limit is generally >100kb, but 10k seems like a reasonable "it's big"
# threshold.
_MAX_CMDLINE = 10000
def main(argv):
argv = build_utils.ExpandFileArgs(argv[1:])
parser = argparse.ArgumentParser()
action_helpers.add_depfile_arg(parser)
parser.add_argument('--script',
required=True,
help='Path to the java binary wrapper script.')
parser.add_argument('--stamp', help='Path to stamp to mark when finished.')
parser.add_argument('--classpath', action='append', nargs='+')
parser.add_argument('--input-jars', action='append', nargs='+')
parser.add_argument('--output-jars', action='append', nargs='+')
args = parser.parse_args(argv)
args.classpath = action_helpers.parse_gn_list(args.classpath)
args.input_jars = action_helpers.parse_gn_list(args.input_jars)
args.output_jars = action_helpers.parse_gn_list(args.output_jars)
for output_jar in args.output_jars:
jar_dir = os.path.dirname(output_jar)
if not os.path.exists(jar_dir):
os.makedirs(jar_dir)
cmd = [
args.script, '--classpath', ':'.join(args.classpath),
':'.join(args.input_jars), ':'.join(args.output_jars)
]
if sum(len(x) for x in cmd) > _MAX_CMDLINE:
# Cannot put --classpath in the args file because that is consumed by the
# wrapper script.
args_file = tempfile.NamedTemporaryFile(mode='w')
args_file.write('\n'.join(cmd[3:]))
args_file.flush()
cmd[3:] = ['@' + args_file.name]
build_utils.CheckOutput(cmd, print_stdout=True)
build_utils.Touch(args.stamp)
all_input_jars = args.input_jars + args.classpath
action_helpers.write_depfile(args.depfile, args.stamp, inputs=all_input_jars)
if __name__ == '__main__':
sys.exit(main(sys.argv))