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",