diff options
author | 2016-07-14 00:03:00 +0000 | |
---|---|---|
committer | 2016-07-14 11:12:57 +0000 | |
commit | 76bdf6e17b0bf5bc4d25e30a6a32f3655492882e (patch) | |
tree | 91beac52797f0348160637368296864b01c35b2d | |
parent | 9f1159d255075fb8427076eb60fa5613fa0845ca (diff) |
Don't join header compilation classpath arguments
The classpaths get split during flag parsing, so joining them is unnecessary.
--
MOS_MIGRATED_REVID=127377219
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); |