Windows: fix bootstrapping bugs with 0.4.4
Fix 3 bugs to get bootstrapping working on Windows
after it was broken in bazel-0.4.4:
* Move the definition of PATHSEP to before the
code that overrides it for Windows
* Fix the Java code processing the --javahome flag
to recognize absolute Windows paths as absolute.
See: https://github.com/bazelbuild/bazel/issues/2520
* Do not propagate the JAVA_HOME value in
variables, because it contains spaces on Windows,
and when we pass the variable to Bazel, and it's
expanded to e.g. ... --foo=C:/Program Files,
these are interpreted as two args instead of one.
Also fix a bug that is just annoying, not causing
any trouble (on Windows):
* Silently swallow errors from the "rm -rf" in the
atexit functions
Also do some refactoring:
* Rename a variable (BAZEL_ARGS) and a method to
indicate they're private. They are not used from
anywhere else as far as I know -- no occurrences
in either the bazel or the continuous-integration
repos.
Fixes: https://github.com/bazelbuild/bazel/issues/2473
--
Change-Id: I309752cd7bbff0b5dd683ddb5573f3061350043c
Reviewed-on: https://cr.bazel.build/8797
PiperOrigin-RevId: 147345194
MOS_MIGRATED_REVID=147345194
diff --git a/scripts/bootstrap/bootstrap.sh b/scripts/bootstrap/bootstrap.sh
index ee754f7..a9eea83 100755
--- a/scripts/bootstrap/bootstrap.sh
+++ b/scripts/bootstrap/bootstrap.sh
@@ -31,51 +31,48 @@
: ${JAVA_VERSION:="1.8"}
if [ "${JAVA_VERSION}" = "1.7" ]; then
- : ${BAZEL_ARGS:=--java_toolchain=//src/java_tools/buildjar:bootstrap_toolchain_jdk7 \
+ _BAZEL_ARGS="--java_toolchain=//src/java_tools/buildjar:bootstrap_toolchain_jdk7 \
--host_java_toolchain=//src/java_tools/buildjar:bootstrap_toolchain_jdk7 \
- --javabase=$JAVA_HOME \
- --host_javabase=$JAVA_HOME \
--spawn_strategy=standalone \
--nojava_header_compilation \
--define JAVA_VERSION=1.7 --ignore_unsupported_sandboxing \
--compilation_mode=opt \
- "${EXTRA_BAZEL_ARGS:-}"}
+ ${EXTRA_BAZEL_ARGS:-}"
else
- : ${BAZEL_ARGS:=--java_toolchain=//src/java_tools/buildjar:bootstrap_toolchain \
+ _BAZEL_ARGS="--java_toolchain=//src/java_tools/buildjar:bootstrap_toolchain \
--host_java_toolchain=//src/java_tools/buildjar:bootstrap_toolchain \
- --javabase=$JAVA_HOME \
- --host_javabase=$JAVA_HOME \
--spawn_strategy=standalone \
--nojava_header_compilation \
--strategy=Javac=worker --worker_quit_after_build --ignore_unsupported_sandboxing \
--compilation_mode=opt \
- "${EXTRA_BAZEL_ARGS:-}"}
+ ${EXTRA_BAZEL_ARGS:-}"
fi
if [ -z "${BAZEL-}" ]; then
- function run_bootstrapping_bazel() {
+ function _run_bootstrapping_bazel() {
local command=$1
shift
run_bazel_jar $command \
- ${BAZEL_ARGS-} --verbose_failures \
+ ${_BAZEL_ARGS} --verbose_failures \
+ "--javabase=${JAVA_HOME}" "--host_javabase=${JAVA_HOME}" \
--javacopt="-g -source ${JAVA_VERSION} -target ${JAVA_VERSION}" "${@}"
}
else
- function run_bootstrapping_bazel() {
- local command=$1
+ function _run_bootstrapping_bazel() { local command=$1
shift
${BAZEL} --bazelrc=${BAZELRC} ${BAZEL_DIR_STARTUP_OPTIONS} $command \
- ${BAZEL_ARGS-} --verbose_failures \
+ ${_BAZEL_ARGS} --verbose_failures \
+ "--javabase=${JAVA_HOME}" "--host_javabase=${JAVA_HOME}" \
--javacopt="-g -source ${JAVA_VERSION} -target ${JAVA_VERSION}" "${@}"
}
fi
function bazel_build() {
- run_bootstrapping_bazel build "${EMBED_LABEL_ARG[@]}" "$@"
+ _run_bootstrapping_bazel build "${EMBED_LABEL_ARG[@]}" "$@"
}
function get_bazel_bin_path() {
- run_bootstrapping_bazel info "bazel-bin" || echo "bazel-bin"
+ _run_bootstrapping_bazel info "bazel-bin" || echo "bazel-bin"
}
function md5_outputs() {
diff --git a/scripts/bootstrap/buildenv.sh b/scripts/bootstrap/buildenv.sh
index 62ebc11..39a15c4 100755
--- a/scripts/bootstrap/buildenv.sh
+++ b/scripts/bootstrap/buildenv.sh
@@ -58,6 +58,7 @@
MACHINE_IS_64BIT='yes'
fi
+PATHSEP=":"
case "${PLATFORM}" in
linux)
# JAVA_HOME must point to a Java installation.
@@ -82,6 +83,8 @@
PATHSEP=";"
# Find the latest available version of the SDK.
JAVA_HOME="${JAVA_HOME:-$(ls -d /c/Program\ Files/Java/jdk* | sort | tail -n 1)}"
+ # Replace backslashes with forward slashes.
+ JAVA_HOME="${JAVA_HOME//\\//}"
esac
EXE_EXT=""
@@ -150,7 +153,7 @@
local DIR="$(mktemp -d "${tmp%%/}/bazel_XXXXXXXX")"
mkdir -p "${DIR}"
local DIRBASE=$(basename "${DIR}")
- eval "cleanup_tempdir_${DIRBASE}() { rm -rf '${DIR}'; }"
+ eval "cleanup_tempdir_${DIRBASE}() { rm -rf '${DIR}' >&/dev/null || true ; }"
atexit cleanup_tempdir_${DIRBASE}
NEW_TMPDIR="${DIR}"
}
diff --git a/scripts/bootstrap/compile.sh b/scripts/bootstrap/compile.sh
index 8dfa7c3..cbfb246 100755
--- a/scripts/bootstrap/compile.sh
+++ b/scripts/bootstrap/compile.sh
@@ -57,7 +57,6 @@
LDFLAGS=${LDFLAGS:-""}
MSYS_DLLS=""
-PATHSEP=":"
# Check that javac -version returns a upper version than $JAVA_VERSION.
get_java_version