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 - 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. separate from the branch that names or anchors the worktree.
Do not open pull requests directly from the worktree branch. 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 - In Bazel `BUILD` files, depend on vendored Rust crates through the public aliases under
`//third_party/crates`, for example `//third_party/crates:serde`. `//third_party/crates`, for example `//third_party/crates:serde`.
- Ariadne extraction must preserve the game-root season prefix for archived source. - Ariadne extraction must preserve the game-root season prefix for archived source.

40
MODULE.bazel.lock generated
View File

@@ -93,7 +93,7 @@
"moduleExtensions": { "moduleExtensions": {
"//bazel:rust.bzl%rust": { "//bazel:rust.bzl%rust": {
"general": { "general": {
"bzlTransitiveDigest": "4kUzQyjRjzchWIBZJKkNs8LuO4F+g/DwuwtTa0RTPcU=", "bzlTransitiveDigest": "TLLdfRWRMJF1vhBgv8dwQ3JyMdQ0kBjLdPu6lvlFalw=",
"usagesDigest": "jJoM2Hp1NbshT//puE4xIUfXdA0K6BRx1WTlsZIKFm4=", "usagesDigest": "jJoM2Hp1NbshT//puE4xIUfXdA0K6BRx1WTlsZIKFm4=",
"recordedFileInputs": {}, "recordedFileInputs": {},
"recordedDirentsInputs": {}, "recordedDirentsInputs": {},
@@ -105,7 +105,43 @@
"attributes": {} "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": { "@@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") 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): def _rust_repository_impl(repository_ctx):
root = repository_ctx.path(require_env(repository_ctx, "RUST_TOOLCHAIN_ROOT")) root = repository_ctx.path(require_env(repository_ctx, "RUST_TOOLCHAIN_ROOT"))
rustc = root.get_child("bin/rustc") 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( rust_library(
name = "ariadne_lib", name = "ariadne_lib",
crate_name = "ariadne", crate_name = "ariadne",
srcs = [ src = "src/lib.rs",
"src/artifact.rs", modules = [":artifact"],
"src/graph.rs",
"src/lib.rs",
],
deps = [ deps = [
"//third_party/crates:serde", "//third_party/crates:serde",
"//third_party/crates:serde_json", "//third_party/crates:serde_json",
@@ -16,7 +24,7 @@ rust_library(
rust_test( rust_test(
name = "ariadne_lib_test", name = "ariadne_lib_test",
srcs = ["src/lib_test.rs"], src = "src/lib_test.rs",
deps = [ deps = [
":ariadne_lib", ":ariadne_lib",
"//third_party/crates:serde_json", "//third_party/crates:serde_json",
@@ -26,7 +34,7 @@ rust_test(
rust_binary( rust_binary(
name = "ariadne", name = "ariadne",
crate_name = "ariadne_cli", crate_name = "ariadne_cli",
srcs = ["src/main.rs"], src = "src/main.rs",
deps = [":ariadne_lib"], deps = [":ariadne_lib"],
) )