mongo/tools/bazel
Andrew Bradshaw 83f279c9b0 SERVER-99004 Change from build to common in bazelrc so more things can inherit (#30830)
GitOrigin-RevId: f174e17392d11f0f428887334eb5d398f12afaaa
2025-01-06 22:50:48 +00:00

71 lines
2.9 KiB
Bash
Executable File

#!/usr/bin/env bash
# Whenever Bazel is invoked, it first calls this script setting "BAZEL_REAL" to the path of the real Bazel binary.
# Use this file as a wrapper for any logic that should run before bazel itself is executed.
# WARNING : If you run //:compiledb target, you can not print to stdout in this file as it will fail with
# "Bazel aquery failed." because it is reading this files stdout as aquery output
bazel_real="$BAZEL_REAL"
echo $BAZEL_REAL > ".bazel_real"
bazelrc_xcode_lines=()
# If disk space becomes an issue, this block can be used to clean up configs
# when disk space is getting low. It is commented out because "bazel info output_path"
# takes .5 seconds, and no need to add that extra time unless disk space becomes a large
# problem
#if [ $# -eq 2 ] || [ $# -eq 3 ]; then
# if [ "$1" = "build" ]; then
# output_path=$($bazel_real info output_path)
# remaining_kb=$(df --output=avail $output_path | tail -n 1)
# remaining_gb=$(($remaining_kb / 1024 / 1024))
# fastbuild_dir=${output_path}/aarch64-fastbuild
# dbg_dir=${output_path}/aarch64-dbg
# opt_dir=${output_path}/aarch64-opt
# if [ "$remaining_gb" -lt 40 ]; then
# echo "Disk space is getting low (under 40GB) - cleaning up other config outputs"
# if [ $# -eq 2 ]; then
# rm -rf "$dbg_dir" &>/dev/null
# rm -rf "$opt_dir" &>/dev/null
# elif [[ "$2" == "--config=fastbuild"* ]]; then
# rm -rf "$dbg_dir" &>/dev/null
# rm -rf "$opt_dir" &>/dev/null
# elif [[ "$2" == "--config=dbg"* ]]; then
# rm -rf "$fastbuild_dir" &>/dev/null
# rm -rf "$opt_dir" &>/dev/null
# elif [[ "$2" == "--config=opt"* ]]; then
# rm -rf "$fastbuild_dir" &>/dev/null
# rm -rf "$dbg_dir" &>/dev/null
# fi
# fi
# fi
#fi
if [[ -z "${BAZELISK_SKIP_WRAPPER}" ]]; then
echo "You're not using Bazelisk, which is recommended for a consistent build environment." >&2
echo "Your version of Bazel may be mismatched with the version intended to be used to build MongoDB." >&2
echo "Please run the following command to install Bazelisk:" >&2
echo "" >&2
echo "python buildscripts/install_bazel.py" >&2
exit 0
fi
if [[ $OSTYPE == darwin* ]]; then
echo "Running on Apple (darwin), creating .bazelrc for xcode settings." >&2
xcode_path=$(xcode-select -p) >&2
xcode_version=$(xcodebuild -version | tail -1 | cut -d " " -f3) >&2
xcode_build_number=$(/usr/bin/xcodebuild -version 2>/dev/null | tail -1 | cut -d " " -f3) >&2
bazelrc_lines+=("startup --host_jvm_args=-Xdock:name=$xcode_path") >&2
bazelrc_lines+=("common --xcode_version=$xcode_version") >&2
bazelrc_lines+=("common --repo_env=USE_CLANG_CL=$xcode_version") >&2
bazelrc_lines+=("common --repo_env=DEVELOPER_DIR=$xcode_path") >&2
fi
printf '%s\n' "${bazelrc_xcode_lines[@]}" > .bazelrc.xcode
exec "$bazel_real" "$@"