Remove --incompatible_blacklisted_protos_requires_proto_info
Cleanup after flipping the flag in Bazel 4.0 (53705f6a014067a8f17cf0af4da0ad99fe1169be)
Closes #12431.
PiperOrigin-RevId: 342021174
diff --git a/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoConfiguration.java
index f7a536b..8200dab 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoConfiguration.java
@@ -169,19 +169,6 @@
help = "If true, add --allowed_public_imports to the java compile actions.")
public boolean experimentalJavaProtoAddAllowedPublicImports;
- @Option(
- name = "incompatible_blacklisted_protos_requires_proto_info",
- defaultValue = "true",
- documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
- effectTags = {OptionEffectTag.LOADING_AND_ANALYSIS},
- metadataTags = {
- OptionMetadataTag.INCOMPATIBLE_CHANGE,
- OptionMetadataTag.TRIGGERED_BY_ALL_INCOMPATIBLE_CHANGES
- },
- help =
- "If enabled, 'proto_lang_toolchain.blacklisted_protos' requires provider 'ProtoInfo'")
- public boolean blacklistedProtosRequiresProtoInfo;
-
@Override
public FragmentOptions getHost() {
Options host = (Options) super.getHost();
@@ -201,7 +188,6 @@
host.experimentalJavaProtoAddAllowedPublicImports =
experimentalJavaProtoAddAllowedPublicImports;
host.generatedProtosInVirtualImports = generatedProtosInVirtualImports;
- host.blacklistedProtosRequiresProtoInfo = blacklistedProtosRequiresProtoInfo;
return host;
}
}
@@ -295,8 +281,4 @@
public boolean generatedProtosInVirtualImports() {
return options.generatedProtosInVirtualImports;
}
-
- public boolean blacklistedProtosRequiresProtoInfo() {
- return options.blacklistedProtosRequiresProtoInfo;
- }
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoLangToolchain.java b/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoLangToolchain.java
index db9c3eb..e5911c7 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoLangToolchain.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoLangToolchain.java
@@ -19,14 +19,12 @@
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.MutableActionGraph.ActionConflictException;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
-import com.google.devtools.build.lib.analysis.FileProvider;
import com.google.devtools.build.lib.analysis.FilesToRunProvider;
import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder;
import com.google.devtools.build.lib.analysis.RuleConfiguredTargetFactory;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.Runfiles;
import com.google.devtools.build.lib.analysis.RunfilesProvider;
-import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.packages.Type;
@@ -36,22 +34,9 @@
public ConfiguredTarget create(RuleContext ruleContext)
throws InterruptedException, RuleErrorException, ActionConflictException {
NestedSetBuilder<Artifact> blacklistedProtos = NestedSetBuilder.stableOrder();
- for (TransitiveInfoCollection protos : ruleContext.getPrerequisites("blacklisted_protos")) {
- ProtoInfo protoInfo = protos.get(ProtoInfo.PROVIDER);
- if (protoInfo == null
- && ruleContext
- .getFragment(ProtoConfiguration.class)
- .blacklistedProtosRequiresProtoInfo()) {
- ruleContext.ruleError(
- "'" + ruleContext.getLabel() + "' does not have mandatory provider 'ProtoInfo'.");
- }
- if (protoInfo != null) {
- blacklistedProtos.addTransitive(protoInfo.getOriginalTransitiveProtoSources());
- } else {
- // Only add files from FileProvider if |protos| is not a proto_library to avoid adding
- // the descriptor_set of proto_library to the list of blacklisted files.
- blacklistedProtos.addTransitive(protos.getProvider(FileProvider.class).getFilesToBuild());
- }
+ for (ProtoInfo protoInfo :
+ ruleContext.getPrerequisites("blacklisted_protos", ProtoInfo.PROVIDER)) {
+ blacklistedProtos.addTransitive(protoInfo.getOriginalTransitiveProtoSources());
}
return new RuleConfiguredTargetBuilder(ruleContext)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoLangToolchainRule.java b/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoLangToolchainRule.java
index 65e27e9..13425f5 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoLangToolchainRule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoLangToolchainRule.java
@@ -18,14 +18,12 @@
import static com.google.devtools.build.lib.packages.BuildType.LABEL;
import static com.google.devtools.build.lib.packages.BuildType.LABEL_LIST;
-import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.analysis.BaseRuleClasses;
-import com.google.devtools.build.lib.analysis.FileProvider;
import com.google.devtools.build.lib.analysis.RuleDefinition;
import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;
-import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
import com.google.devtools.build.lib.analysis.config.HostTransition;
import com.google.devtools.build.lib.packages.RuleClass;
+import com.google.devtools.build.lib.packages.StarlarkProviderIdentifier;
import com.google.devtools.build.lib.packages.Type;
/** Implements {code proto_lang_toolchain}. */
@@ -70,8 +68,7 @@
.add(
attr("blacklisted_protos", LABEL_LIST)
.allowedFileTypes()
- .mandatoryBuiltinProviders(
- ImmutableList.<Class<? extends TransitiveInfoProvider>>of(FileProvider.class)))
+ .mandatoryProviders(StarlarkProviderIdentifier.forKey(ProtoInfo.PROVIDER.getKey())))
.requiresConfigurationFragments(ProtoConfiguration.class)
.advertiseProvider(ProtoLangToolchainProvider.class)
.removeAttribute("data")
diff --git a/src/test/java/com/google/devtools/build/lib/rules/proto/ProtoLangToolchainTest.java b/src/test/java/com/google/devtools/build/lib/rules/proto/ProtoLangToolchainTest.java
index c9e3231..c75aace 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/proto/ProtoLangToolchainTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/proto/ProtoLangToolchainTest.java
@@ -141,44 +141,6 @@
}
@Test
- public void protoToolchainMixedBlacklist() throws Exception {
- // Tests legacy behaviour.
- useConfiguration("--incompatible_blacklisted_protos_requires_proto_info=false");
-
- scratch.file(
- "third_party/x/BUILD",
- TestConstants.LOAD_PROTO_LIBRARY,
- "licenses(['unencumbered'])",
- "cc_binary(name = 'plugin', srcs = ['plugin.cc'])",
- "cc_library(name = 'runtime', srcs = ['runtime.cc'])",
- "proto_library(name = 'metadata', srcs = ['metadata.proto'])",
- "proto_library(",
- " name = 'descriptor',",
- " srcs = ['descriptor.proto'],",
- " strip_import_prefix = '/third_party')",
- "filegroup(name = 'any', srcs = ['any.proto'])");
-
- scratch.file(
- "foo/BUILD",
- TestConstants.LOAD_PROTO_LANG_TOOLCHAIN,
- "proto_lang_toolchain(",
- " name = 'toolchain',",
- " command_line = 'cmd-line',",
- " plugin = '//third_party/x:plugin',",
- " runtime = '//third_party/x:runtime',",
- " blacklisted_protos = [",
- " '//third_party/x:metadata',",
- " '//third_party/x:descriptor',",
- " '//third_party/x:any']",
- ")");
-
- update(ImmutableList.of("//foo:toolchain"), false, 1, true, new EventBus());
-
- validateProtoLangToolchain(
- getConfiguredTarget("//foo:toolchain").getProvider(ProtoLangToolchainProvider.class));
- }
-
- @Test
public void optionalFieldsAreEmpty() throws Exception {
scratch.file(
"foo/BUILD",