From 9f7180fc5211f9c381a57a940975390c825a7d90 Mon Sep 17 00:00:00 2001 From: Laszlo Csomor Date: Tue, 27 Sep 2016 13:07:43 +0000 Subject: 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 --- compile.sh | 9 +++++++-- scripts/bootstrap/bootstrap.sh | 33 ++++++++++++++++++++------------- scripts/bootstrap/buildenv.sh | 2 +- scripts/bootstrap/compile.sh | 7 ++++--- 4 files changed, 32 insertions(+), 19 deletions(-) diff --git a/compile.sh b/compile.sh index 53fc4127b9..484b043a57 100755 --- a/compile.sh +++ b/compile.sh @@ -99,8 +99,13 @@ if [ $DO_COMPILE ]; then 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 c656e15dd0..20f5bbabdb 100755 --- a/scripts/bootstrap/bootstrap.sh +++ b/scripts/bootstrap/bootstrap.sh @@ -45,24 +45,31 @@ else 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 ebcf9429ac..4a946878c2 100755 --- a/scripts/bootstrap/buildenv.sh +++ b/scripts/bootstrap/buildenv.sh @@ -158,7 +158,7 @@ function fail() { 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 77372f015b..c72b9f722e 100755 --- a/scripts/bootstrap/compile.sh +++ b/scripts/bootstrap/compile.sh @@ -302,8 +302,9 @@ else 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 @@ function bootstrap_build() { --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 \ -- cgit v1.2.3