@@ -139,6 +139,7 @@ DependenciesInfo = provider(
139
139
"The out-of-project dependencies" ,
140
140
fields = {
141
141
"label" : "the label of a target it describes" ,
142
+ "java_info_file" : "a file containing java related info" ,
142
143
"java_info_files" : "a list of java info files" ,
143
144
"compile_time_jars" : "a list of jars generated by targets" ,
144
145
"target_to_artifacts" : "a map between a target and all its artifacts" ,
@@ -156,6 +157,7 @@ DependenciesInfo = provider(
156
157
157
158
def create_dependencies_info (
158
159
label ,
160
+ java_info_file = None ,
159
161
java_info_files = depset (),
160
162
compile_time_jars = depset (),
161
163
target_to_artifacts = {},
@@ -171,6 +173,7 @@ def create_dependencies_info(
171
173
"""A helper function to create a DependenciesInfo provider instance."""
172
174
return DependenciesInfo (
173
175
label = label ,
176
+ java_info_file = java_info_file ,
174
177
java_info_files = java_info_files ,
175
178
compile_time_jars = compile_time_jars ,
176
179
target_to_artifacts = target_to_artifacts ,
@@ -186,17 +189,19 @@ def create_dependencies_info(
186
189
)
187
190
188
191
def create_java_dependencies_info (
189
- compile_time_jars ,
192
+ info_file ,
190
193
info_files ,
194
+ compile_time_jars ,
191
195
target_to_artifacts ,
192
196
aars ,
193
197
gensrcs ,
194
198
expand_sources ,
195
199
test_mode_own_files ):
196
200
"""A helper function to create a DependenciesInfo provider instance."""
197
201
return struct (
198
- compile_time_jars = compile_time_jars ,
202
+ info_file = info_file ,
199
203
info_files = info_files ,
204
+ compile_time_jars = compile_time_jars ,
200
205
target_to_artifacts = target_to_artifacts ,
201
206
aars = aars ,
202
207
gensrcs = gensrcs ,
@@ -269,6 +274,7 @@ def merge_dependencies_info(
269
274
270
275
merged = create_dependencies_info (
271
276
label = target .label ,
277
+ java_info_file = java_dep_info .info_file if java_dep_info else None ,
272
278
java_info_files = java_dep_info .info_files if experiment_multi_info_file and java_dep_info else None ,
273
279
compile_time_jars = java_dep_info .compile_time_jars if java_dep_info else None ,
274
280
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):
306
312
contents .append (
307
313
struct (
308
314
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 []),
309
316
jars = _encode_file_list (target_info ["jars" ]) if "jars" in target_info else [],
310
317
ide_aars = _encode_file_list (target_info ["ide_aars" ]),
311
318
gen_srcs = _encode_file_list (target_info ["gen_srcs" ]),
@@ -662,13 +669,15 @@ def _collect_own_java_artifacts(
662
669
)
663
670
664
671
def _target_to_artifact_entry (
672
+ dep_java_info_files = [],
665
673
jars = [],
666
674
ide_aars = [],
667
675
gen_srcs = [],
668
676
srcs = [],
669
677
srcjars = [],
670
678
android_resources_package = "" ):
671
679
return {
680
+ "dep_java_info_files" : dep_java_info_files ,
672
681
"jars" : jars ,
673
682
"ide_aars" : ide_aars ,
674
683
"gen_srcs" : gen_srcs ,
@@ -707,10 +716,12 @@ def _collect_own_and_dependency_java_artifacts(
707
716
target_to_artifacts = {}
708
717
709
718
# 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 ]
710
720
jars = own_files .jar_depset .to_list ()
711
721
ide_aars = own_files .ide_aar_depset .to_list ()
712
722
gen_srcs = own_files .gensrc_depset .to_list () # Flattening is fine here (these are files from one target)
713
723
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.
714
725
jars = jars ,
715
726
ide_aars = ide_aars ,
716
727
gen_srcs = gen_srcs ,
@@ -858,11 +869,12 @@ def _collect_java_dependencies_core_impl(
858
869
if "ij-ignore-source-transform" in ctx .rule .attr .tags :
859
870
expand_sources = True
860
871
861
- java_info_file = []
872
+ java_info_file = None
862
873
if params .experiment_multi_info_file :
863
874
java_info_file = _write_java_target_info (target .label , target_to_artifacts , ctx )
864
875
865
876
return create_java_dependencies_info (
877
+ info_file = java_info_file if params .experiment_multi_info_file else None ,
866
878
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 ,
867
879
target_to_artifacts = target_to_artifacts if not params .experiment_multi_info_file else None ,
868
880
compile_time_jars = compile_jars ,
0 commit comments