Commit ce84d1c6 authored by Andrew Grieve's avatar Andrew Grieve Committed by Commit Bot

Android: Properly track GN .py inputs for actions in internal_rules.gni

* Most templates use a hard-coded list of build_utils.py deps.
* A few use exec_script() when compute_inputs_for_analyze = true.

Bug: 843562
Change-Id: I0bb1ca7927f7366d23c23b8beb56d39a22208a06
Reviewed-on: https://chromium-review.googlesource.com/1114122
Commit-Queue: agrieve <agrieve@chromium.org>
Reviewed-by: default avatarEric Stevenson <estevenson@chromium.org>
Reviewed-by: default avatarDirk Pranke <dpranke@chromium.org>
Cr-Commit-Position: refs/heads/master@{#570811}
parent 46c63393
......@@ -376,7 +376,8 @@ def main(args):
input_paths=input_paths + depfile_deps,
input_strings=input_strings,
output_paths=output_paths,
depfile_deps=depfile_deps)
depfile_deps=depfile_deps,
add_pydeps=False)
if __name__ == '__main__':
......
......@@ -20,7 +20,6 @@ def _AddSwitch(parser, val):
def main(argv):
argv = build_utils.ExpandFileArgs(argv[1:])
parser = argparse.ArgumentParser()
build_utils.AddDepfileOption(parser)
parser.add_argument('--script', required=True,
help='Path to the java binary wrapper script.')
parser.add_argument('--input-jar', required=True)
......@@ -39,12 +38,6 @@ def main(argv):
args.enable_custom_resources] + extra_classpath_jars
build_utils.CheckOutput(cmd)
if args.depfile:
# Do not write classpath jars to depfile under the assumption that if
# the input jar has not changed, then bytecode rewriting will not have to
# be re-run.
build_utils.WriteDepfile(args.depfile, args.output_jar)
if __name__ == '__main__':
sys.exit(main(sys.argv))
......@@ -112,8 +112,8 @@ def main(args):
DoRenaming(options, deps)
if options.depfile:
assert options.stamp
build_utils.WriteDepfile(options.depfile, options.stamp, deps)
build_utils.WriteDepfile(
options.depfile, options.stamp, deps, add_pydeps=False)
if options.stamp:
build_utils.Touch(options.stamp)
......
......@@ -67,7 +67,6 @@ os.execvp("java", java_cmd)
def main(argv):
argv = build_utils.ExpandFileArgs(argv)
parser = optparse.OptionParser()
build_utils.AddDepfileOption(parser)
parser.add_option('--output', help='Output path for executable script.')
parser.add_option('--main-class',
help='Name of the java class with the "main" entry point.')
......@@ -108,9 +107,6 @@ def main(argv):
os.chmod(options.output, 0750)
if options.depfile:
build_utils.WriteDepfile(options.depfile, options.output)
if __name__ == '__main__':
sys.exit(main(sys.argv[1:]))
......@@ -40,7 +40,6 @@ SCRIPT_TEMPLATE = textwrap.dedent(
def main(args):
parser = argparse.ArgumentParser()
build_utils.AddDepfileOption(parser)
parser.add_argument(
'--script-path',
help='Path to the wrapped script.')
......@@ -74,9 +73,6 @@ def main(args):
os.chmod(args.script_output_path, 0750)
if args.depfile:
build_utils.WriteDepfile(args.depfile, args.script_output_path)
return 0
......
......@@ -55,9 +55,6 @@ def main(args):
parser = argparse.ArgumentParser()
parser.add_argument('--script-output-path',
help='Output path for executable script.')
parser.add_argument('--depfile',
help='Path to the depfile. This must be specified as '
"the action's first output.")
parser.add_argument('--test-runner-path',
help='Path to test_runner.py (optional).')
......@@ -164,8 +161,6 @@ def main(args):
os.chmod(args.script_output_path, 0750)
if args.depfile:
build_utils.WriteDepfile(args.depfile, args.script_output_path)
if __name__ == '__main__':
sys.exit(main(sys.argv[1:]))
......@@ -11,35 +11,11 @@ import sys
from util import build_utils
_DESUGAR_JAR_PATH = os.path.normpath(
os.path.join(build_utils.DIR_SOURCE_ROOT, 'third_party', 'bazel', 'desugar',
'Desugar.jar'))
def _OnStaleMd5(input_jar, output_jar, classpath, bootclasspath):
cmd = [
'java',
'-jar',
_DESUGAR_JAR_PATH,
'--input',
input_jar,
'--output',
output_jar,
# Don't include try-with-resources files in every .jar. Instead, they
# are included via //third_party/bazel/desugar:desugar_runtime_java.
'--desugar_try_with_resources_omit_runtime_classes',
]
for path in bootclasspath:
cmd += ['--bootclasspath_entry', path]
for path in classpath:
cmd += ['--classpath_entry', path]
build_utils.CheckOutput(cmd, print_stdout=False)
def main():
args = build_utils.ExpandFileArgs(sys.argv[1:])
parser = argparse.ArgumentParser()
build_utils.AddDepfileOption(parser)
parser.add_argument('--desugar-jar', required=True,
help='Path to Desugar.jar.')
parser.add_argument('--input-jar', required=True,
help='Jar input path to include .class files from.')
parser.add_argument('--output-jar', required=True,
......@@ -52,18 +28,24 @@ def main():
options.bootclasspath = build_utils.ParseGnList(options.bootclasspath)
options.classpath = build_utils.ParseGnList(options.classpath)
input_paths = options.classpath + options.bootclasspath + [options.input_jar]
output_paths = [options.output_jar]
depfile_deps = options.classpath + [_DESUGAR_JAR_PATH]
build_utils.CallAndWriteDepfileIfStale(
lambda: _OnStaleMd5(options.input_jar, options.output_jar,
options.classpath, options.bootclasspath),
options,
input_paths=input_paths,
input_strings=[],
output_paths=output_paths,
depfile_deps=depfile_deps)
cmd = [
'java',
'-jar',
options.desugar_jar,
'--input',
options.input_jar,
'--output',
options.output_jar,
# Don't include try-with-resources files in every .jar. Instead, they
# are included via //third_party/bazel/desugar:desugar_runtime_java.
'--desugar_try_with_resources_omit_runtime_classes',
]
for path in options.bootclasspath:
cmd += ['--bootclasspath_entry', path]
for path in options.classpath:
cmd += ['--classpath_entry', path]
build_utils.CheckOutput(cmd, print_stdout=False)
if __name__ == '__main__':
......
......@@ -202,7 +202,8 @@ def main(args):
input_strings=dex_cmd,
output_paths=output_paths,
force=force,
depfile_deps=input_paths)
depfile_deps=input_paths,
add_pydeps=False)
if __name__ == '__main__':
......
......@@ -30,7 +30,6 @@ from util import build_utils
def _AddCommonOptions(option_parser):
"""Adds common options to |option_parser|."""
build_utils.AddDepfileOption(option_parser)
option_parser.add_option('--input-path',
help=('Path to input file(s). Either the classes '
'directory, or the path to a jar.'))
......@@ -93,9 +92,6 @@ def _RunCopyCommand(_command, options, _, option_parser):
shutil.copy(options.input_path, options.output_path)
if options.depfile:
build_utils.WriteDepfile(options.depfile, options.output_path)
def _GetSourceDirsFromSourceFiles(source_files):
"""Returns list of directories for the files in |source_files|.
......@@ -204,12 +200,6 @@ def _RunInstrumentCommand(_command, options, _, option_parser):
_CreateSourcesListFile(source_dirs, options.sources_list_file,
options.src_root)
if options.stamp:
build_utils.Touch(options.stamp)
if options.depfile:
build_utils.WriteDepfile(options.depfile, options.output_path)
return 0
......
......@@ -403,7 +403,8 @@ def main():
input_paths=input_paths,
input_strings=input_strings,
output_paths=output_paths,
depfile_deps=classpath)
depfile_deps=classpath,
add_pydeps=False)
if __name__ == '__main__':
......
......@@ -14,16 +14,14 @@ import zipfile
from util import build_utils
from util import proguard_util
sys.path.append(os.path.abspath(os.path.join(
os.path.dirname(__file__), os.pardir)))
from pylib import constants
def main(args):
parser = argparse.ArgumentParser()
build_utils.AddDepfileOption(parser)
parser.add_argument('--android-sdk-tools', required=True,
help='Android sdk build tools directory.')
parser.add_argument('--shrinked-android-path', required=True,
help='Path to shrinkedAndroid.jar')
parser.add_argument('--dx-path', required=True,
help='Path to dx.jar')
parser.add_argument('--main-dex-rules-path', action='append', default=[],
dest='main_dex_rules_paths',
help='A file containing a list of proguard rules to use '
......@@ -46,28 +44,27 @@ def main(args):
args = parser.parse_args(build_utils.ExpandFileArgs(args))
depfile_deps = []
if args.inputs:
args.paths.extend(build_utils.ParseGnList(args.inputs))
args.inputs = build_utils.ParseGnList(args.inputs)
depfile_deps = args.inputs
args.paths.extend(args.inputs)
if args.negative_main_dex_globs:
args.negative_main_dex_globs = build_utils.ParseGnList(
args.negative_main_dex_globs)
shrinked_android_jar = os.path.abspath(
os.path.join(args.android_sdk_tools, 'lib', 'shrinkedAndroid.jar'))
dx_jar = os.path.abspath(
os.path.join(args.android_sdk_tools, 'lib', 'dx.jar'))
proguard_cmd = [
'java', '-jar', args.proguard_path,
'-forceprocessing',
'-dontwarn', '-dontoptimize', '-dontobfuscate', '-dontpreverify',
'-libraryjars', shrinked_android_jar,
'-libraryjars', args.shrinked_android_path,
]
for m in args.main_dex_rules_paths:
proguard_cmd.extend(['-include', m])
main_dex_list_cmd = [
'java', '-cp', dx_jar,
'java', '-cp', args.dx_path,
'com.android.multidex.MainDexListBuilder',
# This workaround significantly increases main dex size and doesn't seem to
# be needed by Chrome. See comment in the source:
......@@ -77,8 +74,8 @@ def main(args):
input_paths = list(args.paths)
input_paths += [
shrinked_android_jar,
dx_jar,
args.shrinked_android_path,
args.dx_path,
]
input_paths += args.main_dex_rules_paths
......@@ -100,7 +97,9 @@ def main(args):
args,
input_paths=input_paths,
input_strings=input_strings,
output_paths=output_paths)
output_paths=output_paths,
depfile_deps=depfile_deps,
add_pydeps=False)
return 0
......
......@@ -50,6 +50,10 @@ def _MergeInfoFiles(output, jar_paths):
# allows us to later map these classes back to their respective src
# directories.
jar_info_path = jar_path + '.info'
# TODO(agrieve): This should probably also check that the mtime of the .info
# is newer than that of the .jar, or change prebuilts to always output
# .info files so that they always exist (and change the depfile to
# depend directly on them).
if os.path.exists(jar_info_path):
info_data.update(jar_info_utils.ParseJarInfoFile(jar_path + '.info'))
else:
......@@ -86,7 +90,9 @@ def main(args):
build_utils.CallAndWriteDepfileIfStale(
_OnStaleMd5, options,
input_paths=jar_files,
output_paths=[options.output])
output_paths=[options.output],
depfile_deps=jar_files,
add_pydeps=False)
if __name__ == '__main__':
......
......@@ -101,7 +101,8 @@ def main(argv):
build_utils.IsTimeStale(args.output, [root_manifest] + extras))
if args.depfile:
inputs = extras + classpath.split(':')
build_utils.WriteDepfile(args.depfile, args.output, inputs=inputs)
build_utils.WriteDepfile(args.depfile, args.output, inputs=inputs,
add_pydeps=False)
if __name__ == '__main__':
......
......@@ -121,7 +121,8 @@ def main(args):
input_paths=input_paths,
input_strings=input_strings,
output_paths=proguard.GetOutputs(),
depfile_deps=proguard.GetDepfileDeps())
depfile_deps=proguard.GetDepfileDeps(),
add_pydeps=False)
if __name__ == '__main__':
......
......@@ -19,6 +19,9 @@ import sys
import tempfile
import zipfile
# Any new non-system import must be added to:
# //build/config/android/internal_rules.gni
# Some clients do not add //build/android/gyp to PYTHONPATH.
import md5_check # pylint: disable=relative-import
......@@ -539,8 +542,8 @@ def ReadSourcesList(sources_list_file_name):
def CallAndWriteDepfileIfStale(function, options, record_path=None,
input_paths=None, input_strings=None,
output_paths=None, force=False,
pass_changes=False,
depfile_deps=None):
pass_changes=False, depfile_deps=None,
add_pydeps=True):
"""Wraps md5_check.CallAndRecordIfStale() and also writes dep & stamp files.
Depfiles and stamp files are automatically added to output_paths when present
......@@ -572,7 +575,7 @@ def CallAndWriteDepfileIfStale(function, options, record_path=None,
args = (changes,) if pass_changes else ()
function(*args)
if python_deps is not None:
all_depfile_deps = list(python_deps)
all_depfile_deps = list(python_deps) if add_pydeps else []
if depfile_deps:
all_depfile_deps.extend(depfile_deps)
WriteDepfile(options.depfile, output_paths[0], all_depfile_deps,
......
......@@ -1366,7 +1366,8 @@ def main(argv):
build_utils.WriteJson(config, options.build_config, only_if_changed=True)
if options.depfile:
build_utils.WriteDepfile(options.depfile, options.build_config, all_inputs)
build_utils.WriteDepfile(options.depfile, options.build_config, all_inputs,
add_pydeps=False) # pydeps listed in GN.
if __name__ == '__main__':
......
......@@ -6,6 +6,7 @@
# Some projects (e.g. V8) do not have non-build directories DEPS'ed in.
import("//build_overrides/build.gni")
import("//build/config/android/config.gni")
import("//build/config/compute_inputs_for_analyze.gni")
import("//build/config/dcheck_always_on.gni")
import("//build/config/sanitizers/sanitizers.gni")
......@@ -42,6 +43,14 @@ _java_target_blacklist = [
_default_proguard_jar_path = "//third_party/proguard/lib/proguard.jar"
# List of .py files required when scripts import build_utils.py.
# Use this for "inputs" for actions that rely on build_utils.py.
build_utils_py = [
"//build/android/gyp/util/build_utils.py",
"//build/android/gyp/util/md5_check.py",
"//build/gn_helpers.py",
]
# Write the target's .build_config file. This is a json file that contains a
# dictionary of information about how to build this target (things that
# require knowledge about this target's dependencies and cannot be calculated
......@@ -94,7 +103,7 @@ template("write_build_config") {
script = "//build/android/gyp/write_build_config.py"
depfile = "$target_gen_dir/$target_name.d"
inputs = []
inputs = build_utils_py
outputs = [
invoker.build_config,
]
......@@ -422,15 +431,19 @@ template("copy_ex") {
[
"data",
"deps",
"inputs",
"outputs",
"sources",
"testonly",
"visibility",
])
if (!defined(sources)) {
sources = []
if (defined(invoker.sources)) {
sources += invoker.sources
}
inputs = build_utils_py
if (defined(invoker.inputs)) {
inputs += invoker.inputs
}
script = "//build/android/gyp/copy_ex.py"
args = [
......@@ -508,7 +521,7 @@ template("test_runner_script") {
}
script = "//build/android/gyp/create_test_runner_script.py"
depfile = "$target_gen_dir/$target_name.d"
inputs = build_utils_py
data_deps += [
"//build/android:test_runner_py",
......@@ -689,8 +702,6 @@ template("test_runner_script") {
data += [ generated_script ]
args = [
"--depfile",
rebase_path(depfile, root_build_dir),
"--script-output-path",
rebase_path(generated_script, root_build_dir),
]
......@@ -727,7 +738,7 @@ template("stack_script") {
[ "//third_party/android_platform/development/scripts:stack_py" ]
script = "//build/android/gyp/create_stack_script.py"
depfile = "$target_gen_dir/$target_name.d"
inputs = build_utils_py
_stack_script = "//third_party/android_platform/development/scripts/stack"
......@@ -741,8 +752,6 @@ template("stack_script") {
]
args = [
"--depfile",
rebase_path(depfile, root_build_dir),
"--output-directory",
rebase_path(root_build_dir, root_build_dir),
"--script-path",
......@@ -797,7 +806,7 @@ if (enable_java_templates) {
script = "//build/android/gyp/lint.py"
depfile = "$target_gen_dir/$target_name.d"
inputs = [
inputs = build_utils_py + [
_platform_xml_path,
_suppressions_file,
]
......@@ -898,7 +907,8 @@ if (enable_java_templates) {
_proguard_jar_path = invoker.proguard_jar_path
}
inputs = [
inputs = build_utils_py + [
"//build/android/gyp/util/proguard_util.py",
_proguard_jar_path,
invoker.build_config,
]
......@@ -963,18 +973,13 @@ if (enable_java_templates) {
_script_name = invoker.script_name
script = "//build/android/gyp/create_java_binary_script.py"
depfile = "$target_gen_dir/$_script_name.d"
inputs = build_utils_py + [ _build_config ]
_java_script = "$root_build_dir/bin/$_script_name"
inputs = [
_build_config,
]
outputs = [
_java_script,
]
_rebased_build_config = rebase_path(_build_config, root_build_dir)
args = [
"--depfile",
rebase_path(depfile, root_build_dir),
"--output",
rebase_path(_java_script, root_build_dir),
"--main-class",
......@@ -1034,9 +1039,14 @@ if (enable_java_templates) {
_proguard_jar_path = _default_proguard_jar_path
}
inputs = [
_shrinked_android = "$android_sdk_build_tools/lib/shrinkedAndroid.jar"
_dx = "$android_sdk_build_tools/lib/dx.jar"
inputs = build_utils_py + [
"//build/android/gyp/util/proguard_util.py",
main_dex_rules,
_dx,
_proguard_jar_path,
_shrinked_android,
]
outputs = [
......@@ -1046,8 +1056,10 @@ if (enable_java_templates) {
args = [
"--depfile",
rebase_path(depfile, root_build_dir),
"--android-sdk-tools",
rebase_path(android_sdk_build_tools, root_build_dir),
"--dx-path",
rebase_path(_dx, root_build_dir),
"--shrinked-android-path",
rebase_path(_shrinked_android, root_build_dir),
"--main-dex-list-path",
rebase_path(_main_dex_list_path, root_build_dir),
"--main-dex-rules-path",
......@@ -1090,7 +1102,7 @@ if (enable_java_templates) {
])
script = "//build/android/gyp/dex.py"
depfile = "$target_gen_dir/$target_name.d"
inputs = []
inputs = build_utils_py
outputs = [
invoker.output,
]
......@@ -1151,8 +1163,7 @@ if (enable_java_templates) {
_emma_jar = "${android_sdk_root}/tools/lib/emma.jar"
script = "//build/android/gyp/emma_instr.py"
depfile = "${target_gen_dir}/${target_name}.d"
inputs = invoker.java_files + [
inputs = build_utils_py + invoker.java_files + [
_emma_jar,
invoker.input_jar_path,
]
......@@ -1167,8 +1178,6 @@ if (enable_java_templates) {
rebase_path(invoker.input_jar_path, root_build_dir),
"--output-path",
rebase_path(invoker.output_jar_path, root_build_dir),
"--depfile",
rebase_path(depfile, root_build_dir),
"--coverage-file",
rebase_path(_coverage_file, root_build_dir),
"--sources-list-file",
......@@ -1260,7 +1269,6 @@ if (enable_java_templates) {
action(_java_bytecode_rewriter_target) {
script = "//build/android/gyp/bytecode_processor.py"
depfile = "$target_gen_dir/$target_name.d"
_bytecode_rewriter_script =
"$root_build_dir/bin/helper/java_bytecode_rewriter"
deps = _deps + [ "//build/android/bytecode:java_bytecode_rewriter($default_toolchain)" ]
......@@ -1276,8 +1284,6 @@ if (enable_java_templates) {
_java_bytecode_rewriter_output_jar,
]
args = [
"--depfile",
rebase_path(depfile, root_build_dir),
"--script",
rebase_path(_bytecode_rewriter_script, root_build_dir),
"--input-jar",
......@@ -1311,21 +1317,23 @@ if (enable_java_templates) {
action(_desugar_target) {
script = "//build/android/gyp/desugar.py"
depfile = "$target_gen_dir/$target_name.d"
deps = _deps
if (defined(invoker.deps)) {
deps += invoker.deps
}
inputs = [
_desugar_jar = "//third_party/bazel/desugar/Desugar.jar"
inputs = build_utils_py + [
_build_config,
_desugar_input_jar,
_desugar_jar,
]
outputs = [
_desugar_output_jar,
]
args = [
"--depfile",
rebase_path(depfile, root_build_dir),
"--desugar-jar",
rebase_path(_desugar_jar, root_build_dir),
"--input-jar",
rebase_path(_desugar_input_jar, root_build_dir),
"--output-jar",
......@@ -1351,7 +1359,7 @@ if (enable_java_templates) {
if (defined(invoker.deps)) {
deps += invoker.deps
}
inputs = [
inputs = build_utils_py + [
_build_config,
_filter_input_jar,
]
......@@ -1445,7 +1453,7 @@ if (enable_java_templates) {
script = "//build/android/gyp/merge_manifest.py"
depfile = "$target_gen_dir/$target_name.d"
inputs = [
inputs = build_utils_py + [
invoker.build_config,
invoker.input_manifest,
]
......@@ -1470,6 +1478,19 @@ if (enable_java_templates) {
}
}
if (compute_inputs_for_analyze) {
_prepare_resources_py =
exec_script("//build/print_python_deps.py",
[
rebase_path("//build/android/gyp/prepare_resources.py"),
"--no-header",
"--gn-paths",
"--root",
rebase_path("//", root_build_dir),
],
"list lines")
}
# This template is used to parse a set of resource directories and
# create the R.txt, .srcjar and .resources.zip for it.
#
......@@ -1566,6 +1587,9 @@ if (enable_java_templates) {
invoker.build_config,
_android_aapt_path,
]
if (compute_inputs_for_analyze) {
inputs += _prepare_resources_py
}
_rebased_all_resource_dirs =
rebase_path(_all_resource_dirs, root_build_dir)
......@@ -1650,6 +1674,19 @@ if (enable_java_templates) {
}
}
if (compute_inputs_for_analyze) {
_compile_resources_py =
exec_script("//build/print_python_deps.py",
[
rebase_path("//build/android/gyp/compile_resources.py"),
"--no-header",
"--gn-paths",
"--root",
rebase_path("//", root_build_dir),
],
"list lines")
}
# A template that is used to compile all resources needed by a binary
# (e.g. an android_apk or a junit_binary) into an intermediate .ar_
# archive. It can also generate an associated .srcjar that contains the
......@@ -1763,6 +1800,9 @@ if (enable_java_templates) {
_android_aapt_path,
_android_aapt2_path,
]
if (compute_inputs_for_analyze) {
inputs += _compile_resources_py
}
_rebased_build_config = rebase_path(invoker.build_config, root_build_dir)
......@@ -1954,6 +1994,9 @@ if (enable_java_templates) {
_srcjar_path,
_compiled_resources_path,
]
if (defined(invoker.post_process_script_inputs)) {
inputs += invoker.post_process_script_inputs
}
outputs = [
invoker.output,
invoker.srcjar_path,
......@@ -2034,8 +2077,9 @@ if (enable_java_templates) {
"deps",
])
script = "//build/android/gyp/merge_jar_info_files.py"
inputs = [
inputs = build_utils_py + [
_build_config,
"//build/android/gyp/util/jar_info_utils.py",
]
outputs = [
_output,
......@@ -2107,7 +2151,8 @@ if (enable_java_templates) {
"//tools/android/md5sum",
] # Used when deploying APKs
inputs = invoker.native_libs + [
inputs = build_utils_py + invoker.native_libs + [
"//build/android/gyp/finalize_apk.py",
invoker.keystore_path,
invoker.packaged_resources_path,
_apksigner,
......@@ -2318,7 +2363,7 @@ if (enable_java_templates) {
deps = _incremental_deps
script =
"//build/android/incremental_install/generate_android_manifest.py"
inputs = [
inputs = build_utils_py + [
# Save on a depfile by listing only .py dep here.
"//build/android/gyp/util/build_utils.py",
_android_manifest,
......@@ -2388,6 +2433,18 @@ if (enable_java_templates) {
}
}
if (compute_inputs_for_analyze) {
_javac_py = exec_script("//build/print_python_deps.py",
[
rebase_path("//build/android/gyp/javac.py"),
"--no-header",
"--gn-paths",
"--root",
rebase_path("//", root_build_dir),
],
"list lines")
}
# Compile Java source files into a .jar file, potentially using an
# annotation processor, and/or the errorprone compiler.
#
......@@ -2513,6 +2570,9 @@ if (enable_java_templates) {
if (invoker.java_files != []) {
inputs += [ invoker.java_sources_file ]
}
if (compute_inputs_for_analyze) {
inputs += _javac_py
}
_rebased_build_config = rebase_path(_build_config, root_build_dir)
_rebased_javac_jar_path =
......@@ -2603,7 +2663,7 @@ if (enable_java_templates) {
if (defined(invoker.deps)) {
deps += invoker.deps
}
inputs = [
inputs = build_utils_py + [
invoker.input_jar,
_ijar_executable,
]
......
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