blob: bcee4734d8a3b9d246248c92d30bf6d9f5a23e9b [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# We still require WORKSPACE support as bazeldnf isn't bzlmod compatible yet.
8common --enable_workspace
9
10# rules_proto_grpc isn't fully compatible with Bazel 8 yet.
11common --noincompatible_disallow_ctx_resolve_tools
12
Tim Windelschmidtd7f59932024-07-24 23:37:03 +020013# Actually make the lock file a lock file by not updating it without any
14# request to do so.
15common --lockfile_mode=error
16
Tim Windelschmidt6c851e22024-01-11 15:23:48 +010017# Allow empty globs as there are a lot until we replace our rust toolchain and
18# qemu BUILD files.
19common --noincompatible_disallow_empty_glob
20
21# Don't warn about too high test timeout as these can vary a lot.
22test --notest_verbose_timeout_warnings
23
Leopold Schabel8661db32024-07-24 16:28:27 +000024# Set compilation mode (-c) to debug when running with --config dbg.
Lorenz Brun65702192023-08-31 16:27:38 +020025build:dbg --compilation_mode=dbg
26
Tim Windelschmidt25e0d8f2024-12-02 23:46:24 +010027# Run race config with race detector
28build:race --@io_bazel_rules_go//go/config:race
Jan Schär0fd36f42025-04-29 10:26:03 +000029build:race --no@io_bazel_rules_go//go/config:pure
Tim Windelschmidt25e0d8f2024-12-02 23:46:24 +010030
Tim Windelschmidt32e74302025-01-15 04:37:26 +010031# Only download the final result, the intermediate files can stay on the
32# server side.
33build:remote --remote_download_toplevel
34build:remote --noremote_upload_local_results
35
36# Set the execution platform which adds constraints for the scheduler.
37build:remote --extra_execution_platforms=//build/platforms:remote_amd64
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
Leopoldbc93c2b2023-01-14 13:12:23 +010046# Run all spawns in our own hermetic sandbox sysroot.
Leopold Schabel9508b122023-07-14 17:54:17 +020047build --experimental_use_hermetic_linux_sandbox
Tim Windelschmidt6c851e22024-01-11 15:23:48 +010048build --sandbox_fake_hostname
49build --sandbox_fake_username
Leopold7fbf1042023-01-06 19:57:37 +010050build --action_env=MONOGON_SANDBOX_DIGEST
51import %workspace%/.bazelrc.sandbox
52
Tim Windelschmidt6c851e22024-01-11 15:23:48 +010053# Enable revised output directory hash suffix computation
54build --experimental_output_directory_naming_scheme=diff_against_dynamic_baseline
55build --experimental_exec_configuration_distinguisher=off
56
Serge Bazanskif9c82492024-09-16 16:50:39 +020057# Enable resource set configuration via starlark for actions
58build --experimental_action_resource_set
59
Leopold Schabel9508b122023-07-14 17:54:17 +020060# Hardwire all action envs to just use /usr/bin from the above sandbox. This is
61# necessary on NixOS Bazel builds, as they really like to inject /nix/store/*
62# paths otherwise. We also explicitly set it to /usr/bin only (no /bin) as
63# otherwise calling gcc from /bin/gcc breaks its own resolution of subordinate
64# commands (like cc1, as, etc.).
65build --action_env=PATH=/usr/bin
66build --host_action_env=PATH=/usr/bin
67
68# Make all shell run actions use /bin/bash instead of whatever the host might
69# have set. Again, looking at you, Bazel-on-NixOS.
70build --shell_executable=/bin/bash
71
Leopoldbc93c2b2023-01-14 13:12:23 +010072# No local CPP toolchain resolution. In our sandbox root, it doesn't make sense -
73# anything auto-detected during analysis stage is on the host instead of the sandbox.
74# Sysroot rebuild is pure Go and doesn't need it either.
75# The flag ensures we fail early if we somehow depend on the host toolchain,
76# and do not spend unnecessary time on autodiscovery.
77build --action_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1
78
79# Use new-style C++ toolchain resolution.
80build --incompatible_enable_cc_toolchain_resolution
81
Tim Windelschmidt886abba2024-07-17 21:29:55 +020082# Use new-style proto toolchain resolution.
83build --incompatible_enable_proto_toolchain_resolution
84
Leopoldbc93c2b2023-01-14 13:12:23 +010085# In our monorepo, we mostly ignore the host platform since we bring our own
86# execution environment. However, we still need to run a small number of tools
Serge Bazanski139550a2023-06-20 13:30:27 +020087# such as gazelle.
88build --host_platform=//build/platforms:linux_amd64
Leopoldbc93c2b2023-01-14 13:12:23 +010089
90# Target platform for the monorepo is currently the same as the host platform,
91# but we'll support cross-compilation at some point. Do not rely on it.
92build --platforms=//build/platforms:linux_amd64
93# Make sure our platform is picked instead of the --host_platform.
94build --extra_execution_platforms=//build/platforms:linux_amd64
95
Leopoldeb2fb7b2022-06-08 13:18:51 +020096# Build resources
Leopold Schabel5c80aca2019-10-22 15:48:58 +020097startup --batch_cpu_scheduling --io_nice_level 7
Lorenz Brun5d7d2a42020-04-06 14:11:02 +020098
Serge Bazanskibb7db922020-04-30 12:43:10 +020099# Build with C++17.
100build --cxxopt=-std=c++17
101
Lorenz Brunf6402112020-05-04 16:50:31 +0200102# Set workspace status file and stamp
Serge Bazanskia6a03922023-11-13 19:57:48 +0100103build --stamp --workspace_status_command=./build/print-workspace-status.py
Serge Bazanski385c12f2020-06-17 12:12:42 +0200104
Serge Bazanski99b02142024-04-17 16:33:28 +0200105# Assume a 10k IOPS device (average NVMe) and 64GiB of RAM for test scheduling.
Tim Windelschmidt5be299e2024-07-13 02:59:52 +0200106test --local_resources=iops=10000 --local_resources=ram=64000
Tim Windelschmidtf1e0fa12024-07-17 21:28:23 +0200107
Tim Windelschmidt5178dd72024-12-04 04:38:45 +0100108common --experimental_downloader_config=build/bazel/bazel_downloader.cfg
109
Tim Windelschmidtf1e0fa12024-07-17 21:28:23 +0200110# Load custom per-user settings.
Serge Bazanskif9c82492024-09-16 16:50:39 +0200111try-import %workspace%/.bazelrc.user