aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Laszlo Csomor <laszlocsomor@google.com>2016-09-27 13:07:43 +0000
committerGravatar Yun Peng <pcloudy@google.com>2016-09-27 14:58:17 +0000
commit9f7180fc5211f9c381a57a940975390c825a7d90 (patch)
tree8cc06362fa862d3ccce8b994eca8b66f03902efb
parentbb5901ba0474eb2ddd035502663026bcb0c05b7c (diff)
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
-rwxr-xr-xcompile.sh9
-rwxr-xr-xscripts/bootstrap/bootstrap.sh33
-rwxr-xr-xscripts/bootstrap/buildenv.sh2
-rwxr-xr-xscripts/bootstrap/compile.sh7
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 \