blob: de1ac4a0ed2c713a47e451acf9743c26eec9cfbe [file] [log] [blame] [view]
Rust dependency management
==========================
You will need cargo-raze installed on your host operating system, as currently building cargo-raze with Bazel [seems to be broken](https://github.com/google/cargo-raze/issues/423) (and pulls in _a lot_ of transitive dependencies).
$ cargo install cargo-raze
Dependencies are defined in Cargo.toml. Raze is used to lock these into concrete versions (in `//third_party/rust/cargo/Cargo.raze.lock`) and to generate BUILDfiles (in `//third_party/rust/cargo/remote/...` and `//third_party/rust/BUILD.bazel`).
In contrast to Gazelle/go dependencies, the BUILD files for external packages are actually committed into the repository instead of being generated on demand during analysis phase. This makes Raze a bit more noisy in Git history, but vastly speeds up analysis phase, and doesn't rely on an early, pre-analysis Go toolchain that Gazelle relies on.
To relock dependencies and regenerate BUILDfiles:
$ cd third_party/rust/
$ cargo raze
For more information on the process, consult the official [cargo-raze documentation](https://github.com/google/cargo-raze).