diff options
3 files changed, 40 insertions, 22 deletions
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 ecb65b4b7a..bcc9ea817b 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 @@ -68,6 +68,7 @@ import com.google.devtools.build.lib.rules.java.proto.GeneratedExtensionRegistry import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import com.google.devtools.build.lib.syntax.Type; import com.google.devtools.build.lib.util.OS; +import com.google.devtools.build.lib.util.Pair; import com.google.devtools.build.lib.util.ShellEscaper; import com.google.devtools.build.lib.vfs.FileSystemUtils; import com.google.devtools.build.lib.vfs.PathFragment; @@ -773,10 +774,17 @@ public class BazelJavaSemantics implements JavaSemantics { } @Override - public Artifact getLauncher(RuleContext ruleContext, JavaCommon common, - DeployArchiveBuilder deployArchiveBuilder, Runfiles.Builder runfilesBuilder, - List<String> jvmFlags, JavaTargetAttributes.Builder attributesBuilder, boolean shouldStrip) { - return JavaHelper.launcherArtifactForTarget(this, ruleContext); + public Pair<Artifact, Artifact> getLauncher( + RuleContext ruleContext, + JavaCommon common, + DeployArchiveBuilder deployArchiveBuilder, + DeployArchiveBuilder unstrippedDeployArchiveBuilder, + Runfiles.Builder runfilesBuilder, + List<String> jvmFlags, + JavaTargetAttributes.Builder attributesBuilder, + boolean shouldStrip) { + Artifact launcher = JavaHelper.launcherArtifactForTarget(this, ruleContext); + return new Pair<>(launcher, launcher); } @Override 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 f50bc03944..aa6de48b3a 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 @@ -50,6 +50,7 @@ import com.google.devtools.build.lib.rules.java.ProguardHelper.ProguardOutput; import com.google.devtools.build.lib.rules.java.proto.GeneratedExtensionRegistryProvider; import com.google.devtools.build.lib.syntax.Type; import com.google.devtools.build.lib.util.OS; +import com.google.devtools.build.lib.util.Pair; import com.google.devtools.build.lib.vfs.PathFragment; import java.util.ArrayList; import java.util.Collection; @@ -140,23 +141,22 @@ public class JavaBinary implements RuleConfiguredTargetFactory { boolean stripAsDefault = CppHelper.useFission(cppConfiguration, ccToolchain) && cppConfiguration.getCompilationMode() == CompilationMode.OPT; - Artifact launcher = semantics.getLauncher(ruleContext, common, deployArchiveBuilder, - runfilesBuilder, jvmFlags, attributesBuilder, stripAsDefault); - DeployArchiveBuilder unstrippedDeployArchiveBuilder = null; - Artifact unstrippedLauncher = null; if (stripAsDefault) { unstrippedDeployArchiveBuilder = new DeployArchiveBuilder(semantics, ruleContext); - unstrippedLauncher = - semantics.getLauncher( - ruleContext, - common, - unstrippedDeployArchiveBuilder, - runfilesBuilder, - jvmFlags, - attributesBuilder, - /* shouldStrip= */ false); } + Pair<Artifact, Artifact> launcherAndUnstrippedLauncher = + semantics.getLauncher( + ruleContext, + common, + deployArchiveBuilder, + unstrippedDeployArchiveBuilder, + runfilesBuilder, + jvmFlags, + attributesBuilder, + stripAsDefault); + Artifact launcher = launcherAndUnstrippedLauncher.first; + Artifact unstrippedLauncher = launcherAndUnstrippedLauncher.second; JavaCompilationArtifacts.Builder javaArtifactsBuilder = new JavaCompilationArtifacts.Builder(); Artifact instrumentationMetadata = 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 d6b7d60527..fdf59887a7 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 @@ -45,6 +45,7 @@ import com.google.devtools.build.lib.rules.java.JavaConfiguration.OneVersionEnfo import com.google.devtools.build.lib.rules.java.proto.GeneratedExtensionRegistryProvider; import com.google.devtools.build.lib.syntax.Type; import com.google.devtools.build.lib.util.FileType; +import com.google.devtools.build.lib.util.Pair; import com.google.devtools.build.lib.vfs.PathFragment; import java.io.File; import java.util.Collection; @@ -440,16 +441,25 @@ public interface JavaSemantics { * @param ruleContext The rule context * @param common The common helper class. * @param deployArchiveBuilder the builder to construct the deploy archive action (mutable). + * @param unstrippedDeployArchiveBuilder the builder to construct the unstripped deploy archive + * action (mutable). * @param runfilesBuilder the builder to construct the list of runfiles (mutable). * @param jvmFlags the list of flags to pass to the JVM when running the Java binary (mutable). * @param attributesBuilder the builder to construct the list of attributes of this target - * (mutable). - * @return the launcher as an artifact + * (mutable). + * @return the launcher and unstripped launcher as an artifact pair. If shouldStrip is false, then + * they will be the same. * @throws InterruptedException */ - Artifact getLauncher(final RuleContext ruleContext, final JavaCommon common, - DeployArchiveBuilder deployArchiveBuilder, Runfiles.Builder runfilesBuilder, - List<String> jvmFlags, JavaTargetAttributes.Builder attributesBuilder, boolean shouldStrip) + Pair<Artifact, Artifact> getLauncher( + final RuleContext ruleContext, + final JavaCommon common, + DeployArchiveBuilder deployArchiveBuilder, + DeployArchiveBuilder unstrippedDeployArchiveBuilder, + Runfiles.Builder runfilesBuilder, + List<String> jvmFlags, + JavaTargetAttributes.Builder attributesBuilder, + boolean shouldStrip) throws InterruptedException; /** |