Skip to content

Commit 5a6b1a8

Browse files
kotlajacopybara-github
authored andcommitted
Automated rollback of commit ae349e9.
*** Reason for rollback *** This CL breaks proto_common.bzl file which seems that can't load providers.bzl file. *** Original change description *** Export ProtoLangToolchainInfo provider and flip proto_lang_toolchain rule I’ve exported ProtoLangToolchainInfo provider from it’s native class by adding two new functions: one that’s creating starlark provider (create function), and the other that’s wrapping the starlark provider as a native one (get function). Also, in all locations where native ProtoLangToolchainInfo provider was used/created, I’ve modified it with previously mentioned functions. I’ve also replaced native ProtoL... *** PiperOrigin-RevId: 446171449
1 parent b2cbc9a commit 5a6b1a8

20 files changed

Lines changed: 382 additions & 242 deletions

src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@
112112
import com.google.devtools.build.lib.rules.proto.BazelProtoLibraryRule;
113113
import com.google.devtools.build.lib.rules.proto.ProtoConfiguration;
114114
import com.google.devtools.build.lib.rules.proto.ProtoInfo;
115+
import com.google.devtools.build.lib.rules.proto.ProtoLangToolchainProvider;
115116
import com.google.devtools.build.lib.rules.proto.ProtoLangToolchainRule;
116117
import com.google.devtools.build.lib.rules.python.PyInfo;
117118
import com.google.devtools.build.lib.rules.python.PyRuleClasses.PySymlink;
@@ -291,6 +292,8 @@ public void init(ConfiguredRuleClassProvider.Builder builder) {
291292
new StarlarkAspectStub(),
292293
new ProviderStub());
293294
builder.addStarlarkBootstrap(bootstrap);
295+
builder.addStarlarkBuiltinsInternal(
296+
"ProtoLangToolchainInfo", ProtoLangToolchainProvider.PROVIDER);
294297
}
295298

296299
@Override

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public RuleClass build(RuleClass.Builder builder, RuleDefinitionEnvironment envi
5656
.aspect(javaProtoAspect))
5757
.add(
5858
attr(JavaProtoAspectCommon.LITE_PROTO_TOOLCHAIN_ATTR, LABEL)
59-
.mandatoryProviders(ProtoLangToolchainProvider.PROVIDER_ID)
59+
.mandatoryProviders(ProtoLangToolchainProvider.PROVIDER.id())
6060
.value(getProtoToolchainLabel(DEFAULT_PROTO_TOOLCHAIN_LABEL)))
6161
.advertiseStarlarkProvider(StarlarkProviderIdentifier.forKey(JavaInfo.PROVIDER.getKey()))
6262
.build();

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@
2525
import com.google.devtools.build.lib.bazel.rules.java.BazelJavaSemantics;
2626
import com.google.devtools.build.lib.packages.AspectDefinition;
2727
import com.google.devtools.build.lib.packages.AspectParameters;
28-
import com.google.devtools.build.lib.packages.StarlarkInfo;
2928
import com.google.devtools.build.lib.rules.java.proto.JavaProtoAspect;
3029
import com.google.devtools.build.lib.rules.java.proto.RpcSupport;
30+
import com.google.devtools.build.lib.rules.proto.ProtoLangToolchainProvider;
3131

3232
/** An Aspect which BazelJavaProtoLibrary injects to build Java SPEED protos. */
3333
public class BazelJavaProtoAspect extends JavaProtoAspect {
@@ -56,7 +56,7 @@ public boolean allowServices(RuleContext ruleContext) {
5656
}
5757

5858
@Override
59-
public Optional<StarlarkInfo> getToolchain(RuleContext ruleContext) {
59+
public Optional<ProtoLangToolchainProvider> getToolchain(RuleContext ruleContext) {
6060
return Optional.absent();
6161
}
6262

src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ public AspectDefinition getDefinition(AspectParameters params) {
186186
ImmutableList.of(
187187
// For proto_lang_toolchain rules, where we just want to get at their runtime
188188
// deps.
189-
ImmutableSet.of(ProtoLangToolchainProvider.PROVIDER_ID)))
189+
ImmutableSet.of(ProtoLangToolchainProvider.PROVIDER.id())))
190190
.addToolchainTypes(
191191
ToolchainTypeRequirement.create(
192192
Label.parseAbsoluteUnchecked(toolsRepository + sdkToolchainLabel)))

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

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@
4343
import com.google.devtools.build.lib.packages.Attribute.LabelLateBoundDefault;
4444
import com.google.devtools.build.lib.packages.NativeAspectClass;
4545
import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException;
46-
import com.google.devtools.build.lib.packages.StarlarkInfo;
4746
import com.google.devtools.build.lib.packages.TargetUtils;
4847
import com.google.devtools.build.lib.rules.cpp.AspectLegalCppSemantics;
4948
import com.google.devtools.build.lib.rules.cpp.CcCommon;
@@ -130,7 +129,7 @@ public AspectDefinition getDefinition(AspectParameters aspectParameters) {
130129
.useToolchainTransition(true)
131130
.add(
132131
attr(PROTO_TOOLCHAIN_ATTR, LABEL)
133-
.mandatoryProviders(ProtoLangToolchainProvider.PROVIDER_ID)
132+
.mandatoryProviders(ProtoLangToolchainProvider.PROVIDER.id())
134133
.value(PROTO_TOOLCHAIN_LABEL))
135134
.add(
136135
attr(CcToolchain.CC_TOOLCHAIN_DEFAULT_ATTRIBUTE_NAME, LABEL)
@@ -289,7 +288,7 @@ private static void checkProtoLibrariesInDeps(
289288

290289
private boolean areSrcsExcluded() throws RuleErrorException, InterruptedException {
291290
return !ProtoCommon.shouldGenerateCode(
292-
ruleContext, protoTarget, getStarlarkProtoToolchainProvider(), "cc_proto_library");
291+
ruleContext, protoTarget, getProtoToolchainProvider(), "cc_proto_library");
293292
}
294293

295294
private FeatureConfiguration getFeatureConfiguration()
@@ -462,19 +461,15 @@ private void createProtoCompileAction(Collection<Artifact> outputs)
462461
ProtoCommon.compile(
463462
ruleContext,
464463
protoTarget,
465-
getStarlarkProtoToolchainProvider(),
464+
getProtoToolchainProvider(),
466465
outputs,
467466
genfilesPath,
468467
"Generating C++ proto_library %{label}");
469468
}
470469
}
471470

472471
private ProtoLangToolchainProvider getProtoToolchainProvider() {
473-
return ProtoLangToolchainProvider.get(ruleContext, PROTO_TOOLCHAIN_ATTR);
474-
}
475-
476-
private StarlarkInfo getStarlarkProtoToolchainProvider() {
477-
return ProtoLangToolchainProvider.getStarlarkProvider(ruleContext, PROTO_TOOLCHAIN_ATTR);
472+
return ruleContext.getPrerequisite(PROTO_TOOLCHAIN_ATTR, ProtoLangToolchainProvider.PROVIDER);
478473
}
479474

480475
public void addProviders(ConfiguredAspect.Builder builder) {

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ public AspectDefinition getDefinition(AspectParameters aspectParameters) {
116116
ImmutableList.of(StarlarkProviderIdentifier.forKey(JavaInfo.PROVIDER.getKey())))
117117
.add(
118118
attr(JavaProtoAspectCommon.LITE_PROTO_TOOLCHAIN_ATTR, LABEL)
119-
.mandatoryProviders(ProtoLangToolchainProvider.PROVIDER_ID)
119+
.mandatoryProviders(ProtoLangToolchainProvider.PROVIDER.id())
120120
.value(getProtoToolchainLabel(defaultProtoToolchainLabel)))
121121
.add(
122122
attr(JavaRuleClasses.JAVA_TOOLCHAIN_ATTRIBUTE_NAME, LABEL)
@@ -245,7 +245,7 @@ private void createProtoCompileAction(Artifact sourceJar)
245245
ProtoCommon.compile(
246246
ruleContext,
247247
protoTarget,
248-
aspectCommon.getStarlarkProtoToolchainProvider(),
248+
aspectCommon.getProtoToolchainProvider(),
249249
ImmutableList.of(sourceJar),
250250
sourceJar.getExecPathString(),
251251
"Generating JavaLite proto_library %{label}");

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ void addProviders(ConfiguredAspect.Builder aspect)
224224
if (ProtoCommon.shouldGenerateCode(
225225
ruleContext,
226226
protoTarget,
227-
aspectCommon.getStarlarkProtoToolchainProvider(),
227+
aspectCommon.getProtoToolchainProvider(),
228228
"java_proto_library")) {
229229
Artifact sourceJar = aspectCommon.getSourceJarArtifact();
230230
createProtoCompileAction(sourceJar);
@@ -320,7 +320,7 @@ private void createProtoCompileAction(Artifact sourceJar)
320320
ProtoCommon.compile(
321321
ruleContext,
322322
protoTarget,
323-
aspectCommon.getStarlarkProtoToolchainProvider(),
323+
aspectCommon.getProtoToolchainProvider(),
324324
ImmutableList.of(sourceJar),
325325
/* pluginOutput= */ null,
326326
additionalArgs,

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

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
2525
import com.google.devtools.build.lib.analysis.config.CoreOptionConverters.StrictDepsMode;
2626
import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException;
27-
import com.google.devtools.build.lib.packages.StarlarkInfo;
2827
import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider;
2928
import com.google.devtools.build.lib.rules.java.JavaCompilationArtifacts;
3029
import com.google.devtools.build.lib.rules.java.JavaInfo;
@@ -160,22 +159,16 @@ public ImmutableList<TransitiveInfoCollection> getProtoRuntimeDeps() {
160159

161160
/** Returns the toolchain that specifies how to generate code from {@code .proto} files. */
162161
public ProtoLangToolchainProvider getProtoToolchainProvider() {
163-
return checkNotNull(ProtoLangToolchainProvider.get(ruleContext, protoToolchainAttr));
164-
}
165-
166-
/**
167-
* Returns the Starlark toolchain that specifies how to generate code from {@code .proto} files.
168-
*/
169-
public StarlarkInfo getStarlarkProtoToolchainProvider() {
170162
return checkNotNull(
171-
ProtoLangToolchainProvider.getStarlarkProvider(ruleContext, protoToolchainAttr));
163+
ruleContext.getPrerequisite(protoToolchainAttr, ProtoLangToolchainProvider.PROVIDER));
172164
}
173165

174166
/**
175167
* Returns the toolchain that specifies how to generate Java-lite code from {@code .proto} files.
176168
*/
177169
static ProtoLangToolchainProvider getLiteProtoToolchainProvider(RuleContext ruleContext) {
178-
return ProtoLangToolchainProvider.get(ruleContext, LITE_PROTO_TOOLCHAIN_ATTR);
170+
return ruleContext.getPrerequisite(
171+
LITE_PROTO_TOOLCHAIN_ATTR, ProtoLangToolchainProvider.PROVIDER);
179172
}
180173

181174
/**
@@ -213,9 +206,9 @@ boolean shouldGenerateCode(ConfiguredTarget protoTarget, String ruleName)
213206

214207
boolean shouldGenerate =
215208
ProtoCommon.shouldGenerateCode(
216-
ruleContext, protoTarget, getStarlarkProtoToolchainProvider(), ruleName);
209+
ruleContext, protoTarget, getProtoToolchainProvider(), ruleName);
217210
if (rpcSupport != null) {
218-
Optional<StarlarkInfo> toolchain = rpcSupport.getToolchain(ruleContext);
211+
Optional<ProtoLangToolchainProvider> toolchain = rpcSupport.getToolchain(ruleContext);
219212
if (toolchain.isPresent()) {
220213
if (!ProtoCommon.shouldGenerateCode(ruleContext, protoTarget, toolchain.get(), ruleName)) {
221214
shouldGenerate = false;

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

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import com.google.devtools.build.lib.analysis.platform.ConstraintValueInfo;
2424
import com.google.devtools.build.lib.analysis.starlark.StarlarkRuleContext;
2525
import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException;
26-
import com.google.devtools.build.lib.packages.StarlarkInfo;
2726
import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider;
2827
import com.google.devtools.build.lib.rules.java.JavaInfo;
2928
import com.google.devtools.build.lib.rules.proto.ProtoCommon;
@@ -50,7 +49,7 @@ public void createProtoCompileAction(
5049
ProtoCommon.compile(
5150
starlarkRuleContext.getRuleContext(),
5251
target,
53-
getStarlarkProtoToolchainProvider(starlarkRuleContext, protoToolchainAttr),
52+
getProtoToolchainProvider(starlarkRuleContext, protoToolchainAttr),
5453
ImmutableList.of(sourceJar),
5554
sourceJar.getExecPathString(),
5655
"Generating JavaLite proto_library %{label}");
@@ -91,13 +90,6 @@ private static ProtoLangToolchainProvider getProtoToolchainProvider(
9190
StarlarkRuleContext starlarkRuleContext, String protoToolchainAttr) throws EvalException {
9291
ConfiguredTarget javaliteToolchain =
9392
(ConfiguredTarget) checkNotNull(starlarkRuleContext.getAttr().getValue(protoToolchainAttr));
94-
return checkNotNull(ProtoLangToolchainProvider.get(javaliteToolchain));
95-
}
96-
97-
private static StarlarkInfo getStarlarkProtoToolchainProvider(
98-
StarlarkRuleContext starlarkRuleContext, String protoToolchainAttr) throws EvalException {
99-
ConfiguredTarget javaliteToolchain =
100-
(ConfiguredTarget) checkNotNull(starlarkRuleContext.getAttr().getValue(protoToolchainAttr));
101-
return checkNotNull(ProtoLangToolchainProvider.getStarlarkProvider(javaliteToolchain));
93+
return checkNotNull(javaliteToolchain.get(ProtoLangToolchainProvider.PROVIDER));
10294
}
10395
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import com.google.devtools.build.lib.analysis.starlark.Args;
2424
import com.google.devtools.build.lib.packages.AspectDefinition;
2525
import com.google.devtools.build.lib.packages.AspectParameters;
26-
import com.google.devtools.build.lib.packages.StarlarkInfo;
26+
import com.google.devtools.build.lib.rules.proto.ProtoLangToolchainProvider;
2727
import net.starlark.java.eval.EvalException;
2828

2929
/** Used by java_proto_library to support Google-specific features. */
@@ -35,7 +35,7 @@ void populateAdditionalArgs(RuleContext ruleContext, Artifact sourceJar, Args ar
3535

3636
boolean allowServices(RuleContext ruleContext);
3737

38-
Optional<StarlarkInfo> getToolchain(RuleContext ruleContext);
38+
Optional<ProtoLangToolchainProvider> getToolchain(RuleContext ruleContext);
3939

4040
ImmutableList<TransitiveInfoCollection> getRuntimes(RuleContext ruleContext);
4141

0 commit comments

Comments
 (0)