aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java45
1 files changed, 13 insertions, 32 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java
index 46ab4946da..8948b9dd1c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java
@@ -49,7 +49,6 @@ import com.google.devtools.build.lib.analysis.AnalysisEnvironment;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.actions.CommandLine;
import com.google.devtools.build.lib.analysis.actions.CustomCommandLine;
-import com.google.devtools.build.lib.analysis.actions.CustomCommandLine.CustomArgv;
import com.google.devtools.build.lib.analysis.actions.CustomCommandLine.CustomMultiArgv;
import com.google.devtools.build.lib.analysis.actions.ParameterFileWriteAction;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
@@ -470,15 +469,16 @@ public final class JavaCompileAction extends AbstractAction {
}
final ImmutableList<Artifact> minimumInputs = minInputsBuilder.build();
// The two things needed to enable minimum incremental classpath compile - command & inputs
- minCommandLine =
- CustomCommandLine.builder()
- .add(minimumCommandLineBase.arguments())
- .add("--classpath")
- .add(getClasspathArg(minimumInputs, classDirectory, pathDelimiter))
- .add("--strict_java_deps")
- .add(strictJavaDeps.toString())
- .add(new JarsToTargetsArgv(minimumInputs, directJars))
- .build();
+ CustomCommandLine.Builder minCommandLineBuilder = CustomCommandLine.builder();
+ minCommandLineBuilder.add(minimumCommandLineBase.arguments());
+ if (!minimumInputs.isEmpty()) {
+ minCommandLineBuilder.addJoinExecPaths("--classpath", pathDelimiter, minimumInputs);
+ }
+ minCommandLineBuilder
+ .add("--strict_java_deps")
+ .add(strictJavaDeps.toString())
+ .add(new JarsToTargetsArgv(minimumInputs, directJars));
+ minCommandLine = minCommandLineBuilder.build();
// Keep in sync with inputs in constructor call to 'super', except do not
// include compileTimeDependencyArtifacts or paramFile, which are unneeded here.
@@ -569,7 +569,6 @@ public final class JavaCompileAction extends AbstractAction {
info.addAllSourceFile(Artifact.toExecPaths(getSourceFiles()));
info.addAllClasspath(Artifact.toExecPaths(getClasspath()));
info.addAllBootclasspath(Artifact.toExecPaths(getBootclasspath()));
- info.addClasspath(getClassDirectory().getPathString());
info.addAllSourcepath(Artifact.toExecPaths(getSourceJars()));
info.addAllJavacOpt(getJavacOpts());
info.addAllProcessor(getProcessorNames());
@@ -580,21 +579,6 @@ public final class JavaCompileAction extends AbstractAction {
.setExtension(JavaCompileInfo.javaCompileInfo, info.build());
}
- private static CustomArgv getClasspathArg(final Iterable<Artifact> classpath,
- final PathFragment classDirectory, final String pathDelimiter) {
- return new CustomArgv() {
- @Override
- public String argv() {
- List<PathFragment> classpathEntries = new ArrayList<>();
- for (Artifact classpathArtifact : classpath) {
- classpathEntries.add(classpathArtifact.getExecPath());
- }
- classpathEntries.add(classDirectory);
- return Joiner.on(pathDelimiter).join(classpathEntries);
- }
- };
- }
-
/**
* Collect common command line arguments together in a single ArgvFragment.
*
@@ -736,14 +720,11 @@ public final class JavaCompileAction extends AbstractAction {
* @param commonJavaBuilderArgs common flag values consumed by JavaBuilder
* @param configuration the build configuration, which provides the default options and the path
* to the compiler, etc.
- * @param classDirectory the directory in which generated classfiles are placed relative to the
- * exec root
* @param classpath the complete classpath, the directory in which generated classfiles are placed
*/
private static CustomCommandLine.Builder javaCompileCommandLine(
CustomMultiArgv commonJavaBuilderArgs,
final BuildConfiguration configuration,
- final PathFragment classDirectory,
final NestedSet<Artifact> classpath,
final NestedSet<Artifact> directJars,
BuildConfiguration.StrictDepsMode strictJavaDeps,
@@ -751,8 +732,9 @@ public final class JavaCompileAction extends AbstractAction {
CustomCommandLine.Builder result = CustomCommandLine.builder();
result.add(commonJavaBuilderArgs);
- result.add("--classpath");
- result.add(getClasspathArg(classpath, classDirectory, configuration.getHostPathSeparator()));
+ if (!classpath.isEmpty()) {
+ result.addJoinExecPaths("--classpath", configuration.getHostPathSeparator(), classpath);
+ }
// strict_java_deps controls whether the mapping from jars to targets is
// written out and whether we try to minimize the compile-time classpath.
@@ -1132,7 +1114,6 @@ public final class JavaCompileAction extends AbstractAction {
CustomCommandLine.Builder paramFileContentsBuilder = javaCompileCommandLine(
commonJavaBuilderArgs,
configuration,
- classDirectory,
classpathEntries,
directJars,
strictJavaDeps,