aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib
diff options
context:
space:
mode:
authorGravatar elenairina <elenairina@google.com>2018-04-17 05:56:43 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-04-17 05:58:15 -0700
commitb1efe45a57e108e091ab632596c7a5e6162bb5a4 (patch)
treebb100b93f45edf735f479a92679c8fb088202845 /src/main/java/com/google/devtools/build/lib
parent932b1f6c1429c5f6641ebd4850a6ed1854df98e5 (diff)
Add compilation_info in java_common.compile.
PiperOrigin-RevId: 193185628
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaLibraryHelper.java47
2 files changed, 51 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java
index 714dbd74ab..dd8298d9fd 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java
@@ -411,6 +411,7 @@ final class JavaInfoBuildHelper {
helper.addAllPlugins(JavaInfo.fetchProvidersFromList(plugins, JavaPluginInfoProvider.class));
helper.addAllPlugins(JavaInfo.fetchProvidersFromList(deps, JavaPluginInfoProvider.class));
+ helper.setNeverlink(neverlink);
JavaRuleOutputJarsProvider.Builder outputJarsBuilder = JavaRuleOutputJarsProvider.builder();
@@ -422,6 +423,7 @@ final class JavaInfoBuildHelper {
? getSourceJar(skylarkRuleContext.getRuleContext(), outputJar)
: sourceJars.get(0);
+ JavaInfo.Builder javaInfoBuilder = JavaInfo.Builder.create();
JavaCompilationArtifacts artifacts =
helper.build(
javaSemantics,
@@ -430,7 +432,8 @@ final class JavaInfoBuildHelper {
SkylarkList.createImmutable(ImmutableList.of()),
outputJarsBuilder,
/*createOutputSourceJar*/ generateMergedSourceJar,
- outputSourceJar);
+ outputSourceJar,
+ javaInfoBuilder);
JavaCompilationArgsProvider javaCompilationArgsProvider =
helper.buildCompilationArgsProvider(artifacts, true, neverlink);
@@ -457,7 +460,7 @@ final class JavaInfoBuildHelper {
transitiveSourceJars.addTransitive(sourceJarsProvider.getTransitiveSourceJars());
}
- return JavaInfo.Builder.create()
+ return javaInfoBuilder
.addProvider(JavaCompilationArgsProvider.class, javaCompilationArgsProvider)
.addProvider(
JavaSourceJarsProvider.class,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibraryHelper.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibraryHelper.java
index 47a214d1af..0a153af354 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibraryHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibraryHelper.java
@@ -61,6 +61,7 @@ public final class JavaLibraryHelper {
private StrictDepsMode strictDepsMode = StrictDepsMode.OFF;
private JavaClasspathMode classpathMode = JavaClasspathMode.OFF;
private String injectingRuleKind;
+ private boolean neverlink;
public JavaLibraryHelper(RuleContext ruleContext) {
this.ruleContext = ruleContext;
@@ -68,6 +69,11 @@ public final class JavaLibraryHelper {
this.classpathMode = ruleContext.getFragment(JavaConfiguration.class).getReduceJavaClasspath();
}
+ public JavaLibraryHelper setNeverlink(boolean neverlink) {
+ this.neverlink = neverlink;
+ return this;
+ }
+
/**
* Sets the final output jar; if this is not set, then the {@link #build} method throws an {@link
* IllegalStateException}. Note that this class may generate not just the output itself, but also
@@ -183,6 +189,26 @@ public final class JavaLibraryHelper {
JavaRuleOutputJarsProvider.Builder outputJarsBuilder,
boolean createOutputSourceJar,
@Nullable Artifact outputSourceJar) {
+ return build(
+ semantics,
+ javaToolchainProvider,
+ hostJavabase,
+ jacocoInstrumental,
+ outputJarsBuilder,
+ createOutputSourceJar,
+ outputSourceJar,
+ /* javaInfoBuilder= */ null);
+ }
+
+ public JavaCompilationArtifacts build(
+ JavaSemantics semantics,
+ JavaToolchainProvider javaToolchainProvider,
+ JavaRuntimeInfo hostJavabase,
+ Iterable<Artifact> jacocoInstrumental,
+ JavaRuleOutputJarsProvider.Builder outputJarsBuilder,
+ boolean createOutputSourceJar,
+ @Nullable Artifact outputSourceJar,
+ @Nullable JavaInfo.Builder javaInfoBuilder) {
Preconditions.checkState(output != null, "must have an output file; use setOutput()");
Preconditions.checkState(
!createOutputSourceJar || outputSourceJar != null,
@@ -246,7 +272,26 @@ public final class JavaLibraryHelper {
.addOutputJar(new OutputJar(output, iJar, outputSourceJars))
.setJdeps(outputDepsProto);
- return artifactsBuilder.build();
+ JavaCompilationArtifacts javaArtifacts = artifactsBuilder.build();
+ if (javaInfoBuilder != null) {
+ ClasspathConfiguredFragment classpathFragment = new ClasspathConfiguredFragment(
+ javaArtifacts,
+ attributes.build(),
+ neverlink,
+ JavaCompilationHelper.getBootClasspath(javaToolchainProvider)
+ );
+
+ javaInfoBuilder.addProvider(
+ JavaCompilationInfoProvider.class,
+ new JavaCompilationInfoProvider.Builder()
+ .setJavacOpts(javacOpts)
+ .setBootClasspath(classpathFragment.getBootClasspath())
+ .setCompilationClasspath(classpathFragment.getCompileTimeClasspath())
+ .setRuntimeClasspath(classpathFragment.getRuntimeClasspath())
+ .build());
+ }
+
+ return javaArtifacts;
}
/**