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(