Automated rollback of commit d54b741d746ca608b25eae609480c187ed8f8350.
*** Reason for rollback ***
Breaks guitar, b/125764428
*** Original change description ***
Stop creating a merged jar in an action in java binary.
The merged jar was used by JacocoCoverageRunner to collect coverage. Since unknown commit JacocoCoverageRunner gets the runtime classpath from the system classloader, so there is no more need for the merged jar.
Progress on #7124.
RELNOTES: None.
PiperOrigin-RevId: 235207828
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java
index 4136510..399f7af 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java
@@ -32,6 +32,7 @@
import com.google.devtools.build.lib.analysis.actions.CustomCommandLine;
import com.google.devtools.build.lib.analysis.actions.LauncherFileWriteAction;
import com.google.devtools.build.lib.analysis.actions.LauncherFileWriteAction.LaunchInfo;
+import com.google.devtools.build.lib.analysis.actions.LazyWritePathsFileAction;
import com.google.devtools.build.lib.analysis.actions.Substitution;
import com.google.devtools.build.lib.analysis.actions.Substitution.ComputedSubstitution;
import com.google.devtools.build.lib.analysis.actions.Template;
@@ -273,7 +274,8 @@
javaStartClass,
"",
NestedSetBuilder.<Artifact>stableOrder(),
- javaExecutable);
+ javaExecutable,
+ /* createCoverageMetadataJar= */ true);
}
@Override
@@ -285,7 +287,8 @@
String javaStartClass,
String coverageStartClass,
NestedSetBuilder<Artifact> filesBuilder,
- String javaExecutable) {
+ String javaExecutable,
+ boolean createCoverageMetadataJar) {
Preconditions.checkState(ruleContext.getConfiguration().hasFragment(JavaConfiguration.class));
Preconditions.checkNotNull(jvmFlags);
@@ -348,8 +351,30 @@
if (ruleContext.getConfiguration().isCodeCoverageEnabled()
&& ruleContext.getConfiguration().isExperimentalJavaCoverage()) {
- // Remove the placeholder in the stub otherwise bazel coverage fails.
- arguments.add(Substitution.of(JavaSemantics.JACOCO_METADATA_PLACEHOLDER, ""));
+ if (createCoverageMetadataJar) {
+ Artifact runtimeClassPathArtifact =
+ ruleContext.getUniqueDirectoryArtifact(
+ "coverage_runtime_classpath",
+ "runtime-classpath.txt",
+ ruleContext.getBinOrGenfilesDirectory());
+ ruleContext.registerAction(
+ new LazyWritePathsFileAction(
+ ruleContext.getActionOwner(),
+ runtimeClassPathArtifact,
+ javaCommon.getRuntimeClasspath(),
+ true));
+ filesBuilder.add(runtimeClassPathArtifact);
+ arguments.add(
+ Substitution.of(
+ JavaSemantics.JACOCO_METADATA_PLACEHOLDER,
+ "export JACOCO_METADATA_JAR=${JAVA_RUNFILES}/"
+ + workspacePrefix
+ + "/"
+ + runtimeClassPathArtifact.getRootRelativePathString()));
+ } else {
+ // Remove the placeholder in the stub otherwise bazel coverage fails.
+ arguments.add(Substitution.of(JavaSemantics.JACOCO_METADATA_PLACEHOLDER, ""));
+ }
arguments.add(Substitution.of(
JavaSemantics.JACOCO_MAIN_CLASS_PLACEHOLDER,
"export JACOCO_MAIN_CLASS=" + coverageStartClass));
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java
index 9b74e52..606f26d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java
@@ -270,7 +270,8 @@
mainClass,
originalMainClass,
filesToBuildBuilder,
- javaExecutable);
+ javaExecutable,
+ /* createCoverageMetadataJar= */ true);
Artifact oneVersionOutputArtifact = null;
JavaConfiguration javaConfig = ruleContext.getFragment(JavaConfiguration.class);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java
index 250656e..98a6967 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java
@@ -292,7 +292,8 @@
mainClass,
originalMainClass,
filesBuilder,
- javaExecutable);
+ javaExecutable,
+ /* createCoverageMetadataJar= */ false);
if (!executableToRun.equals(executableForRunfiles)) {
filesBuilder.add(executableToRun);
runfilesBuilder.addArtifact(executableToRun);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java
index c407385..674d658 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java
@@ -310,7 +310,8 @@
String javaStartClass,
String coverageStartClass,
NestedSetBuilder<Artifact> filesBuilder,
- String javaExecutable)
+ String javaExecutable,
+ boolean createCoverageMetadataJar)
throws InterruptedException;
/**