aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java
diff options
context:
space:
mode:
authorGravatar elenairina <elenairina@google.com>2018-02-12 06:15:34 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-02-12 06:17:26 -0800
commitb65de60ab464fd3c9d46ca5760e309db2fcc7fa7 (patch)
treebb5ecd13c6773af3d9f3488c0f14a1c93a308f10 /src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java
parentc7e343ad314aeab6283b5939bc8126a112140a11 (diff)
Move common proto aspect logic to a new class.
PiperOrigin-RevId: 185369902
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java86
1 files changed, 18 insertions, 68 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java
index a59282a6bc..d486b0e756 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java
@@ -16,7 +16,6 @@ package com.google.devtools.build.lib.rules.java.proto;
import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.collect.Iterables.getOnlyElement;
-import static com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget.Mode.TARGET;
import static com.google.devtools.build.lib.cmdline.Label.parseAbsoluteUnchecked;
import static com.google.devtools.build.lib.packages.Attribute.attr;
import static com.google.devtools.build.lib.packages.BuildType.LABEL;
@@ -28,12 +27,10 @@ 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.RuleContext;
-import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
import com.google.devtools.build.lib.analysis.TransitiveInfoProviderMap;
import com.google.devtools.build.lib.analysis.TransitiveInfoProviderMapBuilder;
import com.google.devtools.build.lib.analysis.WrappingProvider;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration.StrictDepsMode;
import com.google.devtools.build.lib.analysis.config.HostTransition;
import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget;
import com.google.devtools.build.lib.cmdline.Label;
@@ -46,11 +43,7 @@ import com.google.devtools.build.lib.packages.Attribute;
import com.google.devtools.build.lib.packages.Attribute.LabelLateBoundDefault;
import com.google.devtools.build.lib.packages.NativeAspectClass;
import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider;
-import com.google.devtools.build.lib.rules.java.JavaCompilationArtifacts;
-import com.google.devtools.build.lib.rules.java.JavaCompilationHelper;
import com.google.devtools.build.lib.rules.java.JavaConfiguration;
-import com.google.devtools.build.lib.rules.java.JavaInfo;
-import com.google.devtools.build.lib.rules.java.JavaLibraryHelper;
import com.google.devtools.build.lib.rules.java.JavaRuleOutputJarsProvider;
import com.google.devtools.build.lib.rules.java.JavaRuntimeInfo;
import com.google.devtools.build.lib.rules.java.JavaSemantics;
@@ -68,8 +61,6 @@ import javax.annotation.Nullable;
/** An Aspect which JavaLiteProtoLibrary injects to build Java Lite protos. */
public class JavaLiteProtoAspect extends NativeAspectClass implements ConfiguredAspectFactory {
- public static final String PROTO_TOOLCHAIN_ATTR = ":aspect_proto_toolchain_for_javalite";
-
public static LabelLateBoundDefault<?> getProtoToolchainLabel(String defaultValue) {
return LabelLateBoundDefault.fromTargetConfiguration(
ProtoConfiguration.class,
@@ -105,7 +96,9 @@ public class JavaLiteProtoAspect extends NativeAspectClass implements Configured
checkNotNull(ctatBase.getConfiguredTarget().getProvider(ProtoSupportDataProvider.class))
.getSupportData();
- Impl impl = new Impl(ruleContext, supportData, javaSemantics);
+ JavaProtoAspectCommon aspectCommon =
+ JavaProtoAspectCommon.getLiteInstance(ruleContext, javaSemantics);
+ Impl impl = new Impl(ruleContext, supportData, aspectCommon);
impl.addProviders(aspect);
return aspect.build();
@@ -121,7 +114,7 @@ public class JavaLiteProtoAspect extends NativeAspectClass implements Configured
.advertiseProvider(JavaProtoLibraryAspectProvider.class)
.advertiseProvider(ImmutableList.of(JavaSkylarkApiProvider.PROTO_NAME))
.add(
- attr(PROTO_TOOLCHAIN_ATTR, LABEL)
+ attr(JavaProtoAspectCommon.LITE_PROTO_TOOLCHAIN_ATTR, LABEL)
.mandatoryNativeProviders(
ImmutableList.<Class<? extends TransitiveInfoProvider>>of(
ProtoLangToolchainProvider.class))
@@ -156,14 +149,16 @@ public class JavaLiteProtoAspect extends NativeAspectClass implements Configured
*/
private final JavaCompilationArgsProvider dependencyCompilationArgs;
- private final JavaSemantics javaSemantics;
+ private final JavaProtoAspectCommon aspectCommon;
private final Iterable<JavaProtoLibraryAspectProvider> javaProtoLibraryAspectProviders;
Impl(
- final RuleContext ruleContext, final SupportData supportData, JavaSemantics javaSemantics) {
+ RuleContext ruleContext,
+ SupportData supportData,
+ JavaProtoAspectCommon aspectCommon) {
this.ruleContext = ruleContext;
this.supportData = supportData;
- this.javaSemantics = javaSemantics;
+ this.aspectCommon = aspectCommon;
this.javaProtoLibraryAspectProviders =
ruleContext.getPrerequisites(
"deps", RuleConfiguredTarget.Mode.TARGET, JavaProtoLibraryAspectProvider.class);
@@ -190,11 +185,12 @@ public class JavaLiteProtoAspect extends NativeAspectClass implements Configured
new TransitiveInfoProviderMapBuilder();
if (supportData.hasProtoSources()) {
- Artifact sourceJar = getSourceJarArtifact();
+ Artifact sourceJar = aspectCommon.getSourceJarArtifact();
createProtoCompileAction(sourceJar);
- Artifact outputJar = getOutputJarArtifact();
+ Artifact outputJar = aspectCommon.getOutputJarArtifact();
- generatedCompilationArgsProvider = createJavaCompileAction(sourceJar, outputJar);
+ generatedCompilationArgsProvider =
+ aspectCommon.createJavaCompileAction(sourceJar, outputJar, dependencyCompilationArgs);
NestedSet<Artifact> javaSourceJars =
NestedSetBuilder.<Artifact>stableOrder().add(sourceJar).build();
@@ -221,7 +217,8 @@ public class JavaLiteProtoAspect extends NativeAspectClass implements Configured
}
javaProvidersBuilder.add(generatedCompilationArgsProvider);
- javaProvidersBuilder.add(createCcLinkParamsStore(ruleContext, getProtoRuntimeDeps()));
+ javaProvidersBuilder.add(createCcLinkParamsStore(
+ ruleContext, aspectCommon.getProtoRuntimeDeps()));
TransitiveInfoProviderMap javaProviders = javaProvidersBuilder.build();
aspect
@@ -235,7 +232,7 @@ public class JavaLiteProtoAspect extends NativeAspectClass implements Configured
createNonStrictCompilationArgsProvider(
javaProtoLibraryAspectProviders,
generatedCompilationArgsProvider.getJavaCompilationArgs(),
- getProtoRuntimeDeps())));
+ aspectCommon.getProtoRuntimeDeps())));
}
private void createProtoCompileAction(Artifact sourceJar) {
@@ -243,7 +240,8 @@ public class JavaLiteProtoAspect extends NativeAspectClass implements Configured
ruleContext,
ImmutableList.of(
new ProtoCompileActionBuilder.ToolchainInvocation(
- "javalite", getProtoToolchainProvider(), sourceJar.getExecPathString())),
+ "javalite", aspectCommon.getProtoToolchainProvider(),
+ sourceJar.getExecPathString())),
supportData.getDirectProtoSources(),
supportData.getTransitiveImports(),
supportData.getProtosInDirectDeps(),
@@ -252,53 +250,5 @@ public class JavaLiteProtoAspect extends NativeAspectClass implements Configured
"JavaLite",
true /* allowServices */);
}
-
- private JavaCompilationArgsProvider createJavaCompileAction(
- Artifact sourceJar, Artifact outputJar) {
- JavaLibraryHelper helper =
- new JavaLibraryHelper(ruleContext)
- .setOutput(outputJar)
- .addSourceJars(sourceJar)
- .setJavacOpts(ProtoJavacOpts.constructJavacOpts(ruleContext));
- helper.addDep(dependencyCompilationArgs).setCompilationStrictDepsMode(StrictDepsMode.OFF);
- for (TransitiveInfoCollection t : getProtoRuntimeDeps()) {
- JavaCompilationArgsProvider provider =
- JavaInfo.getProvider(JavaCompilationArgsProvider.class, t);
- if (provider != null) {
- helper.addDep(provider);
- }
- }
-
- JavaCompilationArtifacts artifacts =
- helper.build(
- javaSemantics,
- JavaCompilationHelper.getJavaToolchainProvider(ruleContext),
- JavaRuntimeInfo.forHost(ruleContext),
- JavaCompilationHelper.getInstrumentationJars(ruleContext),
- JavaRuleOutputJarsProvider.builder(),
- /*createOutputSourceJar*/ false,
- /*outputSourceJar=*/ null);
- return helper.buildCompilationArgsProvider(
- artifacts, /*isReportedAsStrict=*/ true, /*isNeverlink=*/ false);
- }
-
- private ImmutableList<TransitiveInfoCollection> getProtoRuntimeDeps() {
- TransitiveInfoCollection runtime = getProtoToolchainProvider().runtime();
- return runtime != null ? ImmutableList.of(runtime) : ImmutableList.of();
- }
-
- private ProtoLangToolchainProvider getProtoToolchainProvider() {
- return checkNotNull(
- ruleContext.getPrerequisite(
- PROTO_TOOLCHAIN_ATTR, TARGET, ProtoLangToolchainProvider.class));
- }
-
- private Artifact getSourceJarArtifact() {
- return ruleContext.getGenfilesArtifact(ruleContext.getLabel().getName() + "-lite-src.jar");
- }
-
- private Artifact getOutputJarArtifact() {
- return ruleContext.getBinArtifact("lib" + ruleContext.getLabel().getName() + "-lite.jar");
- }
}
}