aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Liam Miller-Cushon <cushon@google.com>2016-07-14 00:03:00 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2016-07-14 11:12:57 +0000
commit76bdf6e17b0bf5bc4d25e30a6a32f3655492882e (patch)
tree91beac52797f0348160637368296864b01c35b2d
parent9f1159d255075fb8427076eb60fa5613fa0845ca (diff)
Don't join header compilation classpath arguments
The classpaths get split during flag parsing, so joining them is unnecessary. -- MOS_MIGRATED_REVID=127377219
-rw-r--r--src/java_tools/buildjar/java/com/google/devtools/build/java/turbine/TurbineOptionsParser.java15
-rw-r--r--src/java_tools/buildjar/javatests/com/google/devtools/build/java/turbine/TurbineOptionsTest.java21
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaHeaderCompileActionBuilder.java12
3 files changed, 32 insertions, 16 deletions
diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/java/turbine/TurbineOptionsParser.java b/src/java_tools/buildjar/java/com/google/devtools/build/java/turbine/TurbineOptionsParser.java
index 926f04242f..a3b4723004 100644
--- a/src/java_tools/buildjar/java/com/google/devtools/build/java/turbine/TurbineOptionsParser.java
+++ b/src/java_tools/buildjar/java/com/google/devtools/build/java/turbine/TurbineOptionsParser.java
@@ -94,13 +94,13 @@ public class TurbineOptionsParser {
builder.addProcessors(readList(argumentDeque));
break;
case "--processorpath":
- builder.addProcessorPathEntries(splitClasspath(readOne(argumentDeque)));
+ builder.addProcessorPathEntries(splitClasspath(readList(argumentDeque)));
break;
case "--classpath":
- builder.addClassPathEntries(splitClasspath(readOne(argumentDeque)));
+ builder.addClassPathEntries(splitClasspath(readList(argumentDeque)));
break;
case "--bootclasspath":
- builder.addBootClassPathEntries(splitClasspath(readOne(argumentDeque)));
+ builder.addBootClassPathEntries(splitClasspath(readList(argumentDeque)));
break;
case "--javacopts":
builder.addAllJavacOpts(readList(argumentDeque));
@@ -131,10 +131,6 @@ public class TurbineOptionsParser {
case "--target_label":
builder.setTargetLabel(readOne(argumentDeque));
break;
- case "--strict_java_deps":
- // TODO(cushon): remove once Blaze no longer passes this flag
- readOne(argumentDeque); // ignored
- break;
case "--rule_kind":
builder.setRuleKind(readOne(argumentDeque));
break;
@@ -167,9 +163,10 @@ public class TurbineOptionsParser {
private static final Splitter CLASSPATH_SPLITTER =
Splitter.on(':').trimResults().omitEmptyStrings();
- private static ImmutableList<String> splitClasspath(String path) {
+ // TODO(cushon): stop splitting classpaths once cl/127006119 is released
+ private static ImmutableList<String> splitClasspath(Iterable<String> paths) {
ImmutableList.Builder<String> classpath = ImmutableList.builder();
- if (path != null) {
+ for (String path : paths) {
classpath.addAll(CLASSPATH_SPLITTER.split(path));
}
return classpath.build();
diff --git a/src/java_tools/buildjar/javatests/com/google/devtools/build/java/turbine/TurbineOptionsTest.java b/src/java_tools/buildjar/javatests/com/google/devtools/build/java/turbine/TurbineOptionsTest.java
index d683817382..a29ed27c01 100644
--- a/src/java_tools/buildjar/javatests/com/google/devtools/build/java/turbine/TurbineOptionsTest.java
+++ b/src/java_tools/buildjar/javatests/com/google/devtools/build/java/turbine/TurbineOptionsTest.java
@@ -157,6 +157,27 @@ public class TurbineOptionsTest {
}
@Test
+ public void repeatedClasspath() throws Exception {
+ String[] lines = {
+ "--classpath",
+ "liba.jar",
+ "libb.jar:libc.jar",
+ "--processorpath",
+ "libpa.jar",
+ "libpb.jar",
+ "libpc.jar",
+ };
+
+ TurbineOptions options =
+ TurbineOptionsParser.parse(Iterables.concat(BASE_ARGS, Arrays.asList(lines)));
+
+ assertThat(options.classPath()).containsExactly("liba.jar", "libb.jar", "libc.jar").inOrder();
+ assertThat(options.processorPath())
+ .containsExactly("libpa.jar", "libpb.jar", "libpc.jar")
+ .inOrder();
+ }
+
+ @Test
public void optionalTargetLabelAndRuleKind() throws Exception {
String[] lines = {
"--output",
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaHeaderCompileActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaHeaderCompileActionBuilder.java
index 5ce87bc5bc..0d0a53f4c3 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaHeaderCompileActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaHeaderCompileActionBuilder.java
@@ -251,7 +251,7 @@ public class JavaHeaderCompileActionBuilder {
// comparing the command line length to the minimum param file size regresses analysis
// performance (see b/29410356).
builder.alwaysUseParameterFile(ParameterFileType.UNQUOTED);
- builder.setCommandLine(buildCommandLine(ruleContext.getConfiguration().getHostPathSeparator()));
+ builder.setCommandLine(buildCommandLine());
builder.addTransitiveInputs(javabaseInputs);
builder.addTransitiveInputs(classpathEntries);
@@ -289,7 +289,7 @@ public class JavaHeaderCompileActionBuilder {
}
/** Builds the header compiler command line. */
- private CommandLine buildCommandLine(String hostPathSeparator) {
+ private CommandLine buildCommandLine() {
CustomCommandLine.Builder result = CustomCommandLine.builder();
result.addExecPath("--output", outputJar);
@@ -300,16 +300,14 @@ public class JavaHeaderCompileActionBuilder {
result.add("--temp_dir").addPath(tempDirectory);
- result.addJoinExecPaths("--classpath", hostPathSeparator, classpathEntries);
- result.addJoinExecPaths(
- "--bootclasspath", hostPathSeparator, bootclasspathEntries);
+ result.addExecPaths("--classpath", classpathEntries);
+ result.addExecPaths("--bootclasspath", bootclasspathEntries);
if (!processorNames.isEmpty()) {
result.add("--processors", processorNames);
}
if (!processorPath.isEmpty()) {
- result.addJoinExecPaths(
- "--processorpath", hostPathSeparator, processorPath);
+ result.addExecPaths("--processorpath", processorPath);
}
result.addExecPaths("--sources", sourceFiles);