build(bazel): add first-party Rust wrappers

This commit is contained in:
2026-09-05 20:53:24 -04:00
parent 7b5de2b702
commit 247295dfe3
4 changed files with 102 additions and 10 deletions

View File

@@ -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
View File

@@ -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": {

View File

@@ -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")

View File

@@ -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"],
)