This is a repository to vendor and provide build rules for the third party crates that Pigweed's rust code depends on. Currently only Bazel build rules are provided.
std
and no_std
This repository provides two separate sets of crates. One for std
environments and one for no_std
environments. The set that is used is determined by the //:std_enabled
constraint setting and defaults to std
. To use no_std
add @rust_crates//:no_std
to your platform definition.
The list of vendored crates is defined by the dependencies listed in //crates/Cargo.toml and //crates_std/Cargo.toml. The contents of the //crates
and //crates_std
directories are generated by the //:crates_vendor
and //:crates_vendor_std
targets.
To update the vendored crates, build files, and aliases to match run the following commands from the top level directory of the repository:
bazel run //:crates_vendor -- --repin bazel run //:crates_vendor_std -- --repin cargo run -- --config config.toml > aliases.bzl
Licenses can be checked with cargo license -d
in the appropriate stub_crate.
We keep this, and all Markdown files in this repository, in a consistent Markdown format using mdformat. To install and format, use the following commands:
pip install mdformat-gfm mdformat README.md
= note: collect2: fatal error: cannot find 'ld' compilation terminated.
If you get the above error when running bazel run //:crates_vendor -- --repin
, ensure lld
is installed on your system. For instance, on Debian based systems:
sudo apt install lld