Skip to content

Commit fe4a680

Browse files
Yanniccopybara-github
authored andcommitted
Remove --incompatible_blacklisted_protos_requires_proto_info
Cleanup after flipping the flag in Bazel 4.0 (53705f6) Closes bazelbuild#12431. PiperOrigin-RevId: 342021174
1 parent e25675c commit fe4a680

4 files changed

Lines changed: 5 additions & 79 deletions

File tree

src/main/java/com/google/devtools/build/lib/rules/proto/ProtoConfiguration.java

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -169,19 +169,6 @@ public static class Options extends FragmentOptions {
169169
help = "If true, add --allowed_public_imports to the java compile actions.")
170170
public boolean experimentalJavaProtoAddAllowedPublicImports;
171171

172-
@Option(
173-
name = "incompatible_blacklisted_protos_requires_proto_info",
174-
defaultValue = "true",
175-
documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
176-
effectTags = {OptionEffectTag.LOADING_AND_ANALYSIS},
177-
metadataTags = {
178-
OptionMetadataTag.INCOMPATIBLE_CHANGE,
179-
OptionMetadataTag.TRIGGERED_BY_ALL_INCOMPATIBLE_CHANGES
180-
},
181-
help =
182-
"If enabled, 'proto_lang_toolchain.blacklisted_protos' requires provider 'ProtoInfo'")
183-
public boolean blacklistedProtosRequiresProtoInfo;
184-
185172
@Override
186173
public FragmentOptions getHost() {
187174
Options host = (Options) super.getHost();
@@ -201,7 +188,6 @@ public FragmentOptions getHost() {
201188
host.experimentalJavaProtoAddAllowedPublicImports =
202189
experimentalJavaProtoAddAllowedPublicImports;
203190
host.generatedProtosInVirtualImports = generatedProtosInVirtualImports;
204-
host.blacklistedProtosRequiresProtoInfo = blacklistedProtosRequiresProtoInfo;
205191
return host;
206192
}
207193
}
@@ -295,8 +281,4 @@ public boolean strictPublicImports() {
295281
public boolean generatedProtosInVirtualImports() {
296282
return options.generatedProtosInVirtualImports;
297283
}
298-
299-
public boolean blacklistedProtosRequiresProtoInfo() {
300-
return options.blacklistedProtosRequiresProtoInfo;
301-
}
302284
}

src/main/java/com/google/devtools/build/lib/rules/proto/ProtoLangToolchain.java

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,12 @@
1919
import com.google.devtools.build.lib.actions.Artifact;
2020
import com.google.devtools.build.lib.actions.MutableActionGraph.ActionConflictException;
2121
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
22-
import com.google.devtools.build.lib.analysis.FileProvider;
2322
import com.google.devtools.build.lib.analysis.FilesToRunProvider;
2423
import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder;
2524
import com.google.devtools.build.lib.analysis.RuleConfiguredTargetFactory;
2625
import com.google.devtools.build.lib.analysis.RuleContext;
2726
import com.google.devtools.build.lib.analysis.Runfiles;
2827
import com.google.devtools.build.lib.analysis.RunfilesProvider;
29-
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
3028
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
3129
import com.google.devtools.build.lib.packages.Type;
3230

@@ -36,22 +34,9 @@ public class ProtoLangToolchain implements RuleConfiguredTargetFactory {
3634
public ConfiguredTarget create(RuleContext ruleContext)
3735
throws InterruptedException, RuleErrorException, ActionConflictException {
3836
NestedSetBuilder<Artifact> blacklistedProtos = NestedSetBuilder.stableOrder();
39-
for (TransitiveInfoCollection protos : ruleContext.getPrerequisites("blacklisted_protos")) {
40-
ProtoInfo protoInfo = protos.get(ProtoInfo.PROVIDER);
41-
if (protoInfo == null
42-
&& ruleContext
43-
.getFragment(ProtoConfiguration.class)
44-
.blacklistedProtosRequiresProtoInfo()) {
45-
ruleContext.ruleError(
46-
"'" + ruleContext.getLabel() + "' does not have mandatory provider 'ProtoInfo'.");
47-
}
48-
if (protoInfo != null) {
49-
blacklistedProtos.addTransitive(protoInfo.getOriginalTransitiveProtoSources());
50-
} else {
51-
// Only add files from FileProvider if |protos| is not a proto_library to avoid adding
52-
// the descriptor_set of proto_library to the list of blacklisted files.
53-
blacklistedProtos.addTransitive(protos.getProvider(FileProvider.class).getFilesToBuild());
54-
}
37+
for (ProtoInfo protoInfo :
38+
ruleContext.getPrerequisites("blacklisted_protos", ProtoInfo.PROVIDER)) {
39+
blacklistedProtos.addTransitive(protoInfo.getOriginalTransitiveProtoSources());
5540
}
5641

5742
return new RuleConfiguredTargetBuilder(ruleContext)

src/main/java/com/google/devtools/build/lib/rules/proto/ProtoLangToolchainRule.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,12 @@
1818
import static com.google.devtools.build.lib.packages.BuildType.LABEL;
1919
import static com.google.devtools.build.lib.packages.BuildType.LABEL_LIST;
2020

21-
import com.google.common.collect.ImmutableList;
2221
import com.google.devtools.build.lib.analysis.BaseRuleClasses;
23-
import com.google.devtools.build.lib.analysis.FileProvider;
2422
import com.google.devtools.build.lib.analysis.RuleDefinition;
2523
import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;
26-
import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
2724
import com.google.devtools.build.lib.analysis.config.HostTransition;
2825
import com.google.devtools.build.lib.packages.RuleClass;
26+
import com.google.devtools.build.lib.packages.StarlarkProviderIdentifier;
2927
import com.google.devtools.build.lib.packages.Type;
3028

3129
/** Implements {code proto_lang_toolchain}. */
@@ -70,8 +68,7 @@ public RuleClass build(RuleClass.Builder builder, RuleDefinitionEnvironment envi
7068
.add(
7169
attr("blacklisted_protos", LABEL_LIST)
7270
.allowedFileTypes()
73-
.mandatoryBuiltinProviders(
74-
ImmutableList.<Class<? extends TransitiveInfoProvider>>of(FileProvider.class)))
71+
.mandatoryProviders(StarlarkProviderIdentifier.forKey(ProtoInfo.PROVIDER.getKey())))
7572
.requiresConfigurationFragments(ProtoConfiguration.class)
7673
.advertiseProvider(ProtoLangToolchainProvider.class)
7774
.removeAttribute("data")

src/test/java/com/google/devtools/build/lib/rules/proto/ProtoLangToolchainTest.java

Lines changed: 0 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -140,44 +140,6 @@ public void protoToolchainBlacklistTransitiveProtos() throws Exception {
140140
getConfiguredTarget("//foo:toolchain").getProvider(ProtoLangToolchainProvider.class));
141141
}
142142

143-
@Test
144-
public void protoToolchainMixedBlacklist() throws Exception {
145-
// Tests legacy behaviour.
146-
useConfiguration("--incompatible_blacklisted_protos_requires_proto_info=false");
147-
148-
scratch.file(
149-
"third_party/x/BUILD",
150-
TestConstants.LOAD_PROTO_LIBRARY,
151-
"licenses(['unencumbered'])",
152-
"cc_binary(name = 'plugin', srcs = ['plugin.cc'])",
153-
"cc_library(name = 'runtime', srcs = ['runtime.cc'])",
154-
"proto_library(name = 'metadata', srcs = ['metadata.proto'])",
155-
"proto_library(",
156-
" name = 'descriptor',",
157-
" srcs = ['descriptor.proto'],",
158-
" strip_import_prefix = '/third_party')",
159-
"filegroup(name = 'any', srcs = ['any.proto'])");
160-
161-
scratch.file(
162-
"foo/BUILD",
163-
TestConstants.LOAD_PROTO_LANG_TOOLCHAIN,
164-
"proto_lang_toolchain(",
165-
" name = 'toolchain',",
166-
" command_line = 'cmd-line',",
167-
" plugin = '//third_party/x:plugin',",
168-
" runtime = '//third_party/x:runtime',",
169-
" blacklisted_protos = [",
170-
" '//third_party/x:metadata',",
171-
" '//third_party/x:descriptor',",
172-
" '//third_party/x:any']",
173-
")");
174-
175-
update(ImmutableList.of("//foo:toolchain"), false, 1, true, new EventBus());
176-
177-
validateProtoLangToolchain(
178-
getConfiguredTarget("//foo:toolchain").getProvider(ProtoLangToolchainProvider.class));
179-
}
180-
181143
@Test
182144
public void optionalFieldsAreEmpty() throws Exception {
183145
scratch.file(

0 commit comments

Comments
 (0)