.bazelrc: enable path mapping
Enable Bazel path mapping, which removes the configuration from paths
when actions run in a sandbox. This improves cache hit rate.
See https://github.com/bazelbuild/bazel/discussions/22658
Path mapping allows sharing of build actions which are identical except
for the build configuration in the path. Thus, it addresses the symptom
rather than the cause; it would be better to ensure that identical
actions use the same configuration path. Path mapping is not supported
for all actions, and even if it is, results still need to be copied from
the cache. Despite these limitations, I still think it's worth enabling
it, because it has no apparent performance cost, and we won't reach the
ideal of always having identical configuration paths for identical
actions.
Path mapping is always active, but only reduces the number of actions if
a cache is enabled. It shows up as increased disk cache hit and
deduplicated numbers.
Build actions need to opt in to use this feature, and then need to
follow some rules. For Go, compile actions without cgo are supported.
Change-Id: I142f851125231e916b67a78b0a90f98c16867401
Reviewed-on: https://review.monogon.dev/c/monogon/+/4204
Tested-by: Jenkins CI
Reviewed-by: Tim Windelschmidt <tim@monogon.tech>
diff --git a/.bazelrc b/.bazelrc
index 392bf8e..a62c64d 100644
--- a/.bazelrc
+++ b/.bazelrc
@@ -50,6 +50,11 @@
build --action_env=MONOGON_SANDBOX_DIGEST
import %workspace%/.bazelrc.sandbox
+# Enable path mapping to improve cache hit rate.
+# Actions in custom rules can opt in with supports-path-mapping.
+# See https://github.com/bazelbuild/bazel/discussions/22658
+build --experimental_output_paths=strip
+
# Stop propagation of settings to exec config by default.
# See https://github.com/bazelbuild/bazel/issues/22457
build --experimental_exclude_starlark_flags_from_exec_config