Bazel Known Issues

Known Issues with Bazel versions

Bazel versions

Bazel 5

Bazel supports network compression of remote cache data after 5.0.0 under the --experimental_remote_cache_compression flag. Large-sized targets, more than 1GB, tend to have issues, it is not recommended to use this flag with large-sized targets. Finally, the maximum number of targets tested so far is 30000, if you need to build more targets with --experimental_remote_cache_compression please reach to the EngFlow team.

Bazel 5.2.0: Remote cache does not work

Bazel 5.2.0 has a bug that can cause remote caching to never upload action outputs; see https://github.com/bazelbuild/bazel/pull/15842.

Bazel 5.1.0: Slow check cache hit or upload missing inputs

Bazel 5.1.0 has a bug that can cause serialized digest calculations and make these sections of the build significantly slower than usual; see https://github.com/bazelbuild/bazel/commit/77a002cce050e861fcc87c89acf7768aa5c97124.

Bazel 4

Bazel versions before 4.0.0 have an issue with dynamic linking when used with remote execution on macOS. Bazel 4.0.0 has a flag --incompatible_macos_set_install_name to fix the issue. As of 2021-02-04, this flag is not enabled by default yet (see the upstream bug).

Cross-platform remote execution

Definition: when the host OS (what Bazel runs on, e.g. Windows) is not the same type of OS as the execution OS (what remote executors run on, e.g. Linux). However the target OS and target architecture (what the compiled binaries will run on, e.g. Linux/arm64) can be anything you can (cross-)compile to on the execution OS.

host OS execution OS Works on EngFlow? Notes
macOS Linux yes Seen successful 2021-02-04
Linux Linux yes
(any) (any-other) no 2020-07-13: the host OS must be the same kind as the execution OS. Example: you cannot run the remote executors on Linux and Bazel on Windows; both OSs have to be Linux.