Bootstrapping: don't use convenience symlinks

When `compile.sh` builds bazel using bazel, it
copies the resulting binary to `output/bazel`.
However sometimes the convenience symlink
`bazel-bin` is not created, probably because an
old one is still around and cannot be deleted.

That is clearly a bug, but to work around it, the
bootstrap builder shouldn't attempt to rely on the
creation of these symlinks in the first place.

This change updates compile.sh to use `bazel info`
to locate the `bazel-bin` directory's real path,
and attempt to copy the bazel binary from there.

This works around
https://github.com/bazelbuild/bazel/issues/1827

--
MOS_MIGRATED_REVID=134398451
diff --git a/compile.sh b/compile.sh
index 53fc412..484b043 100755
--- a/compile.sh
+++ b/compile.sh
@@ -99,8 +99,13 @@
   new_step 'Building Bazel with Bazel'
   display "."
   log "Building output/bazel"
-  bazel_build "src:bazel${EXE_EXT}"
-  cp -f "bazel-bin/src/bazel${EXE_EXT}" "output/bazel${EXE_EXT}"
+  bazel_build "src:bazel${EXE_EXT}" \
+    || fail "Could not build Bazel"
+  bazel_bin_path="$(get_bazel_bin_path)/src/bazel${EXE_EXT}"
+  [ -e "$bazel_bin_path" ] \
+    || fail "Could not find freshly built Bazel binary at '$bazel_bin_path'"
+  cp -f "$bazel_bin_path" "output/bazel${EXE_EXT}" \
+    || fail "Could not copy '$bazel_bin_path' to 'output/bazel${EXE_EXT}'"
   chmod 0755 "output/bazel${EXE_EXT}"
   BAZEL="$(pwd)/output/bazel${EXE_EXT}"
 fi
diff --git a/scripts/bootstrap/bootstrap.sh b/scripts/bootstrap/bootstrap.sh
index c656e15..20f5bba 100755
--- a/scripts/bootstrap/bootstrap.sh
+++ b/scripts/bootstrap/bootstrap.sh
@@ -45,24 +45,31 @@
 fi
 
 if [ -z "${BAZEL-}" ]; then
-  function bazel_build() {
-    bootstrap_build ${BAZEL_ARGS-} \
-                    --verbose_failures \
-                    --javacopt="-g -source ${JAVA_VERSION} -target ${JAVA_VERSION}" \
-                    "${EMBED_LABEL_ARG[@]}" \
-                    "${@}"
+  function run_bootstrapping_bazel() {
+    local command=$1
+    shift
+    run_bazel_jar $command \
+        ${BAZEL_ARGS-} --verbose_failures \
+        --javacopt="-g -source ${JAVA_VERSION} -target ${JAVA_VERSION}" "${@}"
   }
 else
-  function bazel_build() {
-    ${BAZEL} --bazelrc=${BAZELRC} ${BAZEL_DIR_STARTUP_OPTIONS} build \
-           ${BAZEL_ARGS-} \
-           --verbose_failures \
-           --javacopt="-g -source ${JAVA_VERSION} -target ${JAVA_VERSION}" \
-           "${EMBED_LABEL_ARG[@]}" \
-           "${@}"
+  function run_bootstrapping_bazel() {
+    local command=$1
+    shift
+    ${BAZEL} --bazelrc=${BAZELRC} ${BAZEL_DIR_STARTUP_OPTIONS} $command \
+        ${BAZEL_ARGS-} --verbose_failures \
+        --javacopt="-g -source ${JAVA_VERSION} -target ${JAVA_VERSION}" "${@}"
   }
 fi
 
+function bazel_build() {
+  run_bootstrapping_bazel build "${EMBED_LABEL_ARG[@]}" "$@"
+}
+
+function get_bazel_bin_path() {
+  run_bootstrapping_bazel info "bazel-bin" || echo "bazel-bin"
+}
+
 function md5_outputs() {
   [ -n "${BAZEL_TEST_XTRACE:-}" ] && set +x  # Avoid garbage in the output
   # runfiles/MANIFEST & runfiles_manifest contain absolute path, ignore.
diff --git a/scripts/bootstrap/buildenv.sh b/scripts/bootstrap/buildenv.sh
index ebcf942..4a94687 100755
--- a/scripts/bootstrap/buildenv.sh
+++ b/scripts/bootstrap/buildenv.sh
@@ -158,7 +158,7 @@
     exitCode=1
   fi
   echo >&2
-  echo "$@" >&2
+  echo "ERROR: $@" >&2
   exit $exitCode
 }
 
diff --git a/scripts/bootstrap/compile.sh b/scripts/bootstrap/compile.sh
index 77372f0..c72b9f7 100755
--- a/scripts/bootstrap/compile.sh
+++ b/scripts/bootstrap/compile.sh
@@ -302,8 +302,9 @@
   cp tools/osx/xcode_locator_stub.sh ${ARCHIVE_DIR}/_embedded_binaries/xcode-locator
 fi
 
-# bazel build using bootstrap version
-function bootstrap_build() {
+function run_bazel_jar() {
+  local command=$1
+  shift
   "${JAVA_HOME}/bin/java" \
       -XX:+HeapDumpOnOutOfMemoryError -Xverify:none -Dfile.encoding=ISO-8859-1 \
       -XX:HeapDumpPath=${OUTPUT_DIR} \
@@ -319,7 +320,7 @@
       --nofatal_event_bus_exceptions \
       ${BAZEL_DIR_STARTUP_OPTIONS} \
       ${BAZEL_BOOTSTRAP_STARTUP_OPTIONS:-} \
-      build \
+      $command \
       --ignore_unsupported_sandboxing \
       --startup_time=329 --extract_data_time=523 \
       --rc_source=/dev/null --isatty=1 \