diff options
author | 2016-08-19 20:14:41 +0000 | |
---|---|---|
committer | 2016-08-22 08:11:31 +0000 | |
commit | c0e420d2cae980f744d63ff5b32f5b5e002fce3b (patch) | |
tree | e13f670dac44d4c7047cde2a9c4e56d5b88766b4 /src/main | |
parent | e5060fd85892937e8d2b230d4a28334d8bfb4456 (diff) |
The target pointed to by the 'singlejar' attribute of the java_toolchain rule is now handled as a native application, unless its path ends with '.jar' (in which case it is a Java application as before).
--
MOS_MIGRATED_REVID=130783627
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/java/DeployArchiveBuilder.java | 46 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/java/SingleJarActionBuilder.java | 48 |
2 files changed, 65 insertions, 29 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/DeployArchiveBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/java/DeployArchiveBuilder.java index 43b567699d..4a91273b75 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/DeployArchiveBuilder.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/DeployArchiveBuilder.java @@ -233,20 +233,38 @@ public class DeployArchiveBuilder { ResourceSet resourceSet = ResourceSet.createWithRamCpuIo(/*memoryMb = */200.0, /*cpuUsage = */.2, /*ioUsage=*/.2); - ruleContext.registerAction(new SpawnAction.Builder() - .addInputs(inputs.build()) - .addTransitiveInputs(JavaHelper.getHostJavabaseInputs(ruleContext)) - .addOutput(outputJar) - .setResources(resourceSet) - .setJarExecutable( - ruleContext.getHostConfiguration().getFragment(Jvm.class).getJavaExecutable(), - getSingleJar(ruleContext), - jvmArgs) - .setCommandLine(commandLine) - .useParameterFile(ParameterFileType.SHELL_QUOTED) - .setProgressMessage("Building deploy jar " + outputJar.prettyPrint()) - .setMnemonic("JavaDeployJar") - .build(ruleContext)); + // If singlejar's name ends with .jar, it is Java application, otherwise it is native. + // TODO(asmundak): once b/28640279 is fixed (that is, the native singlejar is released), + // eliminate this check, allowing only native singlejar. + Artifact singlejar = getSingleJar(ruleContext); + if (singlejar.getFilename().endsWith(".jar")) { + ruleContext.registerAction(new SpawnAction.Builder() + .addInputs(inputs.build()) + .addTransitiveInputs(JavaHelper.getHostJavabaseInputs(ruleContext)) + .addOutput(outputJar) + .setResources(resourceSet) + .setJarExecutable( + ruleContext.getHostConfiguration().getFragment(Jvm.class).getJavaExecutable(), + singlejar, + jvmArgs) + .setCommandLine(commandLine) + .useParameterFile(ParameterFileType.SHELL_QUOTED) + .setProgressMessage("Building deploy jar " + outputJar.prettyPrint()) + .setMnemonic("JavaDeployJar") + .build(ruleContext)); + } else { + ruleContext.registerAction(new SpawnAction.Builder() + .addInputs(inputs.build()) + .addTransitiveInputs(JavaHelper.getHostJavabaseInputs(ruleContext)) + .addOutput(outputJar) + .setResources(resourceSet) + .setExecutable(singlejar) + .setCommandLine(commandLine) + .useParameterFile(ParameterFileType.SHELL_QUOTED) + .setProgressMessage("Building deploy jar " + outputJar.prettyPrint()) + .setMnemonic("JavaDeployJar") + .build(ruleContext)); + } } /** Returns the SingleJar deploy jar Artifact. */ diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/SingleJarActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/java/SingleJarActionBuilder.java index 69544f3931..4948febeaf 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/SingleJarActionBuilder.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/SingleJarActionBuilder.java @@ -55,21 +55,39 @@ public final class SingleJarActionBuilder { ruleContext.getHostConfiguration().getFragment(Jvm.class).getJavaExecutable(); NestedSet<Artifact> hostJavabaseInputs = JavaHelper.getHostJavabaseInputs(ruleContext); Artifact singleJar = getSingleJar(ruleContext); - ruleContext.registerAction( - new SpawnAction.Builder() - .addOutput(outputJar) - .addInputs(resources.values()) - .addInputs(resourceJars) - .addTransitiveInputs(hostJavabaseInputs) - .setJarExecutable( - javaPath, - singleJar, - JavaToolchainProvider.fromRuleContext(ruleContext).getJvmOptions()) - .setCommandLine(sourceJarCommandLine(outputJar, resources, resourceJars)) - .useParameterFile(ParameterFileType.SHELL_QUOTED) - .setProgressMessage("Building source jar " + outputJar.prettyPrint()) - .setMnemonic("JavaSourceJar") - .build(ruleContext)); + // If singlejar's name ends with .jar, it is Java application, otherwise it is native. + // TODO(asmundak): once b/28640279 is fixed (that is, the native singlejar is released), + // eliminate this check, allowing only native singlejar. + if (singleJar.getFilename().endsWith(".jar")) { + ruleContext.registerAction( + new SpawnAction.Builder() + .addOutput(outputJar) + .addInputs(resources.values()) + .addInputs(resourceJars) + .addTransitiveInputs(hostJavabaseInputs) + .setJarExecutable( + javaPath, + singleJar, + JavaToolchainProvider.fromRuleContext(ruleContext).getJvmOptions()) + .setCommandLine(sourceJarCommandLine(outputJar, resources, resourceJars)) + .useParameterFile(ParameterFileType.SHELL_QUOTED) + .setProgressMessage("Building source jar " + outputJar.prettyPrint()) + .setMnemonic("JavaSourceJar") + .build(ruleContext)); + } else { + ruleContext.registerAction( + new SpawnAction.Builder() + .addOutput(outputJar) + .addInputs(resources.values()) + .addInputs(resourceJars) + .addTransitiveInputs(hostJavabaseInputs) + .setExecutable(singleJar) + .setCommandLine(sourceJarCommandLine(outputJar, resources, resourceJars)) + .useParameterFile(ParameterFileType.SHELL_QUOTED) + .setProgressMessage("Building source jar " + outputJar.prettyPrint()) + .setMnemonic("JavaSourceJar") + .build(ruleContext)); + } } /** Returns the SingleJar deploy jar Artifact. */ |