Skip to content

Commit c85ecbe

Browse files
Yanniccopybara-github
authored andcommitted
Accept proto_library as //tools/objc:protobuf_well_known_types
Part of the migration of Protobuf rules/aspects to `ProtoSource`. A future change will make `ProtoInfo` mandatory (similar to what was done for `proto_lang_toolchain`). Note that this is for Obj-C Protobuf rules which don't exist in Bazel. Updates #10005 Closes #12486. PiperOrigin-RevId: 344498042
1 parent 20f62f8 commit c85ecbe

File tree

2 files changed

+14
-4
lines changed

2 files changed

+14
-4
lines changed

src/main/java/com/google/devtools/build/lib/rules/objc/BUILD

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,13 @@ java_library(
3030
"//src/main/java/com/google/devtools/build/lib/analysis:config/core_options",
3131
"//src/main/java/com/google/devtools/build/lib/analysis:config/fragment",
3232
"//src/main/java/com/google/devtools/build/lib/analysis:config/fragment_options",
33-
"//src/main/java/com/google/devtools/build/lib/analysis:config/fragment_provider",
3433
"//src/main/java/com/google/devtools/build/lib/analysis:config/host_transition",
35-
"//src/main/java/com/google/devtools/build/lib/analysis:config/invalid_configuration_exception",
3634
"//src/main/java/com/google/devtools/build/lib/analysis:config/transitions/composing_transition_factory",
3735
"//src/main/java/com/google/devtools/build/lib/analysis:config/transitions/patch_transition",
3836
"//src/main/java/com/google/devtools/build/lib/analysis:config/transitions/split_transition",
3937
"//src/main/java/com/google/devtools/build/lib/analysis:config/transitions/transition_factory",
4038
"//src/main/java/com/google/devtools/build/lib/analysis:configured_target",
39+
"//src/main/java/com/google/devtools/build/lib/analysis:file_provider",
4140
"//src/main/java/com/google/devtools/build/lib/analysis:platform_options",
4241
"//src/main/java/com/google/devtools/build/lib/analysis:rule_definition_environment",
4342
"//src/main/java/com/google/devtools/build/lib/analysis:test/instrumented_files_info",

src/main/java/com/google/devtools/build/lib/rules/objc/ProtoAttributes.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,9 @@
2323
import com.google.common.collect.ImmutableList;
2424
import com.google.common.collect.ImmutableSet;
2525
import com.google.devtools.build.lib.actions.Artifact;
26-
import com.google.devtools.build.lib.analysis.PrerequisiteArtifacts;
26+
import com.google.devtools.build.lib.analysis.FileProvider;
2727
import com.google.devtools.build.lib.analysis.RuleContext;
28+
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
2829
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
2930
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
3031
import com.google.devtools.build.lib.rules.proto.ProtoInfo;
@@ -86,7 +87,17 @@ ImmutableList<Artifact> getPortableProtoFilters() {
8687

8788
/** Returns the list of well known type protos. */
8889
NestedSet<Artifact> getWellKnownTypeProtos() {
89-
return PrerequisiteArtifacts.nestedSet(ruleContext, ObjcRuleClasses.PROTOBUF_WELL_KNOWN_TYPES);
90+
NestedSetBuilder<Artifact> wellKnownTypeProtos = NestedSetBuilder.stableOrder();
91+
for (TransitiveInfoCollection protos :
92+
ruleContext.getPrerequisites(ObjcRuleClasses.PROTOBUF_WELL_KNOWN_TYPES)) {
93+
ProtoInfo protoInfo = protos.get(ProtoInfo.PROVIDER);
94+
if (protoInfo != null) {
95+
wellKnownTypeProtos.addTransitive(protoInfo.getTransitiveProtoSources());
96+
} else {
97+
wellKnownTypeProtos.addTransitive(protos.getProvider(FileProvider.class).getFilesToBuild());
98+
}
99+
}
100+
return wellKnownTypeProtos.build();
90101
}
91102

92103
/** Returns the list of proto files to compile. */

0 commit comments

Comments
 (0)