aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar elenairina <elenairina@google.com>2018-04-16 06:27:56 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-04-16 06:29:11 -0700
commit81d999d40a42393ad5ddc8d889563fd3c431e409 (patch)
treeb6578390ce77d452067810e567c4d6b3e50e2d41 /src
parent83ed5461db0dab0a99ffdd8c76be8847ba1162bc (diff)
Create gen source jar in java_common.compile().
PiperOrigin-RevId: 193029216
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java16
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaLibraryHelper.java18
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java7
4 files changed, 37 insertions, 8 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java
index 3c37112911..2a86144f48 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java
@@ -467,6 +467,10 @@ public class JavaCommon {
return JavaRuntimeInfo.forHost(ruleContext).javaBinaryExecPath();
}
+ public static PathFragment getHostJavaExecutable(JavaRuntimeInfo javaRuntime) {
+ return javaRuntime.javaBinaryExecPath();
+ }
+
public static PathFragment getJavaExecutable(RuleContext ruleContext) {
return JavaRuntimeInfo.from(ruleContext).javaBinaryExecPath();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java
index faab225a5e..fdd0c26082 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java
@@ -479,8 +479,18 @@ public final class JavaCompilationHelper {
* @param manifestProto The artifact for the manifest proto emitted from JavaBuilder
* @param genClassJar The artifact for the gen jar to output
*/
- public void createGenJarAction(Artifact classJar, Artifact manifestProto,
+ public void createGenJarAction(
+ Artifact classJar,
+ Artifact manifestProto,
Artifact genClassJar) {
+ createGenJarAction(
+ classJar, manifestProto, genClassJar, JavaRuntimeInfo.forHost(getRuleContext()));
+ }
+
+ public void createGenJarAction(Artifact classJar,
+ Artifact manifestProto,
+ Artifact genClassJar,
+ JavaRuntimeInfo hostJavabase) {
getRuleContext()
.registerAction(
new SpawnAction.Builder()
@@ -488,9 +498,9 @@ public final class JavaCompilationHelper {
.addInput(classJar)
.addOutput(genClassJar)
.addTransitiveInputs(
- JavaRuntimeInfo.forHost(getRuleContext()).javaBaseInputsMiddleman())
+ hostJavabase.javaBaseInputsMiddleman())
.setJarExecutable(
- JavaCommon.getHostJavaExecutable(ruleContext),
+ JavaCommon.getHostJavaExecutable(hostJavabase),
getGenClassJar(ruleContext),
javaToolchain.getJvmOptions())
.addCommandLine(
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 93197acb9a..47a214d1af 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
@@ -214,10 +214,21 @@ public final class JavaLibraryHelper {
hostJavabase,
jacocoInstrumental);
Artifact outputDepsProto = helper.createOutputDepsProtoArtifact(output, artifactsBuilder);
+
+ Artifact manifestProtoOutput = helper.createManifestProtoOutput(output);
+
+ Artifact genSourceJar = null;
+ Artifact genClassJar = null;
+ if (helper.usesAnnotationProcessing()) {
+ genClassJar = helper.createGenJar(output);
+ genSourceJar = helper.createGensrcJar(output);
+ helper.createGenJarAction(output, manifestProtoOutput, genClassJar, hostJavabase);
+ }
+
helper.createCompileAction(
output,
- /* manifestProtoOutput= */ null,
- /* gensrcOutputJar= */ null,
+ manifestProtoOutput,
+ genSourceJar,
outputDepsProto,
/* instrumentationMetadataJar= */ null,
/* nativeHeaderOutput= */ null);
@@ -226,7 +237,8 @@ public final class JavaLibraryHelper {
Artifact iJar = helper.createCompileTimeJarAction(output, artifactsBuilder);
if (createOutputSourceJar) {
- helper.createSourceJarAction(outputSourceJar, null, javaToolchainProvider, hostJavabase);
+ helper.createSourceJarAction(
+ outputSourceJar, genSourceJar, javaToolchainProvider, hostJavabase);
}
ImmutableList<Artifact> outputSourceJars =
outputSourceJar == null ? ImmutableList.of() : ImmutableList.of(outputSourceJar);
diff --git a/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java b/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java
index 83423c0b97..fecfad9e63 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java
@@ -340,13 +340,14 @@ public class JavaSkylarkApiTest extends BuildViewTestCase {
" host_javabase = ctx.attr._host_javabase",
" )",
" return struct(",
- " files = depset([output_jar]),",
+ " files = depset([output_jar] + compilation_provider.source_jars),",
" providers = [compilation_provider]",
" )",
"java_custom_library = rule(",
" implementation = _impl,",
" outputs = {",
- " 'my_output': 'lib%{name}.jar'",
+ " 'my_output': 'lib%{name}.jar',",
+ " 'my_src_output': 'lib%{name}-src.jar'",
" },",
" attrs = {",
" 'srcs': attr.label_list(allow_files=['.java']),",
@@ -365,6 +366,8 @@ public class JavaSkylarkApiTest extends BuildViewTestCase {
assertThat(artifactFilesNames(sourceJars)).containsExactly("libcustom-src.jar");
assertThat(artifactFilesNames(transitiveSourceJars))
.containsExactly("libdep-src.jar", "libcustom-src.jar");
+
+ assertThat(getGeneratingAction(configuredTarget, "java/test/libcustom-src.jar")).isNotNull();
}
@Test