blob: ee487eb768295326cea32818febdba9b9af06127 [file] [log] [blame] [edit]
# DO NOT MODIFY THIS FILE IF YOU WANT CHANGES TO YOUR PERSONAL CONFIGURATION.
# INSTEAD, MODIFY ONE OF THE FOLLOWING CONFIGURATION FILES DEPENDING ON WHICH
# CHECKOUTS YOU WANT TO AFFECT:
# If you're not sure what you want, you probably want option 2. See bazel/bazelrcs/example_chromiumos.bazelrc for an example
# Option 1) All bazel projects: $HOME/.bazelrc
# Option 2) All bazel chromiumos projects: $HOME/.chromiumos.bazelrc
# Option 3) This specific chromiumos checkoput: src/workspace.bazelrc
import %workspace%/bazel/bazelrcs/aspect/bazel6.bazelrc
import %workspace%/bazel/bazelrcs/aspect/correctness.bazelrc
# Adds support for "--config=debug"
import %workspace%/bazel/bazelrcs/aspect/debug.bazelrc
import %workspace%/bazel/bazelrcs/aspect/javascript.bazelrc
import %workspace%/bazel/bazelrcs/aspect/performance.bazelrc
# Enable the use of RBE remote caching behind --config=rbe.
import %workspace%/bazel/bazelrcs/include/remote_build_artifacts.bazelrc
# Bzlmod is the new dependency management system in bazel.
common --experimental_enable_bzlmod
common --registry=file:%workspace%/../bazel_deps/bazel-central-registry
# Undo some flags that were set by aspect that don't work for us.
# We disable this for ChromeOS because it throws errors along the lines of
# "Infinite symlink chain detected".
startup --host_jvm_args=-DBAZEL_TRACK_SOURCE_DIRECTORIES=0
common --noincompatible_disallow_empty_glob
# Until we can distinguish between CI and non-CI builds, this should be set for all builds.
build --remote_upload_local_results
# Show timestamps for easier performance analysis.
common --show_timestamps
# Always show output from actions.
common --experimental_ui_max_stdouterr_bytes=-1
# Publish the individual action traces and logs
build --output_groups=+logs,+traces
# TODO(b/309692900): Re-enable this once the bug is resolved.
build --noincompatible_disallow_unsound_directory_outputs
# Prevent writing to the remote cache if source files change during the build.
# **DISABLED** Only useful when uploading artifacts from local builds, which we
# won't do once we have Bazel running in CI builds, and it prevents uploading
# artifacts to the remote cache due to actions Bazel takes (see
# https://github.com/bazelbuild/bazel/issues/17162). So we don't need it, and
# it gets in the way, so we've decided not to use it after all. In 6.x, we could
# just comment it out, but it's going to become the default in a later version
# so we use the inverse version to protect us against that future change.
#build --experimental_guard_against_concurrent_changes
#query --experimental_guard_against_concurrent_changes
build --noexperimental_guard_against_concurrent_changes
query --noexperimental_guard_against_concurrent_changes
# Aspect-Recommended bazel flags for all projects
# Docs for these flags: https://bazel.build/reference/command-line-reference
# Accompanies this blog post: https://blog.aspect.dev/bazelrc-flags
###
# Performance fixes
###
# Consider --experimental_remote_merkle_tree_cache_size as well
build --experimental_remote_merkle_tree_cache
query --experimental_remote_merkle_tree_cache
# Improve remote cache hit rate
build --nostamp
# Minimize remote cache downloads
build --remote_download_toplevel
# Allow Bazel to cache hashes of more files, to avoid re-scanning files
build --cache_computed_file_digests=500000
# Collect system-wide network metrics in JSON profiles and BEP
# (build_metrics.network_metrics)
build --experimental_collect_system_network_usage
# Don't pull ebuild sources (e.g. chromium) and stage1 SDK tarball when querying
cquery --//bazel/portage:omit_ebuild_src --//bazel/portage/sdk:omit_stage1_tarball
###
# Correctness guarantees
###
# We're not yet ready to enable the lockfile.
common --lockfile_mode=off
# See github.com/bazelbuild/rules_python/issues/1059
# Without this, packages installed to $HOME/.local/lib/python3.10/site-packages
# can be imported from bazel's python.
build --action_env=PYTHONNOUSERSITE=1
build --action_env=RUST_BACKTRACE=1
# Allows actions to detect that they're running as a bazel action rather than as
# a binary directly (eg. bazel run / test).
build --action_env=IS_BAZEL_ACTION=1
common --check_direct_dependencies=error
# These are symlinked elsewhere.
build --deleted_packages=bazel/workspace_root
query --deleted_packages=bazel/workspace_root
### Toolchain resolution.
build --host_platform=//bazel/platforms:host
build --extra_execution_platforms=//bazel/platforms:rbe_2_core_platform,//bazel/platforms:rbe_4_core_platform,//bazel/platforms:rbe_8_core_platform,//bazel/platforms:rbe_16_core_platform,//bazel/platforms:rbe_32_core_platform
# Use platforms instead of crostool_top to resolve C++ toolchains.
build --incompatible_enable_cc_toolchain_resolution
###
# Convenience
###
build --remote_local_fallback
build --heap_dump_on_oom
# Run linters at build time.
build:lint --config=clippy
build:clippy --aspects=@rules_rust//rust:defs.bzl%rust_clippy_aspect --output_groups=+clippy_checks
# Add a config to run formatter validation at build time.
# It’s recommended to only enable this config in CI so formatting issues do not
# impact user’s ability to rapidly iterate on changes.
# Because aspects can't modify source files, we may want to investigate having
# them output some kind of diff, so we can then just apply the diff after.
# It's also recommended to run this config in combination with --keep_going,
# otherwise it can only give you formatting errors for a single file.
build:format --config=rustfmt
# Bzlmod doesn't yet have a way of defining a rustfmt toolchain.
# Once it does, swap out this line for the one below.
build:rustfmt --
# build:rustfmt --aspects=@rules_rust//rust:defs.bzl%rustfmt_aspect --output_groups=+rustfmt_checks
# When building rust, also add rustc output formatted as json to the bazel
# outputs, so that it can be picked up by rust-analyzer.
# This isn't needed by CQ - only by local builds, but the cost is negligible.
build --@rules_rust//:rustc_output_diagnostics --output_groups=+rustc_output,+rustc_rmeta_output
# This will be removed when it becomes the default.
build:hermetic_toolchains --config=hermetic_cc --config=hermetic_rust
build:hermetic_cc --//bazel/module_extensions/toolchains/cc:hermetic
build:hermetic_rust --//bazel/module_extensions/toolchains/rust:hermetic
build:nohermetic_toolchains --config=nohermetic_cc --config=nohermetic_rust
build:nohermetic_cc --no//bazel/module_extensions/toolchains/cc:hermetic
build:nohermetic_rust --no//bazel/module_extensions/toolchains/rust:hermetic
build --config=nohermetic_toolchains
# Enable printing artifact hashes
build:hash_tracer --aspects //bazel/portage/build_defs:hash_tracer.bzl%hash_tracer,//bazel/portage/build_defs:hash_tracer.bzl%hash_tracer_validator
# Collect all logs produced by all transitive dependencies of the targets
# specified in the command line. This ensures that Bazel downloads log files
# from the remote cache even if their corresponding actions are fully cached.
build:collect_logs --aspects //bazel/portage/build_defs:collect_logs.bzl%collect_logs_aspect
build:collect_logs --output_groups=+transitive_logs
# Collect all ebuild metadata produced by all transitive dependencies of the
# targets specified in the command line. This ensures that Bazel downloads the
# metadata files from the remote cache even if their corresponding actions are
# fully cached.
build:collect_ebuild_metadata --aspects //bazel/portage/build_defs:collect_ebuild_metadata.bzl%collect_ebuild_metadata_aspect
build:collect_ebuild_metadata --output_groups=+ebuild_metadata
# Enable build event upload to a backend.
#
# Use --config=bes to opt-in results upload.
build:bes --bes_results_url=http://sponge2/
build:bes --bes_backend=buildeventservice-pa.googleapis.com
# Upload every file referenced by the BEP message, on top of crucial ones
# like test logs. This is necessary to upload the package-local ebuild logs.
build:bes --remote_build_event_upload=all
# Enable BEP uploads to complete asynchronously.
build:bes --bes_upload_mode=fully_async
# Set a label for this invocation so it's easy to filter on the backend.
build:bes --bes_keywords=cros-rbe-nonrelease
# Publish `important_outputs` field in BEP for the artifacts tab to work with
# sponge2. This will be disabled in an upcoming Bazel release by default. All
# consumers should be reading NamedSetOfFiles instead. b/212691656
build:bes --legacy_important_outputs=true
# Unconditionally import configurations for Googlers.
# TODO(b/312234436): Enable conditional configs based on the user+build environment.
import %workspace%/bazel/bazelrcs/googlers.bazelrc
# Use prebuilts if the user has executed update_prebuilts.
build --flag_alias=prebuilt_disk_cache=//bazel/portage:prebuilt_disk_cache
build:update_prebuilts --aspects=//bazel/portage/build_defs:update_prebuilts.bzl%update_prebuilts --output_groups=+prebuilt_materialized
try-import %workspace%/prebuilts.bazelrc
common --experimental_downloader_config=bazel/content_mirror/config/developer.cfg
common:strict_mirror --experimental_downloader_config=bazel/content_mirror/config/strict.cfg
common --@rules_cc//cc/toolchains:experimental_enable_rule_based_toolchains
# Allow user-specific overrides for this repository.
# Should be at the end of this file so that users can override anything above.
try-import %workspace%/workspace.bazelrc