Skip to content

Commit

Permalink
Automated rollback of commit d5eeb04.
Browse files Browse the repository at this point in the history
*** Reason for rollback ***

Starlarkification of proto_library is making progress faster than its toolchainization effort. As such adding JavaToolchainInfo directly to the Starlark implementation will be much easier than adding a native support for it (it's 2 lines of code vs. this PR).

*** Original change description ***

Expose ProtoToolchainInfo to Starlark

Progress on https://docs.google.com/document/d/1go3UMwm2nM8JHhI3MZrtyoFEy3BYg5omGqQmOwcjmNE/edit

Closes bazelbuild#13732.

PiperOrigin-RevId: 410076628
  • Loading branch information
comius authored and copybara-github committed Nov 15, 2021
1 parent 08ced71 commit 10dfca5
Show file tree
Hide file tree
Showing 6 changed files with 8 additions and 224 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,6 @@
import com.google.devtools.build.lib.rules.proto.ProtoConfiguration;
import com.google.devtools.build.lib.rules.proto.ProtoInfo;
import com.google.devtools.build.lib.rules.proto.ProtoLangToolchainRule;
import com.google.devtools.build.lib.rules.proto.ProtoToolchainInfo;
import com.google.devtools.build.lib.rules.python.PyInfo;
import com.google.devtools.build.lib.rules.python.PyRuleClasses.PySymlink;
import com.google.devtools.build.lib.rules.python.PyRuntimeInfo;
Expand Down Expand Up @@ -293,7 +292,6 @@ public void init(ConfiguredRuleClassProvider.Builder builder) {
ProtoBootstrap bootstrap =
new ProtoBootstrap(
ProtoInfo.PROVIDER,
ProtoToolchainInfo.PROVIDER,
BazelProtoCommon.INSTANCE,
new StarlarkAspectStub(),
new ProviderStub());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,12 @@
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.packages.BuiltinProvider;
import com.google.devtools.build.lib.packages.NativeInfo;
import com.google.devtools.build.lib.starlarkbuildapi.proto.ProtoToolchainInfoApi;
import com.google.devtools.build.lib.starlarkbuildapi.proto.ProtoBootstrap;
import javax.annotation.Nullable;
import net.starlark.java.eval.EvalException;
import net.starlark.java.eval.Sequence;

/** Toolchain for {@code proto_*} rules. */
@AutoValue
public abstract class ProtoToolchainInfo extends NativeInfo
implements ProtoToolchainInfoApi<FilesToRunProvider> {
public abstract class ProtoToolchainInfo extends NativeInfo {
public static final ProtoToolchainInfoProvider PROVIDER = new ProtoToolchainInfoProvider();

/** Creates a {@link ProtoToolchainInfo} from a {@link RuleContext}. */
Expand All @@ -47,36 +44,17 @@ public static ProtoToolchainInfo fromRuleContext(RuleContext ruleContext) {
return null;
}

return create(compiler, protoConfiguration.protocOpts());
return new AutoValue_ProtoToolchainInfo(PROVIDER, compiler, protoConfiguration.protocOpts());
}

private static final ProtoToolchainInfo create(
FilesToRunProvider compiler, ImmutableList<String> compilerOptions) {
Preconditions.checkNotNull(compiler);
Preconditions.checkNotNull(compilerOptions);

return new AutoValue_ProtoToolchainInfo(PROVIDER, compiler, compilerOptions);
}

@Override
public abstract FilesToRunProvider getCompiler();

@Override
public abstract ImmutableList<String> getCompilerOptions();

/** Provider class for {@link ProtoToolchainInfo} objects. */
public static class ProtoToolchainInfoProvider extends BuiltinProvider<ProtoToolchainInfo>
implements ProtoToolchainInfoApi.Provider<FilesToRunProvider> {
public static class ProtoToolchainInfoProvider extends BuiltinProvider<ProtoToolchainInfo> {
public ProtoToolchainInfoProvider() {
super(ProtoToolchainInfoApi.NAME, ProtoToolchainInfo.class);
}

@Override
public ProtoToolchainInfoApi<FilesToRunProvider> create(
FilesToRunProvider protoc, Sequence<?> protocOptions) throws EvalException {
return ProtoToolchainInfo.create(
protoc,
Sequence.cast(protocOptions, String.class, "compiler_options").getImmutableList());
super(ProtoBootstrap.PROTO_TOOLCHAIN_INFO_STARLARK_NAME, ProtoToolchainInfo.class);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@

import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.packages.semantics.BuildLanguageOptions;
import com.google.devtools.build.lib.starlarkbuildapi.FileApi;
import com.google.devtools.build.lib.starlarkbuildapi.FilesToRunProviderApi;
import com.google.devtools.build.lib.starlarkbuildapi.ProtoInfoApi.ProtoInfoProviderApi;
import com.google.devtools.build.lib.starlarkbuildapi.StarlarkAspectApi;
import com.google.devtools.build.lib.starlarkbuildapi.core.Bootstrap;
Expand All @@ -30,25 +28,23 @@ public class ProtoBootstrap implements Bootstrap {
/** The name of the proto info provider in Starlark. */
public static final String PROTO_INFO_STARLARK_NAME = "ProtoInfo";

/** The name of the proto toolchain info provider in Starlark. */
public static final String PROTO_TOOLCHAIN_INFO_STARLARK_NAME = "ProtoToolchainInfo";

/** The name of the proto namespace in Starlark. */
public static final String PROTO_COMMON_NAME = "proto_common";

private final ProtoInfoProviderApi protoInfoApiProvider;
private final ProtoToolchainInfoApi.Provider<? extends FilesToRunProviderApi<? extends FileApi>>
protoToolchainInfoApi;
private final Object protoCommon;
private final StarlarkAspectApi protoRegistryAspect;
private final ProviderApi protoRegistryProvider;

public ProtoBootstrap(
ProtoInfoProviderApi protoInfoApiProvider,
ProtoToolchainInfoApi.Provider<? extends FilesToRunProviderApi<? extends FileApi>>
protoToolchainInfoApi,
Object protoCommon,
StarlarkAspectApi protoRegistryAspect,
ProviderApi protoRegistryProvider) {
this.protoInfoApiProvider = protoInfoApiProvider;
this.protoToolchainInfoApi = protoToolchainInfoApi;
this.protoCommon = protoCommon;
this.protoRegistryAspect = protoRegistryAspect;
this.protoRegistryProvider = protoRegistryProvider;
Expand All @@ -57,7 +53,6 @@ public ProtoBootstrap(
@Override
public void addBindingsToBuilder(ImmutableMap.Builder<String, Object> builder) {
builder.put(PROTO_INFO_STARLARK_NAME, protoInfoApiProvider);
builder.put(ProtoToolchainInfoApi.NAME, protoToolchainInfoApi);
builder.put(PROTO_COMMON_NAME, protoCommon);
builder.put(
"ProtoRegistryAspect",
Expand Down

This file was deleted.

15 changes: 0 additions & 15 deletions src/test/java/com/google/devtools/build/lib/rules/proto/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -94,18 +94,3 @@ java_test(
"//third_party:truth",
],
)

java_test(
name = "ProtoToolchainInfoTest",
srcs = [
"ProtoToolchainInfoTest.java",
],
deps = [
"//src/main/java/com/google/devtools/build/lib/analysis:analysis_cluster",
"//src/main/java/com/google/devtools/build/lib/analysis:configured_target",
"//src/main/java/com/google/devtools/build/lib/rules/proto",
"//src/test/java/com/google/devtools/build/lib/analysis/util",
"//third_party:junit4",
"//third_party:truth",
],
)

This file was deleted.

0 comments on commit 10dfca5

Please sign in to comment.