Skip to content

Commit

Permalink
Restrucutred crate_universe dependency macros (#1208)
Browse files Browse the repository at this point in the history
* Restrucutred `crate_universe` dependency macros

* Regenerate documentation

* Fixed load issue in crate_universe dependencies
  • Loading branch information
UebelAndre authored Mar 21, 2022
1 parent e3d67a0 commit 628e85e
Show file tree
Hide file tree
Showing 10 changed files with 101 additions and 92 deletions.
4 changes: 2 additions & 2 deletions WORKSPACE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ rules_rust_dependencies()

rust_register_toolchains(include_rustc_srcs = True)

load("@rules_rust//crate_universe:crates.bzl", "crate_deps_repository")
load("@rules_rust//crate_universe:repositories.bzl", "crate_universe_dependencies")

crate_deps_repository(bootstrap = True)
crate_universe_dependencies(bootstrap = True)

load("@rules_rust//proto:repositories.bzl", "rust_proto_repositories")

Expand Down
2 changes: 1 addition & 1 deletion crate_universe/3rdparty/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
load("//crate_universe:crates.bzl", "crate_deps_target")
load("//crate_universe:repositories.bzl", "crate_deps_target")

package(default_visibility = ["//visibility:public"])

Expand Down
74 changes: 6 additions & 68 deletions crate_universe/crates.bzl
Original file line number Diff line number Diff line change
@@ -1,70 +1,8 @@
"""A module defining dependencies of the `cargo-bazel` Rust target"""
"""**DEPRECATED** - Instead, use `@rules_rust//crate_universe:repositories.bzl"""

load("@rules_rust//rust:defs.bzl", "rust_common")
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")
load(":repositories.bzl", "crate_universe_dependencies")

USE_CRATES_REPOSITORY = False

_REPOSITORY_NAME = "crate_index"

_ANNOTATIONS = {
"libgit2-sys": [crate.annotation(
gen_build_script = False,
deps = ["@libgit2"],
)],
"libz-sys": [crate.annotation(
gen_build_script = False,
deps = ["@zlib"],
)],
}

_MANIFESTS = [
"@rules_rust//crate_universe:Cargo.toml",
"@rules_rust//crate_universe/tools/cross_installer:Cargo.toml",
"@rules_rust//crate_universe/tools/urls_generator:Cargo.toml",
]

def crate_deps_repository(rust_version = rust_common.default_version, bootstrap = False):
"""Define dependencies of the `cargo-bazel` Rust target
Args:
rust_version (str, optional): The version of rust to use when generating dependencies.
bootstrap (bool, optional): If true, a `cargo_bootstrap_repository` target will be generated.
"""
third_party_deps()

cargo_bazel_bootstrap(rust_version = rust_version)

if USE_CRATES_REPOSITORY:
crates_repository(
name = _REPOSITORY_NAME,
annotations = _ANNOTATIONS,
generator = "@cargo_bazel_bootstrap//:cargo-bazel" if bootstrap else None,
lockfile = "@rules_rust//crate_universe:Cargo.Bazel.lock",
manifests = _MANIFESTS,
rust_version = rust_version,
)

else:
_vendor_crate_repositories()

crates_vendor_deps()
cross_installer_deps()

def crate_deps_target(name = "crates_vendor", vendor_path = "crates"):
crates_vendor(
name = name,
repository_name = _REPOSITORY_NAME,
annotations = _ANNOTATIONS,
manifests = _MANIFESTS,
vendor_path = vendor_path,
mode = "remote",
tags = ["manual"],
)
def crate_deps_repository(**kwargs):
# buildifier: disable=print
print("`crate_deps_repository` is deprecated. See setup instructions for how to update: https://bazelbuild.github.io/rules_rust/crate_universe.html#setup")
crate_universe_dependencies(**kwargs)
2 changes: 1 addition & 1 deletion crate_universe/crates_deps.bzl
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"""Transitive dependencies of the `cargo-bazel` Rust target"""

load("@crate_index//:defs.bzl", _repository_crate_repositories = "crate_repositories")
load("//crate_universe:crates.bzl", "USE_CRATES_REPOSITORY")
load("//crate_universe:repositories.bzl", "USE_CRATES_REPOSITORY")

def crate_repositories():
if USE_CRATES_REPOSITORY:
Expand Down
14 changes: 7 additions & 7 deletions crate_universe/defs.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,18 @@ Crate Universe is a set of Bazel rule for generating Rust targets using Cargo.
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")
load("@rules_rust//crate_universe:repositories.bzl", "crate_universe_dependencies")
crate_deps_repository()
crate_universe_dependencies()
```
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`
flags such as [`bootstrap = True`](#crate_universe_dependencies-bootstrap) on the `crate_universe_dependencies`
call above or [crates_repository::generator_urls](#crates_repository-generator_urls) in uses of `crates_repository`.
## Rules
- [crate_deps_repository](#crate_deps_repository)
- [crate_universe_dependencies](#crate_universe_dependencies)
- [crates_repository](#crates_repository)
- [crates_vendor](#crates_vendor)
- [crate.annotation](#crateannotation)
Expand Down Expand Up @@ -161,8 +161,8 @@ rust_test(
"""

load(
"//crate_universe:crates.bzl",
_crate_deps_repository = "crate_deps_repository",
"//crate_universe:repositories.bzl",
_crate_universe_dependencies = "crate_universe_dependencies",
)
load(
"//crate_universe/private:crate.bzl",
Expand All @@ -186,7 +186,7 @@ load(
)

crate = _crate
crate_deps_repository = _crate_deps_repository
crate_universe_dependencies = _crate_universe_dependencies
crates_repository = _crates_repository
crates_vendor = _crates_vendor
render_config = _render_config
Expand Down
70 changes: 70 additions & 0 deletions crate_universe/repositories.bzl
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
"""A module defining dependencies of the `cargo-bazel` Rust target"""

load("@rules_rust//rust:defs.bzl", "rust_common")
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")

USE_CRATES_REPOSITORY = False

_REPOSITORY_NAME = "crate_index"

_ANNOTATIONS = {
"libgit2-sys": [crate.annotation(
gen_build_script = False,
deps = ["@libgit2"],
)],
"libz-sys": [crate.annotation(
gen_build_script = False,
deps = ["@zlib"],
)],
}

_MANIFESTS = [
"@rules_rust//crate_universe:Cargo.toml",
"@rules_rust//crate_universe/tools/cross_installer:Cargo.toml",
"@rules_rust//crate_universe/tools/urls_generator:Cargo.toml",
]

def crate_universe_dependencies(rust_version = rust_common.default_version, bootstrap = False):
"""Define dependencies of the `cargo-bazel` Rust target
Args:
rust_version (str, optional): The version of rust to use when generating dependencies.
bootstrap (bool, optional): If true, a `cargo_bootstrap_repository` target will be generated.
"""
third_party_deps()

cargo_bazel_bootstrap(rust_version = rust_version)

if USE_CRATES_REPOSITORY:
crates_repository(
name = _REPOSITORY_NAME,
annotations = _ANNOTATIONS,
generator = "@cargo_bazel_bootstrap//:cargo-bazel" if bootstrap else None,
lockfile = "@rules_rust//crate_universe:Cargo.Bazel.lock",
manifests = _MANIFESTS,
rust_version = rust_version,
)

else:
_vendor_crate_repositories()

crates_vendor_deps()
cross_installer_deps()

def crate_deps_target(name = "crates_vendor", vendor_path = "crates"):
crates_vendor(
name = name,
repository_name = _REPOSITORY_NAME,
annotations = _ANNOTATIONS,
manifests = _MANIFESTS,
vendor_path = vendor_path,
mode = "remote",
tags = ["manual"],
)
1 change: 1 addition & 0 deletions crate_universe/tools/cross_installer/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ filegroup(
srcs = [
"BUILD.bazel",
"Cargo.toml",
"cross_installer_deps.bzl",
],
visibility = ["//crate_universe/tools:__pkg__"],
)
Expand Down
4 changes: 2 additions & 2 deletions docs/WORKSPACE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ rules_rust_dependencies()

rust_register_toolchains(include_rustc_srcs = True)

load("@rules_rust//crate_universe:crates.bzl", "crate_deps_repository")
load("@rules_rust//crate_universe:repositories.bzl", "crate_universe_dependencies")

crate_deps_repository()
crate_universe_dependencies()

load("@rules_rust//proto:repositories.bzl", "rust_proto_repositories")

Expand Down
18 changes: 9 additions & 9 deletions docs/crate_universe.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,18 @@ Crate Universe is a set of Bazel rule for generating Rust targets using Cargo.
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")
load("@rules_rust//crate_universe:repositories.bzl", "crate_universe_dependencies")

crate_deps_repository()
crate_universe_dependencies()
```

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`
flags such as [`bootstrap = True`](#crate_universe_dependencies-bootstrap) on the `crate_universe_dependencies`
call above or [crates_repository::generator_urls](#crates_repository-generator_urls) in uses of `crates_repository`.

## Rules

- [crate_deps_repository](#crate_deps_repository)
- [crate_universe_dependencies](#crate_universe_dependencies)
- [crates_repository](#crates_repository)
- [crates_vendor](#crates_vendor)
- [crate.annotation](#crateannotation)
Expand Down Expand Up @@ -352,12 +352,12 @@ Define information for extra workspace members
string: A json encoded string of all inputs


<a id="#crate_deps_repository"></a>
<a id="#crate_universe_dependencies"></a>

## crate_deps_repository
## crate_universe_dependencies

<pre>
crate_deps_repository(<a href="#crate_deps_repository-rust_version">rust_version</a>, <a href="#crate_deps_repository-bootstrap">bootstrap</a>)
crate_universe_dependencies(<a href="#crate_universe_dependencies-rust_version">rust_version</a>, <a href="#crate_universe_dependencies-bootstrap">bootstrap</a>)
</pre>

Define dependencies of the `cargo-bazel` Rust target
Expand All @@ -367,8 +367,8 @@ Define dependencies of the `cargo-bazel` Rust target

| Name | Description | Default Value |
| :------------- | :------------- | :------------- |
| <a id="crate_deps_repository-rust_version"></a>rust_version | The version of rust to use when generating dependencies. | <code>"1.59.0"</code> |
| <a id="crate_deps_repository-bootstrap"></a>bootstrap | If true, a <code>cargo_bootstrap_repository</code> target will be generated. | <code>False</code> |
| <a id="crate_universe_dependencies-rust_version"></a>rust_version | The version of rust to use when generating dependencies. | <code>"1.59.0"</code> |
| <a id="crate_universe_dependencies-bootstrap"></a>bootstrap | If true, a <code>cargo_bootstrap_repository</code> target will be generated. | <code>False</code> |


<a id="#render_config"></a>
Expand Down
4 changes: 2 additions & 2 deletions examples/crate_universe/WORKSPACE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ rules_rust_dependencies()

rust_register_toolchains(include_rustc_srcs = True)

load("@rules_rust//crate_universe:crates.bzl", "crate_deps_repository")
load("@rules_rust//crate_universe:repositories.bzl", "crate_universe_dependencies")

crate_deps_repository()
crate_universe_dependencies()

load("@rules_rust//crate_universe:crates_deps.bzl", "crate_repositories")

Expand Down

0 comments on commit 628e85e

Please sign in to comment.