Skip to content

Commit dd245bd

Browse files
A Googlercopybara-github
authored andcommitted
Add support for creating D8 compiler input dumps in bazel
This adds support in bazel for easily generating D8 compiler input dump file for the dex merging task. The generated compiler input dump file is a zip file that contains all inputs to the given compilation and makes it easy to reproduce and debug a given compilation. This can be enabled by adding `--define=generate_d8_dump=true` to a given build command. See also https://r8.googlesource.com/r8/+/refs/heads/main/doc/compilerdump.md. PiperOrigin-RevId: 868512663 Change-Id: Ic315105820ddf3907e872b6bc147e137c3714856
1 parent ca4a312 commit dd245bd

2 files changed

Lines changed: 17 additions & 1 deletion

File tree

rules/android_binary/impl.bzl

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,10 @@ def _process_dex(ctx, validation_ctx, packaged_resources_ctx, manifest_ctx, depl
325325
if should_optimize_dex and acls.in_d8_optimization_metadata(str(ctx.label)):
326326
build_metadata_output = ctx.actions.declare_file(ctx.label.name + "_d8_optimization_info.json")
327327

328+
input_dump_output = None
329+
if should_optimize_dex and ctx.var.get("generate_d8_dump") == "true":
330+
input_dump_output = ctx.actions.declare_file(ctx.label.name + "_d8_dump.zip")
331+
328332
if proguard_output_map:
329333
# Proguard map from preprocessing will be merged with Proguard map for desugared
330334
# library.
@@ -373,6 +377,7 @@ def _process_dex(ctx, validation_ctx, packaged_resources_ctx, manifest_ctx, depl
373377
postprocessing_output_map = postprocessing_output_map,
374378
startup_profile = optimize_ctx.proguard_output.startup_profile_rewritten,
375379
build_metadata_output = build_metadata_output,
380+
input_dump_output = input_dump_output,
376381
inclusion_filter_jar = binary_jar if is_instrumentation(ctx) and not is_binary_optimized else None,
377382
transitive_runtime_jars_for_archive = deploy_ctx.transitive_runtime_jars_for_archive,
378383
desugar_dict = deploy_ctx.desugar_dict,
@@ -447,13 +452,17 @@ def _process_dex(ctx, validation_ctx, packaged_resources_ctx, manifest_ctx, depl
447452
if postprocessing_output_map:
448453
providers.append(ProguardMappingInfo(proguard_mapping = postprocessing_output_map))
449454

455+
implicit_outputs = [final_proguard_output_map] if final_proguard_output_map else []
456+
if input_dump_output:
457+
implicit_outputs.append(input_dump_output)
458+
450459
return ProviderInfo(
451460
name = "dex_ctx",
452461
value = struct(
453462
dex_info = dex_info,
454463
java8_legacy_dex_map = java8_legacy_dex_map,
455464
providers = providers,
456-
implicit_outputs = [final_proguard_output_map] if final_proguard_output_map else [],
465+
implicit_outputs = implicit_outputs,
457466
),
458467
)
459468

rules/dex.bzl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ def _process_incremental_dexing(
5252
postprocessing_output_map = None,
5353
startup_profile = None,
5454
build_metadata_output = None,
55+
input_dump_output = None,
5556
inclusion_filter_jar = None,
5657
desugar_dict = {},
5758
transitive_runtime_jars_for_archive = [],
@@ -173,6 +174,7 @@ def _process_incremental_dexing(
173174
postprocessing_output_map = postprocessing_output_map,
174175
startup_profile = startup_profile,
175176
build_metadata_output = build_metadata_output,
177+
input_dump_output = input_dump_output,
176178
optimizing_dexer = optimizing_dexer,
177179
min_sdk_config = min_sdk_config,
178180
toolchain_type = toolchain_type,
@@ -618,6 +620,7 @@ def _optimized_dex_merge(
618620
postprocessing_output_map = None,
619621
startup_profile = None,
620622
build_metadata_output = None,
623+
input_dump_output = None,
621624
optimizing_dexer = None,
622625
min_sdk_config = None,
623626
toolchain_type = None):
@@ -648,6 +651,10 @@ def _optimized_dex_merge(
648651
outputs.append(build_metadata_output)
649652
args.add("--build_metadata_output", build_metadata_output)
650653

654+
if input_dump_output:
655+
outputs.append(input_dump_output)
656+
args.add("--input_dump_output", input_dump_output)
657+
651658
if postprocessing_output_map:
652659
param_file_args.add("--pg-map-output", postprocessing_output_map)
653660
outputs.append(postprocessing_output_map)

0 commit comments

Comments
 (0)