bazel Cheatsheet

Last Updated: 2023-08-27

Android is moving to Bazel.

Config written in Starlark, a dialect of Python https://github.com/bazelbuild/starlark/

What's new

External Dependencies


It will be more like other dependency management systems (maven, npm, cargo, etc)

  • Bazel Modules
  • Bazel Central Repository (BCR)

Trouble Shooting

Error: ... undeclared inclusion(s) in rule ...

This can happen after installing or upgrading developer tools (xcode). Try

$ bazel clean --expunge


To pull Maven artifacts, use rules_jvm_external

Native rules

Native rules: rules that don't need a load() statement, e.g. cc_library or java_library

Define config

in ~/.bazelrc:

# Definition of --config=memcheck
build:memcheck --strip=never --test_timeout=3600

Used by:

$ bazel build --config=memcheck


bazel error

ERROR: Source forest creation failed


$ sudo rm -rf ~/.cache/bazel

Query Dependencies

If //path/to/foo does not directly depend on //bar:baz, use bazel query to find independent dependencies:

$ bazel query "allpaths(//path/to/foo, //bar:baz)" --notool_deps --output graph | dot -Tpng > deps.png