Skip to content

Commit a625dba

Browse files
LeFroschGoogler
andauthored
Add true dependency graph to java-info.txt files (#7506)
1. This is need to work out `.proto` file runtime variant usage correctly 2. and later this will turn into compile dependency graph only allowing to reduce the number of `.jar` files indexed. Bug: 395576137 Bug: 327638725 Test: n/a Change-Id: I58c04b20fb4f067bed15074433869437857fbd79 AOSP: 1c883dae2e5ac5155683e4012dff5e6af4054d51 Co-authored-by: Googler <[email protected]>
1 parent f1b2c7d commit a625dba

File tree

4 files changed

+19
-4
lines changed

4 files changed

+19
-4
lines changed

aspect/build_dependencies.bzl

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ DependenciesInfo = provider(
139139
"The out-of-project dependencies",
140140
fields = {
141141
"label": "the label of a target it describes",
142+
"java_info_file": "a file containing java related info",
142143
"java_info_files": "a list of java info files",
143144
"compile_time_jars": "a list of jars generated by targets",
144145
"target_to_artifacts": "a map between a target and all its artifacts",
@@ -156,6 +157,7 @@ DependenciesInfo = provider(
156157

157158
def create_dependencies_info(
158159
label,
160+
java_info_file = None,
159161
java_info_files = depset(),
160162
compile_time_jars = depset(),
161163
target_to_artifacts = {},
@@ -171,6 +173,7 @@ def create_dependencies_info(
171173
"""A helper function to create a DependenciesInfo provider instance."""
172174
return DependenciesInfo(
173175
label = label,
176+
java_info_file = java_info_file,
174177
java_info_files = java_info_files,
175178
compile_time_jars = compile_time_jars,
176179
target_to_artifacts = target_to_artifacts,
@@ -186,17 +189,19 @@ def create_dependencies_info(
186189
)
187190

188191
def create_java_dependencies_info(
189-
compile_time_jars,
192+
info_file,
190193
info_files,
194+
compile_time_jars,
191195
target_to_artifacts,
192196
aars,
193197
gensrcs,
194198
expand_sources,
195199
test_mode_own_files):
196200
"""A helper function to create a DependenciesInfo provider instance."""
197201
return struct(
198-
compile_time_jars = compile_time_jars,
202+
info_file = info_file,
199203
info_files = info_files,
204+
compile_time_jars = compile_time_jars,
200205
target_to_artifacts = target_to_artifacts,
201206
aars = aars,
202207
gensrcs = gensrcs,
@@ -269,6 +274,7 @@ def merge_dependencies_info(
269274

270275
merged = create_dependencies_info(
271276
label = target.label,
277+
java_info_file = java_dep_info.info_file if java_dep_info else None,
272278
java_info_files = java_dep_info.info_files if experiment_multi_info_file and java_dep_info else None,
273279
compile_time_jars = java_dep_info.compile_time_jars if java_dep_info else None,
274280
target_to_artifacts = java_dep_info.target_to_artifacts if not experiment_multi_info_file and java_dep_info else None,
@@ -306,6 +312,7 @@ def _encode_target_info_proto(target_to_artifacts):
306312
contents.append(
307313
struct(
308314
target = label,
315+
dep_java_info_files = _encode_file_list(target_info["dep_java_info_files"] if "dep_java_info_files" in target_info else []),
309316
jars = _encode_file_list(target_info["jars"]) if "jars" in target_info else [],
310317
ide_aars = _encode_file_list(target_info["ide_aars"]),
311318
gen_srcs = _encode_file_list(target_info["gen_srcs"]),
@@ -662,13 +669,15 @@ def _collect_own_java_artifacts(
662669
)
663670

664671
def _target_to_artifact_entry(
672+
dep_java_info_files = [],
665673
jars = [],
666674
ide_aars = [],
667675
gen_srcs = [],
668676
srcs = [],
669677
srcjars = [],
670678
android_resources_package = ""):
671679
return {
680+
"dep_java_info_files": dep_java_info_files,
672681
"jars": jars,
673682
"ide_aars": ide_aars,
674683
"gen_srcs": gen_srcs,
@@ -707,10 +716,12 @@ def _collect_own_and_dependency_java_artifacts(
707716
target_to_artifacts = {}
708717

709718
# Flattening is fine here as these are files from a single target (maybe some are re-exported from a few of its dependencies).
719+
dep_java_info_files = [info.java_info_file for info in dependency_infos.values() if info.java_info_file]
710720
jars = own_files.jar_depset.to_list()
711721
ide_aars = own_files.ide_aar_depset.to_list()
712722
gen_srcs = own_files.gensrc_depset.to_list() # Flattening is fine here (these are files from one target)
713723
target_to_artifacts[str(target.label)] = _target_to_artifact_entry(
724+
dep_java_info_files = dep_java_info_files, # No flattening here. This is a list of direct dependencies only.
714725
jars = jars,
715726
ide_aars = ide_aars,
716727
gen_srcs = gen_srcs,
@@ -858,11 +869,12 @@ def _collect_java_dependencies_core_impl(
858869
if "ij-ignore-source-transform" in ctx.rule.attr.tags:
859870
expand_sources = True
860871

861-
java_info_file = []
872+
java_info_file = None
862873
if params.experiment_multi_info_file:
863874
java_info_file = _write_java_target_info(target.label, target_to_artifacts, ctx)
864875

865876
return create_java_dependencies_info(
877+
info_file = java_info_file if params.experiment_multi_info_file else None,
866878
info_files = depset([java_info_file], transitive = [d.java_info_files for d in dependency_infos.values()]) if params.experiment_multi_info_file else None,
867879
target_to_artifacts = target_to_artifacts if not params.experiment_multi_info_file else None,
868880
compile_time_jars = compile_jars,

base/src/com/google/idea/blaze/base/qsync/BazelDependencyBuilder.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -536,7 +536,8 @@ private CcCompilationInfo readCcInfoFile(ByteSource file) throws BuildException
536536
readArtifactInfoProtoFile(CcCompilationInfo.newBuilder(), file).build());
537537
}
538538

539-
protected <B extends Message.Builder> B readArtifactInfoProtoFile(B builder, ByteSource file)
539+
@VisibleForTesting
540+
public static <B extends Message.Builder> B readArtifactInfoProtoFile(B builder, ByteSource file)
540541
throws BuildException {
541542
try (InputStream inputStream = file.openStream()) {
542543
TextFormat.Parser parser = TextFormat.Parser.newBuilder().build();

querysync/java/com/google/idea/blaze/qsync/artifacts/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ proto_library(
2929
visibility = [
3030
"//querysync/java/com/google/idea/blaze/qsync/cc:__pkg__",
3131
"//querysync/java/com/google/idea/blaze/qsync/java:__pkg__",
32+
"//third_party/google/aswb/javatests/com/google/devtools/intellij/blaze/plugin/aswb:__subpackages__",
3233
],
3334
)
3435

querysync/java/com/google/idea/blaze/qsync/java/java_target_info.proto

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ message JavaTargetArtifacts {
3131
repeated OutputArtifact gen_srcs = 6;
3232
repeated string srcjars = 7; // Workspace relative
3333
string android_resources_package = 8; // Package that this target places its Android R class in
34+
repeated OutputArtifact dep_java_info_files = 9; // Workspace relative
3435
}
3536

3637
// The list of all java targets built and their artifacts. Note that because

0 commit comments

Comments
 (0)