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(