From c34b5aab31565503220574040c35c4a52228fdd2 Mon Sep 17 00:00:00 2001 From: UebelAndre Date: Fri, 18 Mar 2022 07:42:52 -0700 Subject: [PATCH 1/2] Updated crate_universe setup guide --- crate_universe/3rdparty/BUILD.bazel | 5 +++- crate_universe/BUILD.bazel | 1 + crate_universe/README.md | 4 ++-- crate_universe/crates.bzl | 4 +++- crate_universe/defs.bzl | 23 ++++++++++++++++++- crate_universe/tools/BUILD.bazel | 8 +++++++ .../tools/cross_installer/BUILD.bazel | 6 +++++ docs/BUILD.bazel | 1 + 8 files changed, 47 insertions(+), 5 deletions(-) diff --git a/crate_universe/3rdparty/BUILD.bazel b/crate_universe/3rdparty/BUILD.bazel index 1f0b8eea52..d6d92ceb05 100644 --- a/crate_universe/3rdparty/BUILD.bazel +++ b/crate_universe/3rdparty/BUILD.bazel @@ -16,5 +16,8 @@ filegroup( filegroup( name = "bzl_srcs", - srcs = glob(["*.bzl"]), + srcs = glob(["*.bzl"]) + [ + "//crate_universe/3rdparty/crates:crates.bzl", + "//crate_universe/3rdparty/crates:defs.bzl", + ], ) diff --git a/crate_universe/BUILD.bazel b/crate_universe/BUILD.bazel index 6ef161c1ef..c20f7ee602 100644 --- a/crate_universe/BUILD.bazel +++ b/crate_universe/BUILD.bazel @@ -34,6 +34,7 @@ filegroup( srcs = glob(["*.bzl"]) + [ "//crate_universe/3rdparty:bzl_srcs", "//crate_universe/private:bzl_srcs", + "//crate_universe/tools:bzl_srcs", ], visibility = ["//visibility:public"], ) diff --git a/crate_universe/README.md b/crate_universe/README.md index 2654173104..300ff4b36c 100644 --- a/crate_universe/README.md +++ b/crate_universe/README.md @@ -1,6 +1,6 @@ -# Cargo->Bazel +# Crate Universe -`cargo->bazel` is a tool used which uses [Cargo][cargo] to generate build targets for [Bazel][bazel]. +`crate_universe` is a collection of tools which use [Cargo][cargo] to generate build targets for [Bazel][bazel]. ## [Documentation][docs] diff --git a/crate_universe/crates.bzl b/crate_universe/crates.bzl index 40dc41334d..752b8d1b14 100644 --- a/crate_universe/crates.bzl +++ b/crate_universe/crates.bzl @@ -1,10 +1,12 @@ """A module defining dependencies of the `cargo-bazel` Rust target""" load("@rules_rust//rust:defs.bzl", "rust_common") -load("//crate_universe:defs.bzl", "crate", "crates_repository", "crates_vendor") load("//crate_universe:deps_bootstrap.bzl", "cargo_bazel_bootstrap") load("//crate_universe/3rdparty:third_party_deps.bzl", "third_party_deps") load("//crate_universe/3rdparty/crates:crates.bzl", _vendor_crate_repositories = "crate_repositories") +load("//crate_universe/private:crate.bzl", "crate") +load("//crate_universe/private:crates_repository.bzl", "crates_repository") +load("//crate_universe/private:crates_vendor.bzl", "crates_vendor") load("//crate_universe/private:vendor_utils.bzl", "crates_vendor_deps") load("//crate_universe/tools/cross_installer:cross_installer_deps.bzl", "cross_installer_deps") diff --git a/crate_universe/defs.bzl b/crate_universe/defs.bzl index 13060e8c77..285895cb54 100644 --- a/crate_universe/defs.bzl +++ b/crate_universe/defs.bzl @@ -6,13 +6,28 @@ Crate Universe is a set of Bazel rule for generating Rust targets using Cargo. `crate_universe` is experimental, and may have breaking API changes at any time. These instructions may also change without notice. +## Setup + +After loading `rules_rust` in your workspace, set the following to begin using `crate_universe`: + +```python +load("@rules_rust//crate_universe:crates.bzl", "crate_deps_repository") + +crate_deps_repository() +``` + +Note that if the current version of `rules_rust` is not a release artifact, you may need to set additional +flags such as [`bootstrap = True`](#crate_deps_repository-bootstrap) on the `crate_deps_repository` +call above or [crates_repository::generator_urls](#crates_repository-generator_urls) in uses of `crates_repository`. + ## Rules +- [crate_deps_repository](#crate_deps_repository) - [crates_repository](#crates_repository) - [crates_vendor](#crates_vendor) +- [crate.annotation](#crateannotation) - [crate.spec](#cratespec) - [crate.workspace_member](#crateworkspace_member) -- [crate.annotation](#crateannotation) - [render_config](#render_config) - [splicing_config](#splicing_config) @@ -142,8 +157,13 @@ rust_test( [cc]: https://docs.bazel.build/versions/main/be/c-cpp.html [proto]: https://rules-proto-grpc.com/en/latest/lang/rust.html [ra]: https://rust-analyzer.github.io/ + """ +load( + "//crate_universe:crates.bzl", + _crate_deps_repository = "crate_deps_repository", +) load( "//crate_universe/private:crate.bzl", _crate = "crate", @@ -166,6 +186,7 @@ load( ) crate = _crate +crate_deps_repository = _crate_deps_repository crates_repository = _crates_repository crates_vendor = _crates_vendor render_config = _render_config diff --git a/crate_universe/tools/BUILD.bazel b/crate_universe/tools/BUILD.bazel index d465c4d505..6c6d0b7736 100644 --- a/crate_universe/tools/BUILD.bazel +++ b/crate_universe/tools/BUILD.bazel @@ -6,3 +6,11 @@ filegroup( ], visibility = ["//crate_universe:__subpackages__"], ) + +filegroup( + name = "bzl_srcs", + srcs = [ + "//crate_universe/tools/cross_installer:bzl_srcs", + ], + visibility = ["//crate_universe:__subpackages__"], +) diff --git a/crate_universe/tools/cross_installer/BUILD.bazel b/crate_universe/tools/cross_installer/BUILD.bazel index 46aa087823..ecf6616d2e 100644 --- a/crate_universe/tools/cross_installer/BUILD.bazel +++ b/crate_universe/tools/cross_installer/BUILD.bazel @@ -35,3 +35,9 @@ filegroup( ], visibility = ["//crate_universe/tools:__pkg__"], ) + +filegroup( + name = "bzl_srcs", + srcs = glob(["**/*.bzl"]), + visibility = ["//crate_universe/tools:__pkg__"], +) diff --git a/docs/BUILD.bazel b/docs/BUILD.bazel index 6c7e39cb13..ca77136286 100644 --- a/docs/BUILD.bazel +++ b/docs/BUILD.bazel @@ -13,6 +13,7 @@ bzl_library( ], deps = [ "@bazel_skylib//lib:paths", + "@bazel_skylib//lib:selects", "@bazel_skylib//rules:common_settings", "@rules_proto//proto:defs", "@rules_proto//proto:repositories", From d5c6424c49bcf29bb0c1e2139fd01b3c37279ecf Mon Sep 17 00:00:00 2001 From: UebelAndre Date: Fri, 18 Mar 2022 08:04:19 -0700 Subject: [PATCH 2/2] Regenerate documentation --- docs/crate_universe.md | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/docs/crate_universe.md b/docs/crate_universe.md index 4dfcd5df8d..6579ef1f03 100644 --- a/docs/crate_universe.md +++ b/docs/crate_universe.md @@ -8,13 +8,28 @@ Crate Universe is a set of Bazel rule for generating Rust targets using Cargo. `crate_universe` is experimental, and may have breaking API changes at any time. These instructions may also change without notice. +## Setup + +After loading `rules_rust` in your workspace, set the following to begin using `crate_universe`: + +```python +load("@rules_rust//crate_universe:crates.bzl", "crate_deps_repository") + +crate_deps_repository() +``` + +Note that if the current version of `rules_rust` is not a release artifact, you may need to set additional +flags such as [`bootstrap = True`](#crate_deps_repository-bootstrap) on the `crate_deps_repository` +call above or [crates_repository::generator_urls](#crates_repository-generator_urls) in uses of `crates_repository`. + ## Rules +- [crate_deps_repository](#crate_deps_repository) - [crates_repository](#crates_repository) - [crates_vendor](#crates_vendor) +- [crate.annotation](#crateannotation) - [crate.spec](#cratespec) - [crate.workspace_member](#crateworkspace_member) -- [crate.annotation](#crateannotation) - [render_config](#render_config) - [splicing_config](#splicing_config) @@ -146,6 +161,7 @@ rust_test( [ra]: https://rust-analyzer.github.io/ + ## crates_repository @@ -336,6 +352,25 @@ Define information for extra workspace members string: A json encoded string of all inputs + + +## crate_deps_repository + +
+crate_deps_repository(rust_version, bootstrap)
+
+ +Define dependencies of the `cargo-bazel` Rust target + +**PARAMETERS** + + +| Name | Description | Default Value | +| :------------- | :------------- | :------------- | +| rust_version | The version of rust to use when generating dependencies. | "1.59.0" | +| bootstrap | If true, a cargo_bootstrap_repository target will be generated. | False | + + ## render_config