blob: 8555f7f9716b9d99fa1ae6ebb8a662d0852a3cd9 [file] [log] [blame]
Tim Windelschmidt6c851e22024-01-11 15:23:48 +01001# Import Aspect bazelrc presets
Tim Windelschmidt2979a432025-02-24 18:55:52 +01002import %workspace%/third_party/bazelrc/aspect/bazel8.bazelrc
Tim Windelschmidt6c851e22024-01-11 15:23:48 +01003import %workspace%/third_party/bazelrc/aspect/convenience.bazelrc
4import %workspace%/third_party/bazelrc/aspect/correctness.bazelrc
5import %workspace%/third_party/bazelrc/aspect/performance.bazelrc
6
Tim Windelschmidt2979a432025-02-24 18:55:52 +01007# rules_proto_grpc isn't fully compatible with Bazel 8 yet.
8common --noincompatible_disallow_ctx_resolve_tools
9
Tim Windelschmidtd7f59932024-07-24 23:37:03 +020010# Actually make the lock file a lock file by not updating it without any
11# request to do so.
12common --lockfile_mode=error
13
Tim Windelschmidt6c851e22024-01-11 15:23:48 +010014# Allow empty globs as there are a lot until we replace our rust toolchain and
15# qemu BUILD files.
16common --noincompatible_disallow_empty_glob
17
18# Don't warn about too high test timeout as these can vary a lot.
19test --notest_verbose_timeout_warnings
20
Leopold Schabel8661db32024-07-24 16:28:27 +000021# Set compilation mode (-c) to debug when running with --config dbg.
Lorenz Brun65702192023-08-31 16:27:38 +020022build:dbg --compilation_mode=dbg
23
Tim Windelschmidt25e0d8f2024-12-02 23:46:24 +010024# Run race config with race detector
25build:race --@io_bazel_rules_go//go/config:race
Jan Schär0fd36f42025-04-29 10:26:03 +000026build:race --no@io_bazel_rules_go//go/config:pure
Tim Windelschmidt25e0d8f2024-12-02 23:46:24 +010027
Tim Windelschmidt32e74302025-01-15 04:37:26 +010028# Only download the final result, the intermediate files can stay on the
29# server side.
30build:remote --remote_download_toplevel
31build:remote --noremote_upload_local_results
32
33# Set the execution platform which adds constraints for the scheduler.
Jan Schär51c67482025-05-05 13:11:55 +000034build:remote --extra_execution_platforms=//build/platforms:remote_x86_64
Tim Windelschmidt32e74302025-01-15 04:37:26 +010035
Lorenz Brun27f2efb2025-06-28 11:53:12 +020036# We have some large uploads and actions, the default 60s is not enough.
37build:remote --remote_timeout=360s
38
Jan Schär0fd36f42025-04-29 10:26:03 +000039# Enable pure by default. Specific go_binary targets which need cgo should set
40# `pure = "off"`.
41build --@io_bazel_rules_go//go/config:pure
42
Tim Windelschmidt25e0d8f2024-12-02 23:46:24 +010043# Force netgo and osusergo
44build --@io_bazel_rules_go//go/config:tags=osusergo,netgo
45
Jan Schärafb922c2025-05-19 10:18:37 +000046# Include platform in output directory name. For each platform we use, a short
47# name should be assigned here, otherwise Bazel uses a hash.
48build --experimental_platform_in_output_dir
49build --noexperimental_use_platforms_in_output_dir_legacy_heuristic
50build --experimental_override_name_platform_in_output_dir=//build/platforms:linux_x86_64=linux-x86_64
51build --experimental_override_name_platform_in_output_dir=//build/platforms:linux_aarch64=linux-aarch64
52build --experimental_override_name_platform_in_output_dir=//build/platforms:uefi_x86_64=uefi-x86_64
53build --experimental_override_name_platform_in_output_dir=//build/platforms:uefi_aarch64=uefi-aarch64
54build --experimental_override_name_platform_in_output_dir=//build/platforms:remote_x86_64=remote-x86_64
55build --experimental_override_name_platform_in_output_dir=@io_bazel_rules_go//go/toolchain:darwin_amd64=go-darwin-amd64
56build --experimental_override_name_platform_in_output_dir=@io_bazel_rules_go//go/toolchain:darwin_arm64=go-darwin-arm64
57build --experimental_override_name_platform_in_output_dir=@io_bazel_rules_go//go/toolchain:windows_amd64=go-windows-amd64
58build --experimental_override_name_platform_in_output_dir=@io_bazel_rules_go//go/toolchain:windows_arm64=go-windows-arm64
59
Jan Schäraf72f682025-05-19 09:58:13 +000060# Enable path mapping to improve cache hit rate.
61# Actions in custom rules can opt in with supports-path-mapping.
62# See https://github.com/bazelbuild/bazel/discussions/22658
63build --experimental_output_paths=strip
64
Jan Schära81e2a62025-05-05 12:02:24 +000065# Stop propagation of settings to exec config by default.
66# See https://github.com/bazelbuild/bazel/issues/22457
67build --experimental_exclude_starlark_flags_from_exec_config
68# These flags need to be propagated for nogo to work. We currently need to
69# reference rules_go with the canonical repo name; this is no longer necessary
70# once the fix for https://github.com/bazelbuild/bazel/issues/25208 is released.
71build --experimental_propagate_custom_flag=@@rules_go+//go/private:request_nogo
72build --experimental_propagate_custom_flag=@@rules_go+//go/private:bootstrap_nogo
73
Tim Windelschmidt5d357d82025-07-10 18:47:15 +020074# rules_python uses host python for bootstrapping.
75# Override to use a shell script for this.
76# https://github.com/bazelbuild/rules_python/issues/691
77build --@rules_python//python/config_settings:bootstrap_impl=script
78build --experimental_propagate_custom_flag=@@rules_python+//python/config_settings:bootstrap_impl
79
Leopoldbc93c2b2023-01-14 13:12:23 +010080# No local CPP toolchain resolution. In our sandbox root, it doesn't make sense -
81# anything auto-detected during analysis stage is on the host instead of the sandbox.
82# Sysroot rebuild is pure Go and doesn't need it either.
83# The flag ensures we fail early if we somehow depend on the host toolchain,
84# and do not spend unnecessary time on autodiscovery.
85build --action_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1
86
87# Use new-style C++ toolchain resolution.
88build --incompatible_enable_cc_toolchain_resolution
Tim Windelschmidt2da91b92025-04-15 21:10:12 +020089build --experimental_cc_static_library
Leopoldbc93c2b2023-01-14 13:12:23 +010090
Tim Windelschmidt886abba2024-07-17 21:29:55 +020091# Use new-style proto toolchain resolution.
92build --incompatible_enable_proto_toolchain_resolution
93
Leopoldbc93c2b2023-01-14 13:12:23 +010094# In our monorepo, we mostly ignore the host platform since we bring our own
95# execution environment. However, we still need to run a small number of tools
Serge Bazanski139550a2023-06-20 13:30:27 +020096# such as gazelle.
Jan Schär51c67482025-05-05 13:11:55 +000097build --host_platform=//build/platforms:linux_x86_64
Leopoldbc93c2b2023-01-14 13:12:23 +010098
99# Target platform for the monorepo is currently the same as the host platform,
100# but we'll support cross-compilation at some point. Do not rely on it.
Jan Schär51c67482025-05-05 13:11:55 +0000101build --platforms=//build/platforms:linux_x86_64
Leopoldbc93c2b2023-01-14 13:12:23 +0100102# Make sure our platform is picked instead of the --host_platform.
Jan Schär51c67482025-05-05 13:11:55 +0000103build --extra_execution_platforms=//build/platforms:linux_x86_64
Leopoldbc93c2b2023-01-14 13:12:23 +0100104
Leopoldeb2fb7b2022-06-08 13:18:51 +0200105# Build resources
Leopold Schabel5c80aca2019-10-22 15:48:58 +0200106startup --batch_cpu_scheduling --io_nice_level 7
Lorenz Brun5d7d2a42020-04-06 14:11:02 +0200107
Serge Bazanskibb7db922020-04-30 12:43:10 +0200108# Build with C++17.
109build --cxxopt=-std=c++17
110
Lorenz Brunf6402112020-05-04 16:50:31 +0200111# Set workspace status file and stamp
Serge Bazanskia6a03922023-11-13 19:57:48 +0100112build --stamp --workspace_status_command=./build/print-workspace-status.py
Serge Bazanski385c12f2020-06-17 12:12:42 +0200113
Jan Schärbddad352025-04-23 14:55:26 +0000114# The --nostamp Bazel flag does not work in this repo; instead use
115# --config=nostamp to disable stamping with commit info.
116build:nostamp --workspace_status_command="./build/print-workspace-status.py --nostamp"
117
Serge Bazanski99b02142024-04-17 16:33:28 +0200118# Assume a 10k IOPS device (average NVMe) and 64GiB of RAM for test scheduling.
Tim Windelschmidt5be299e2024-07-13 02:59:52 +0200119test --local_resources=iops=10000 --local_resources=ram=64000
Tim Windelschmidtf1e0fa12024-07-17 21:28:23 +0200120
Tim Windelschmidt78fd25b2025-07-02 21:30:09 +0200121common --downloader_config=build/bazel/bazel_downloader.cfg
Tim Windelschmidt5178dd72024-12-04 04:38:45 +0100122
Tim Windelschmidtf1e0fa12024-07-17 21:28:23 +0200123# Load custom per-user settings.
Serge Bazanskif9c82492024-09-16 16:50:39 +0200124try-import %workspace%/.bazelrc.user