aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java
diff options
context:
space:
mode:
authorGravatar Carmi Grushko <carmi@google.com>2016-12-07 21:15:22 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2016-12-07 22:21:13 +0000
commit2856008a8ee47d1c9ba376e548a1fdb7b064f130 (patch)
tree6c8f672ea62a2f38bb201ee7dc82bc4b72b6d813 /src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java
parenteeb9297643bc9fc33979bd2f2825159fa0854d20 (diff)
Clean up after transition of java_xxx_proto_library rules to proto-toolchains.
This hardcodes usage of proto-toolchains, which triggers strict-proto-deps. Since strict-proto-deps relies on a proto-compiler feature which doesn't exist yet, I've also changed the default of --strict_proto_deps to 'default', which won't trigger the check unless specifically requested. -- PiperOrigin-RevId: 141347426 MOS_MIGRATED_REVID=141347426
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java125
1 files changed, 26 insertions, 99 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java
index 62205d5edb..164b582c0d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java
@@ -21,7 +21,6 @@ import static com.google.devtools.build.lib.cmdline.Label.parseAbsoluteUnchecked
import static com.google.devtools.build.lib.packages.Attribute.ConfigurationTransition.HOST;
import static com.google.devtools.build.lib.packages.Attribute.attr;
import static com.google.devtools.build.lib.packages.BuildType.LABEL;
-import static com.google.devtools.build.lib.packages.BuildType.LABEL_LIST;
import static com.google.devtools.build.lib.rules.java.proto.JavaCompilationArgsAspectProvider.GET_PROVIDER;
import static com.google.devtools.build.lib.rules.java.proto.JavaProtoLibraryTransitiveFilesToBuildProvider.GET_JARS;
@@ -31,7 +30,6 @@ import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.ConfiguredAspect;
import com.google.devtools.build.lib.analysis.ConfiguredAspectFactory;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
-import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
@@ -45,7 +43,6 @@ import com.google.devtools.build.lib.collect.nestedset.Order;
import com.google.devtools.build.lib.packages.AspectDefinition;
import com.google.devtools.build.lib.packages.AspectParameters;
import com.google.devtools.build.lib.packages.Attribute;
-import com.google.devtools.build.lib.packages.Attribute.ConfigurationTransition;
import com.google.devtools.build.lib.packages.AttributeMap;
import com.google.devtools.build.lib.packages.NativeAspectClass;
import com.google.devtools.build.lib.packages.Rule;
@@ -63,7 +60,6 @@ import com.google.devtools.build.lib.rules.proto.ProtoSourceFileBlacklist;
import com.google.devtools.build.lib.rules.proto.ProtoSourcesProvider;
import com.google.devtools.build.lib.rules.proto.ProtoSupportDataProvider;
import com.google.devtools.build.lib.rules.proto.SupportData;
-import java.util.List;
import javax.annotation.Nullable;
/** An Aspect which JavaProtoLibrary injects to build Java SPEED protos. */
@@ -71,32 +67,6 @@ public class JavaProtoAspect extends NativeAspectClass implements ConfiguredAspe
private static final String SPEED_PROTO_TOOLCHAIN_ATTR = ":aspect_java_proto_toolchain";
- private static final String SPEED_PROTO_RUNTIME_ATTR = "$aspect_java_lib";
- private static final String SPEED_PROTO_RUNTIME_LABEL = "//external:protobuf/java_runtime";
-
- /**
- * The attribute name for holding a list of protos for which no code should be generated because
- * the proto-runtime already contains them.
- */
- private static final String PROTO_SOURCE_FILE_BLACKLIST_ATTR = ":proto_source_file_blacklist";
-
- private static final Attribute.LateBoundLabelList<BuildConfiguration> BLACKLISTED_PROTOS =
- new Attribute.LateBoundLabelList<BuildConfiguration>(
- ImmutableList.<Label>of(), ProtoConfiguration.class) {
- @Override
- public List<Label> resolve(
- Rule rule, AttributeMap attributes, BuildConfiguration configuration) {
- return configuration
- .getFragment(ProtoConfiguration.class)
- .protoCompilerJavaBlacklistedProtos();
- }
-
- @Override
- public boolean useHostConfiguration() {
- return true;
- }
- };
-
private static Attribute.LateBoundLabel<BuildConfiguration> getSpeedProtoToolchainLabel(
String defaultValue) {
return new Attribute.LateBoundLabel<BuildConfiguration>(
@@ -144,12 +114,9 @@ public class JavaProtoAspect extends NativeAspectClass implements ConfiguredAspe
new Impl(
ruleContext,
supportData,
- ruleContext
- .getFragment(ProtoConfiguration.class, ConfigurationTransition.HOST)
- .protoCompilerJavaFlags(),
- javaSemantics,
- rpcSupport,
- ruleContext.getFragment(ProtoConfiguration.class).useToolchainForJavaProto())
+ javaSemantics,
+ rpcSupport
+ )
.createProviders());
return aspect.build();
@@ -163,14 +130,6 @@ public class JavaProtoAspect extends NativeAspectClass implements ConfiguredAspe
.requiresConfigurationFragments(JavaConfiguration.class, ProtoConfiguration.class)
.requireProviders(ProtoSourcesProvider.class)
.add(
- attr(SPEED_PROTO_RUNTIME_ATTR, LABEL)
- .legacyAllowAnyFileType()
- .value(parseAbsoluteUnchecked(SPEED_PROTO_RUNTIME_LABEL)))
- .add(
- attr(PROTO_SOURCE_FILE_BLACKLIST_ATTR, LABEL_LIST)
- .cfg(HOST)
- .value(BLACKLISTED_PROTOS))
- .add(
attr(SPEED_PROTO_TOOLCHAIN_ATTR, LABEL)
// TODO(carmi): reinstate mandatoryNativeProviders(ProtoLangToolchainProvider)
// once it's in a Bazel release.
@@ -205,22 +164,16 @@ public class JavaProtoAspect extends NativeAspectClass implements ConfiguredAspe
* Java compilation action.
*/
private final JavaCompilationArgsProvider dependencyCompilationArgs;
- private final String protoCompilerPluginOptions;
- private final boolean useToolchainForJavaProto;
Impl(
final RuleContext ruleContext,
final SupportData supportData,
- String protoCompilerPluginOptions,
JavaSemantics javaSemantics,
- RpcSupport rpcSupport,
- boolean useToolchainForJavaProto) {
+ RpcSupport rpcSupport) {
this.ruleContext = ruleContext;
this.supportData = supportData;
- this.protoCompilerPluginOptions = protoCompilerPluginOptions;
this.javaSemantics = javaSemantics;
this.rpcSupport = rpcSupport;
- this.useToolchainForJavaProto = useToolchainForJavaProto;
dependencyCompilationArgs =
JavaCompilationArgsProvider.merge(
@@ -281,51 +234,31 @@ public class JavaProtoAspect extends NativeAspectClass implements ConfiguredAspe
}
final ProtoSourceFileBlacklist protoBlackList;
- if (useToolchainForJavaProto) {
- NestedSetBuilder<Artifact> blacklistedProtos = NestedSetBuilder.stableOrder();
- blacklistedProtos.addTransitive(getProtoToolchainProvider().blacklistedProtos());
- blacklistedProtos.addTransitive(rpcSupport.getBlacklist(ruleContext));
+ NestedSetBuilder<Artifact> blacklistedProtos = NestedSetBuilder.stableOrder();
+ blacklistedProtos.addTransitive(getProtoToolchainProvider().blacklistedProtos());
+ blacklistedProtos.addTransitive(rpcSupport.getBlacklist(ruleContext));
- protoBlackList = new ProtoSourceFileBlacklist(ruleContext, blacklistedProtos.build());
- } else {
- protoBlackList =
- new ProtoSourceFileBlacklist(
- ruleContext,
- ruleContext
- .getPrerequisiteArtifacts(PROTO_SOURCE_FILE_BLACKLIST_ATTR, Mode.HOST)
- .list());
- }
+ protoBlackList = new ProtoSourceFileBlacklist(ruleContext, blacklistedProtos.build());
return protoBlackList.checkSrcs(supportData.getDirectProtoSources(), "java_proto_library");
}
private void createProtoCompileAction(Artifact sourceJar) {
- if (useToolchainForJavaProto) {
- ImmutableList.Builder<ToolchainInvocation> invocations = ImmutableList.builder();
- invocations.add(
- new ToolchainInvocation(
- "java", checkNotNull(getProtoToolchainProvider()), sourceJar.getExecPathString()));
- invocations.addAll(rpcSupport.getToolchainInvocation(ruleContext, sourceJar));
- ProtoCompileActionBuilder.registerActions(
- ruleContext,
- invocations.build(),
- supportData.getDirectProtoSources(),
- supportData.getTransitiveImports(),
- supportData.getProtosInDirectDeps(),
- ruleContext.getLabel().getCanonicalForm(),
- ImmutableList.of(sourceJar),
- "Java (Immutable)",
- rpcSupport.allowServices(ruleContext));
- } else {
- ProtoCompileActionBuilder actionBuilder =
- new ProtoCompileActionBuilder(
- ruleContext, supportData, "Java", "java", ImmutableList.of(sourceJar))
- .allowServices(true)
- .setLangParameter(
- String.format(protoCompilerPluginOptions, sourceJar.getExecPathString()));
- rpcSupport.mutateProtoCompileAction(ruleContext, sourceJar, actionBuilder);
- ruleContext.registerAction(actionBuilder.build());
- }
+ ImmutableList.Builder<ToolchainInvocation> invocations = ImmutableList.builder();
+ invocations.add(
+ new ToolchainInvocation(
+ "java", checkNotNull(getProtoToolchainProvider()), sourceJar.getExecPathString()));
+ invocations.addAll(rpcSupport.getToolchainInvocation(ruleContext, sourceJar));
+ ProtoCompileActionBuilder.registerActions(
+ ruleContext,
+ invocations.build(),
+ supportData.getDirectProtoSources(),
+ supportData.getTransitiveImports(),
+ supportData.getProtosInDirectDeps(),
+ ruleContext.getLabel().getCanonicalForm(),
+ ImmutableList.of(sourceJar),
+ "Java (Immutable)",
+ rpcSupport.allowServices(ruleContext));
}
private JavaCompilationArgsProvider createJavaCompileAction(
@@ -338,15 +271,9 @@ public class JavaProtoAspect extends NativeAspectClass implements ConfiguredAspe
helper
.addDep(dependencyCompilationArgs)
.setCompilationStrictDepsMode(StrictDepsMode.OFF);
- if (useToolchainForJavaProto) {
- TransitiveInfoCollection runtime = getProtoToolchainProvider().runtime();
- if (runtime != null) {
- helper.addDep(runtime.getProvider(JavaCompilationArgsProvider.class));
- }
- } else {
- helper.addDep(
- ruleContext.getPrerequisite(
- SPEED_PROTO_RUNTIME_ATTR, Mode.TARGET, JavaCompilationArgsProvider.class));
+ TransitiveInfoCollection runtime = getProtoToolchainProvider().runtime();
+ if (runtime != null) {
+ helper.addDep(runtime.getProvider(JavaCompilationArgsProvider.class));
}
rpcSupport.mutateJavaCompileAction(ruleContext, helper);