aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar elenairina <elenairina@google.com>2017-05-11 14:26:55 -0400
committerGravatar Kristina Chodorow <kchodorow@google.com>2017-05-11 14:41:28 -0400
commit1a57d298f8aa6ea8136d93223902104f2479cd2a (patch)
treeb131c5f6ed1229bab6a5df12eda57b15301b0982
parentaad0bd01cf778d421a3be457ba5a1fabddb3b15f (diff)
Re-enabling passing -sourcepath via javacopts.
This is needed until java_common.compile will be strong enough to replace java_library, exposing all its features. PiperOrigin-RevId: 155773169
-rw-r--r--src/java_tools/buildjar/java/com/google/devtools/build/buildjar/OptionsParser.java14
-rwxr-xr-xsrc/test/shell/bazel/bazel_java_test.sh36
2 files changed, 50 insertions, 0 deletions
diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/OptionsParser.java b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/OptionsParser.java
index e72d4c3a59..1d6da623d7 100644
--- a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/OptionsParser.java
+++ b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/OptionsParser.java
@@ -27,6 +27,7 @@ import java.util.Collection;
import java.util.Deque;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -110,6 +111,7 @@ public final class OptionsParser {
// otherwise we have to do something like adding a "--"
// terminator to the passed arguments.
collectFlagArguments(javacOpts, argQueue, "--");
+ sourcePathFromJavacOpts();
break;
case "--direct_dependency":
{
@@ -220,6 +222,18 @@ public final class OptionsParser {
}
}
+ private void sourcePathFromJavacOpts() {
+ Iterator<String> it = javacOpts.iterator();
+ while (it.hasNext()) {
+ String curr = it.next();
+ if (curr.equals("-sourcepath") && it.hasNext()) {
+ it.remove();
+ sourcePath = it.next();
+ it.remove();
+ }
+ }
+ }
+
private JarOwner parseJarOwner(String line) {
List<String> ownerStringParts = SPACE_SPLITTER.splitToList(line);
JarOwner owner;
diff --git a/src/test/shell/bazel/bazel_java_test.sh b/src/test/shell/bazel/bazel_java_test.sh
index 8cbfc12ada..9dc1be797c 100755
--- a/src/test/shell/bazel/bazel_java_test.sh
+++ b/src/test/shell/bazel/bazel_java_test.sh
@@ -105,6 +105,42 @@ function test_build_hello_world() {
bazel build //java/main:main &> $TEST_log || fail "build failed"
}
+function test_build_with_sourcepath() {
+ mkdir -p g
+ cat >g/A.java <<'EOF'
+package g;
+public class A {
+ public A() {
+ new B();
+ }
+}
+EOF
+
+ cat >g/B.java <<'EOF'
+package g;
+public class B {
+ public B() {
+ }
+}
+EOF
+
+ cat >g/BUILD <<'EOF'
+genrule(
+ name = "stub",
+ srcs = ["B.java"],
+ outs = ["B.jar"],
+ cmd = "zip $@ $(SRCS)",
+)
+java_library(
+ name = "test",
+ srcs = ["A.java"],
+ javacopts = ["-sourcepath $(GENDIR)/$(location :stub)", "-implicit:none"],
+ deps = [":stub"]
+)
+EOF
+ bazel build //g:test >$TEST_log || fail "Failed to build //g:test"
+}
+
function test_java_common_compile_sourcepath() {
# TODO(bazel-team): Enable this for Java 7 when VanillaJavaBuilder supports --sourcepath.
JAVA_VERSION="1.$(bazel query --output=build '@bazel_tools//tools/jdk:toolchain' | grep source_version | cut -d '"' -f 2)"