Set-up travis OSX to compile using JDK 7

This is introducing a few changes to use the Java compiler
from errorprone:
  - add the --java_langtools flag to the shell tests so
    we do the tests with the same java compiler tooling than
    Bazel, and
  - added the langtools the bootclasspath of the JavaBuilder
    tests.
  - tagged some tests and deactivated them on travis OSX
    because they either requires Java 8 or a lot of disk
    space.

To do the same change on a local install, one must:
  - change the source and target versions to 7 in the
    tools/jdk:toolchain target,
  - use the .travis/jdk7.WORKSPACE file instead of the
    default Bazel workspace (it contains a maven_jar
    refering to the errorprone's java compiler tools), and
  - set the JAVA_VERSION environent variable to "1.7".
The .travis/build.sh script does just that when under OS X.

--
Change-Id: Idb466cf47cf7df35a34fb0dd8d186628aae0cba7
Reviewed-on: https://bazel-review.googlesource.com/#/c/1520/
MOS_MIGRATED_REVID=96011123
diff --git a/.travis/jdk7.WORKSPACE b/.travis/jdk7.WORKSPACE
new file mode 100644
index 0000000..e12d5be
--- /dev/null
+++ b/.travis/jdk7.WORKSPACE
@@ -0,0 +1,12 @@
+maven_jar(
+   name = "java_langtools",
+   group_id = "com.google.errorprone",
+   version = "1.9.0-dev-r2644-1",
+   artifact_id = "javac",
+   sha1 = "85fd71e0fbee22349e8c6101287cb5e75866a7f2",
+)
+
+bind(
+   name = "langtools",
+   actual = "@java_langtools//jar",
+)
diff --git a/src/java_tools/buildjar/BUILD b/src/java_tools/buildjar/BUILD
index 5e41759..073272b 100644
--- a/src/java_tools/buildjar/BUILD
+++ b/src/java_tools/buildjar/BUILD
@@ -150,13 +150,27 @@
     deps = [":BazelJavaCompiler"],
 )
 
+# For the -Xbootclasspath option of the java_test of buildjar
+genrule(
+    name = "langtools-test",
+    testonly = 1,
+    srcs = ["//tools/defaults:java_langtools"],
+    outs = ["langtools-test.jar"],
+    cmd = "cp $< $@",
+)
+
 java_test(
     name = "BazelJavaCompilerTest",
     size = "small",
     srcs = ["javatests/com/google/devtools/build/java/bazel/BazelJavaCompilerTest.java"],
     args = ["com.google.devtools.build.java.bazel.BazelJavaCompilerTest"],
+    jvm_flags = [
+        # Simulates how Bazel invokes JavaBuilder
+        "-Xbootclasspath/p:$${TEST_SRCDIR}/src/java_tools/buildjar/langtools-test.jar",
+    ],
     deps = [
         ":BazelJavaCompiler",
+        ":langtools-test",
         "//third_party:guava",
         "//third_party:junit4",
         "//third_party:truth",
diff --git a/src/java_tools/singlejar/BUILD b/src/java_tools/singlejar/BUILD
index 8d3685c..ac52119 100644
--- a/src/java_tools/singlejar/BUILD
+++ b/src/java_tools/singlejar/BUILD
@@ -50,6 +50,7 @@
     name = "zipTests",
     srcs = glob(["javatests/**/zip/**/*.java"]),
     args = ["com.google.devtools.build.zip.ZipTests"],
+    tags = ["zip"],
     deps = [
         ":zip",
         "//src/test/java:testutil",
diff --git a/src/test/shell/bazel/BUILD b/src/test/shell/bazel/BUILD
index 12a9bdd..f0acdba 100644
--- a/src/test/shell/bazel/BUILD
+++ b/src/test/shell/bazel/BUILD
@@ -1,16 +1,24 @@
 package(default_visibility = ["//visibility:private"])
 
+genrule(
+    name = "langtools-copy",
+    testonly = 1,
+    srcs = ["//tools/defaults:java_langtools"],
+    outs = ["langtools.jar"],
+    cmd = "cp $< $@",
+)
+
 filegroup(
     name = "test-deps",
     testonly = 1,
     srcs = [
         "test-setup.sh",
         "testenv.sh",
+        ":langtools-copy",
         "//examples:srcs",
         "//external:bootclasspath",
         "//external:extdir",
         "//external:jdk-default",
-        "//external:langtools",
         "//src:bazel",
         "//src/java_tools/buildjar:JavaBuilder_deploy.jar",
         "//src/java_tools/singlejar:SingleJar_deploy.jar",
diff --git a/src/test/shell/bazel/test-setup.sh b/src/test/shell/bazel/test-setup.sh
index da2d715..d71507d 100755
--- a/src/test/shell/bazel/test-setup.sh
+++ b/src/test/shell/bazel/test-setup.sh
@@ -37,6 +37,7 @@
   cat >$TEST_TMPDIR/bazelrc <<EOF
 startup --output_user_root=${bazel_root}
 startup --host_javabase=${bazel_javabase}
+${EXTRA_BAZELRC:-}
 EOF
 }
 
diff --git a/src/test/shell/bazel/testenv.sh b/src/test/shell/bazel/testenv.sh
index 47e5317..cd81537 100755
--- a/src/test/shell/bazel/testenv.sh
+++ b/src/test/shell/bazel/testenv.sh
@@ -30,9 +30,11 @@
 
 # Java
 jdk_dir="${TEST_SRCDIR}/external/local-jdk"
+langtools="${TEST_SRCDIR}/src/test/shell/bazel/langtools.jar"
 
 # Tools directory location
 tools_dir="${TEST_SRCDIR}/tools"
+EXTRA_BAZELRC="build --java_langtools=//tools/jdk:test-langtools"
 
 # Java tooling
 javabuilder_path="${TEST_SRCDIR}/src/java_tools/buildjar/JavaBuilder_deploy.jar"
@@ -68,7 +70,12 @@
 
 # This function copies the tools directory from Bazel.
 function copy_tools_directory() {
-  cp -R ${tools_dir}/* tools
+  cp -RL ${tools_dir}/* tools
+  # To support custom langtools
+  cp ${langtools} tools/jdk/langtools.jar
+  cat >>tools/jdk/BUILD <<'EOF'
+filegroup(name = "test-langtools", srcs = ["langtools.jar"])
+EOF
 
   chmod -R +w .
   mkdir -p tools/defaults
diff --git a/third_party/ijar/test/BUILD b/third_party/ijar/test/BUILD
index d1c32e1..57c9f43 100644
--- a/third_party/ijar/test/BUILD
+++ b/third_party/ijar/test/BUILD
@@ -39,6 +39,7 @@
         "//tools/jdk:langtools",
     ],
     shard_count = 5,
+    tags = ["zip"],
 )
 
 sh_test(
@@ -56,6 +57,7 @@
         "//src/test/shell:bashunit",
         "//third_party/ijar:zipper",
     ],
+    tags = ["zip"],
 )
 
 java_library(
@@ -63,6 +65,7 @@
     testonly = 1,
     srcs = ["invokedynamic/ClassWithLambda.java"],
     javacopts = ["-source 8 -target 8"],
+    tags = ["jdk8"],
 )
 
 # For testing purposes: a class which exposes a private nested class in
@@ -94,6 +97,7 @@
     name = "typeannotations2",
     srcs = glob(["typeannotations2/**/*.java"]),
     javacopts = ["-source 8 -target 8"],
+    tags = ["jdk8"],
 )
 
 java_test(
@@ -111,6 +115,7 @@
         "package-info.java",
         ":interface_ijar_testlib",
     ],
+    tags = ["zip"],
     deps = [
         "//src/java_tools/buildjar:BazelJavaCompiler",
         "//third_party:asm",