commit | 8d3cb6878cf1447e81cd3d7f97057e70285fc833 | [log] [tgz] |
---|---|---|
author | David Freese <dvfreese@gmail.com> | Wed Apr 22 01:57:30 2020 -0700 |
committer | GitHub <noreply@github.com> | Wed Apr 22 10:57:30 2020 +0200 |
tree | afda270a14ee8e966cfde0db2ddb6c6c191674a6 | |
parent | 1b4ea701a97203695499a5fb958df2afa30b5776 [diff] |
Update proto crates: protobuf to 2.8.2 and grpc-rust to 0.6.2 (#310) All of the files within //proto/raze/remote are automatically generated by cargo raze. This updates the protobuf crate to 2.8.2, which is as far as we are able to with the most recent version of grpc-rust, which is 0.6.2. The downstream dependencies of grpc-rust required specifying an upper bound on the log 0.4 version, which would otherwise break log 0.3 dependent crates. This should be revisited if grpc-rust is changed or reevaluated for a different default library. This also introduces a patch folder, for patches to be applied by cargo raze. The rationale for patching protobuf is explained in the README, but, in short, circumvents the build.rs file.
This repository provides rules for building Rust projects with Bazel.
To build a rust_binary
for wasm32-unknown-unknown add the --platforms=//rust/platform:wasm
flag.
bazel build @examples//hello_world_wasm --platforms=//rust/platform:wasm
rust_wasm_bindgen
will automatically transition to the wasm platform and can be used when building wasm code for the host target.
with an overview here.
To use the Rust rules, add the following to your WORKSPACE
file to add the external repositories for the Rust toolchain:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "io_bazel_rules_rust", sha256 = "b6da34e057a31b8a85e343c732de4af92a762f804fc36b0baa6c001423a70ebc", strip_prefix = "rules_rust-55f77017a7f5b08e525ebeab6e11d8896a4499d2", urls = [ # Master branch as of 2019-10-07 "https://github.com/bazelbuild/rules_rust/archive/55f77017a7f5b08e525ebeab6e11d8896a4499d2.tar.gz", ], ) http_archive( name = "bazel_skylib", sha256 = "9a737999532daca978a158f94e77e9af6a6a169709c0cee274f0a4c3359519bd", strip_prefix = "bazel-skylib-1.0.0", url = "https://github.com/bazelbuild/bazel-skylib/archive/1.0.0.tar.gz", ) load("@io_bazel_rules_rust//rust:repositories.bzl", "rust_repositories") rust_repositories() load("@io_bazel_rules_rust//:workspace.bzl", "bazel_version") bazel_version(name = "bazel_version")
The rules are under active development, as such the lastest commit on the master branch should be used. master
currently requires Bazel >= 0.26.0.
To build with a particular version of the Rust compiler, pass that version to rust_repositories
:
rust_repositories(version = "1.42.0")
As well as an exact version, version
can be set to "nightly"
or "beta"
. If set to these values, iso_date
must also be set:
rust_repositories(version = "nightly", iso_date = "2020-04-19")
Similarly, rustfmt_version
may also be configured:
rust_repositories(rustfmt_version = "1.4.8")
Currently the most common approach to managing external dependencies is using cargo-raze to generate BUILD
files for Cargo crates.
cargo_crate
workspace rule for pulling crates from Cargo.