From 247295dfe396f7627b3357e6b92eceb964e7edf2 Mon Sep 17 00:00:00 2001 From: alexion Date: Sat, 5 Sep 2026 20:53:24 -0400 Subject: [PATCH] build(bazel): add first-party Rust wrappers --- AGENTS.md | 2 ++ MODULE.bazel.lock | 40 ++++++++++++++++++++++++++++++++++++++-- bazel/rust.bzl | 46 ++++++++++++++++++++++++++++++++++++++++++++++ src/ariadne/BUILD | 24 ++++++++++++++++-------- 4 files changed, 102 insertions(+), 10 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 7204a85..60adf3a 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -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. diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 03e5cdc..8464920 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -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": { diff --git a/bazel/rust.bzl b/bazel/rust.bzl index dd3afd4..f891174 100644 --- a/bazel/rust.bzl +++ b/bazel/rust.bzl @@ -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") diff --git a/src/ariadne/BUILD b/src/ariadne/BUILD index 8c9b835..ebb8aee 100644 --- a/src/ariadne/BUILD +++ b/src/ariadne/BUILD @@ -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"], )