build(bazel): add first-party Rust wrappers
This commit is contained in:
@@ -99,6 +99,8 @@
|
||||
- When creating a pull request from a worktree-specific development branch, create a dedicated pull-request branch
|
||||
separate from the branch that names or anchors the worktree.
|
||||
Do not open pull requests directly from the worktree branch.
|
||||
- First-party Rust `BUILD` files should load the monorepo Rust wrappers from `//bazel:rust.bzl`
|
||||
instead of loading Rust build rules from `@rules_rust` directly.
|
||||
- In Bazel `BUILD` files, depend on vendored Rust crates through the public aliases under
|
||||
`//third_party/crates`, for example `//third_party/crates:serde`.
|
||||
- Ariadne extraction must preserve the game-root season prefix for archived source.
|
||||
|
||||
40
MODULE.bazel.lock
generated
40
MODULE.bazel.lock
generated
@@ -93,7 +93,7 @@
|
||||
"moduleExtensions": {
|
||||
"//bazel:rust.bzl%rust": {
|
||||
"general": {
|
||||
"bzlTransitiveDigest": "4kUzQyjRjzchWIBZJKkNs8LuO4F+g/DwuwtTa0RTPcU=",
|
||||
"bzlTransitiveDigest": "TLLdfRWRMJF1vhBgv8dwQ3JyMdQ0kBjLdPu6lvlFalw=",
|
||||
"usagesDigest": "jJoM2Hp1NbshT//puE4xIUfXdA0K6BRx1WTlsZIKFm4=",
|
||||
"recordedFileInputs": {},
|
||||
"recordedDirentsInputs": {},
|
||||
@@ -105,7 +105,43 @@
|
||||
"attributes": {}
|
||||
}
|
||||
},
|
||||
"recordedRepoMappingEntries": []
|
||||
"recordedRepoMappingEntries": [
|
||||
[
|
||||
"",
|
||||
"rules_rust",
|
||||
"rules_rust~"
|
||||
],
|
||||
[
|
||||
"rules_cc~",
|
||||
"bazel_tools",
|
||||
"bazel_tools"
|
||||
],
|
||||
[
|
||||
"rules_cc~",
|
||||
"rules_cc",
|
||||
"rules_cc~"
|
||||
],
|
||||
[
|
||||
"rules_rust~",
|
||||
"bazel_skylib",
|
||||
"bazel_skylib~"
|
||||
],
|
||||
[
|
||||
"rules_rust~",
|
||||
"bazel_tools",
|
||||
"bazel_tools"
|
||||
],
|
||||
[
|
||||
"rules_rust~",
|
||||
"rules_cc",
|
||||
"rules_cc~"
|
||||
],
|
||||
[
|
||||
"rules_rust~",
|
||||
"rules_rust",
|
||||
"rules_rust~"
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
"@@rules_jvm_external~//:extensions.bzl%maven": {
|
||||
|
||||
@@ -1,6 +1,52 @@
|
||||
load(
|
||||
"@rules_rust//rust:defs.bzl",
|
||||
_rules_rust_binary = "rust_binary",
|
||||
_rules_rust_library = "rust_library",
|
||||
_rules_rust_test = "rust_test",
|
||||
)
|
||||
load("//bazel:utils.bzl", "execute", "require_env")
|
||||
|
||||
|
||||
def rust_module(name, src, deps = [], **kwargs):
|
||||
native.filegroup(
|
||||
name = name,
|
||||
srcs = [src] + deps,
|
||||
**kwargs
|
||||
)
|
||||
|
||||
|
||||
def rust_library(name, src, crate_name = None, modules = [], deps = [], **kwargs):
|
||||
_rules_rust_library(
|
||||
name = name,
|
||||
crate_name = crate_name,
|
||||
crate_root = src,
|
||||
srcs = [src] + modules,
|
||||
deps = deps,
|
||||
**kwargs
|
||||
)
|
||||
|
||||
|
||||
def rust_binary(name, src, crate_name = None, deps = [], **kwargs):
|
||||
_rules_rust_binary(
|
||||
name = name,
|
||||
crate_name = crate_name,
|
||||
crate_root = src,
|
||||
srcs = [src],
|
||||
deps = deps,
|
||||
**kwargs
|
||||
)
|
||||
|
||||
|
||||
def rust_test(name, src, deps = [], **kwargs):
|
||||
_rules_rust_test(
|
||||
name = name,
|
||||
crate_root = src,
|
||||
srcs = [src],
|
||||
deps = deps,
|
||||
**kwargs
|
||||
)
|
||||
|
||||
|
||||
def _rust_repository_impl(repository_ctx):
|
||||
root = repository_ctx.path(require_env(repository_ctx, "RUST_TOOLCHAIN_ROOT"))
|
||||
rustc = root.get_child("bin/rustc")
|
||||
|
||||
@@ -1,13 +1,21 @@
|
||||
load("@rules_rust//rust:defs.bzl", "rust_binary", "rust_library", "rust_test")
|
||||
load("//bazel:rust.bzl", "rust_binary", "rust_library", "rust_module", "rust_test")
|
||||
|
||||
rust_module(
|
||||
name = "graph",
|
||||
src = "src/graph.rs",
|
||||
)
|
||||
|
||||
rust_module(
|
||||
name = "artifact",
|
||||
src = "src/artifact.rs",
|
||||
deps = [":graph"],
|
||||
)
|
||||
|
||||
rust_library(
|
||||
name = "ariadne_lib",
|
||||
crate_name = "ariadne",
|
||||
srcs = [
|
||||
"src/artifact.rs",
|
||||
"src/graph.rs",
|
||||
"src/lib.rs",
|
||||
],
|
||||
src = "src/lib.rs",
|
||||
modules = [":artifact"],
|
||||
deps = [
|
||||
"//third_party/crates:serde",
|
||||
"//third_party/crates:serde_json",
|
||||
@@ -16,7 +24,7 @@ rust_library(
|
||||
|
||||
rust_test(
|
||||
name = "ariadne_lib_test",
|
||||
srcs = ["src/lib_test.rs"],
|
||||
src = "src/lib_test.rs",
|
||||
deps = [
|
||||
":ariadne_lib",
|
||||
"//third_party/crates:serde_json",
|
||||
@@ -26,7 +34,7 @@ rust_test(
|
||||
rust_binary(
|
||||
name = "ariadne",
|
||||
crate_name = "ariadne_cli",
|
||||
srcs = ["src/main.rs"],
|
||||
src = "src/main.rs",
|
||||
deps = [":ariadne_lib"],
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user