Clone this repo:

Branches

  1. de54de1 Add libc and nix crates by Erik Gilling · 7 weeks ago main
  2. 6d97553 Freshen crates to latest versions by Erik Gilling · 8 months ago
  3. e4dcd91 Add paste crate by Erik Gilling · 10 months ago
  4. 9178669 config.toml: Fix bazel_aliases keys by Faraaz Sareshwala · 10 months ago
  5. 8bcbb26 general: Add Pigweed license to top of files where it was missing by Faraaz Sareshwala · 11 months ago

Pigweed Rust Third Party Crates

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.

Adding and Updating the Crates

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.

Markdown Formatting

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

FAQ

collect2: fatal error: cannot find ‘ld’ error

  = 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