diff options
author | 2018-04-16 06:27:56 -0700 | |
---|---|---|
committer | 2018-04-16 06:29:11 -0700 | |
commit | 81d999d40a42393ad5ddc8d889563fd3c431e409 (patch) | |
tree | b6578390ce77d452067810e567c4d6b3e50e2d41 /src | |
parent | 83ed5461db0dab0a99ffdd8c76be8847ba1162bc (diff) |
Create gen source jar in java_common.compile().
PiperOrigin-RevId: 193029216
Diffstat (limited to 'src')
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 |