Added support for building with older JDK (JDK 7)
Using this change, changing the target and source version of
//tools/jdk:toolchain, and setting the Java Langtools
(--java_langtools) to a JDK 8 compliant tools.jar, Bazel can
target JDK 7.
A compliant tools.jar to compile with targeting JDK 7 can be found
at http://search.maven.org/#artifactdetails%7Ccom.google.errorprone%7Cjavac%7C1.9.0-dev-r2644-1%7Cjar
--
MOS_MIGRATED_REVID=94591419
diff --git a/bootstrap_test.sh b/bootstrap_test.sh
index 3560187..9688652 100755
--- a/bootstrap_test.sh
+++ b/bootstrap_test.sh
@@ -16,6 +16,8 @@
set -eu
+BAZELRC=${BAZELRC:-/dev/null}
+
function usage() {
[ -n "${1:-}" ] && echo "Invalid command(s): $1" >&2
echo "syntax: $0 command[,command]* [BAZEL_BIN [BAZEL_SUM]]" >&2
@@ -40,7 +42,7 @@
PLATFORM="$(uname -s | tr 'A-Z' 'a-z')"
if [[ ${PLATFORM} == "darwin" ]]; then
function md5_file() {
- md5 $1 | sed 's|^MD5 (\(.*\)) =|\1|'
+ echo $(cat $1 | md5) $1
}
else
function md5_file() {
@@ -74,12 +76,13 @@
local BAZEL_BIN=$1
local BAZEL_SUM=$2
[ -x "${BAZEL_BIN}" ] || fail "syntax: bootstrap bazel-binary"
- ${BAZEL_BIN} --blazerc=/dev/null clean || return $?
- ${BAZEL_BIN} --blazerc=/dev/null fetch //... || return $?
- ${BAZEL_BIN} --blazerc=/dev/null build --nostamp //src:bazel //src:tools || return $?
+ ${BAZEL_BIN} --blazerc=${BAZELRC} clean || return $?
+ ${BAZEL_BIN} --blazerc=${BAZELRC} fetch //... || return $?
+ ${BAZEL_BIN} --blazerc=${BAZELRC} build --nostamp //src:bazel //src:tools || return $?
if [ -n "${BAZEL_SUM}" ]; then
- get_outputs_sum > ${BAZEL_SUM} || return $?
+ cat bazel-genfiles/src/java.version >${BAZEL_SUM}
+ get_outputs_sum >> ${BAZEL_SUM} || return $?
fi
}
@@ -136,7 +139,7 @@
if [ $DO_TESTS ]; then
start_test "test"
- $BOOTSTRAP --blazerc=/dev/null test -k --test_output=errors //src/... || fail "Tests failed"
+ $BOOTSTRAP --blazerc=${BAZELRC} test -k --test_output=errors //src/... || fail "Tests failed"
end_test "test"
fi
diff --git a/src/BUILD b/src/BUILD
index c192e2d..0370324 100644
--- a/src/BUILD
+++ b/src/BUILD
@@ -38,10 +38,31 @@
}),
)
+# Try to grab the java version from the java_toolchain.
+# Unfortunately, we don't the javac options so we cannot get it from
+# the command-line options.
+genquery(
+ name = "java_toolchain_content",
+ expression = "kind(java_toolchain, deps(//tools/defaults:java_toolchain))",
+ opts = ["--output=xml"],
+ scope = ["//tools/defaults:java_toolchain"],
+)
+
genrule(
name = "java-version",
+ srcs = [":java_toolchain_content"],
outs = ["java.version"],
- cmd = "echo 1.8 >$@",
+ cmd = """
+ VERSION_LINE=$$(cat $< | grep target_version);
+ JAVA_VERSION=$$(echo $${VERSION_LINE} | sed -E 's/.*value="([^"])".*/\\1/');
+ if [ -z "$${JAVA_VERSION}" ]; then
+ echo "1.8" >$@ # Java 8 is the default
+ elif [[ "$${JAVA_VERSION}" =~ ^[0-9]+$$ ]]; then
+ echo "1.$${JAVA_VERSION}" >$@ # Add 1. before 7 or 8
+ else
+ echo "$${JAVA_VERSION}" >$@
+ fi
+ """,
)
genrule(