- Add BUILD.bazel across tidal, tidal-net, tidal-server, tidalctl for bzlmod build - Add tidal/ crate docs (README, CHANGELOG, CONTRIBUTING, AGENTS, CLAUDE, API, ARCHITECTURE) and ai-lookup reference - Add docker standalone/cluster/deploy images, compose, and prometheus config - Harden WAL (batch format, writer, dedup, diagnostics), text syncer/collectors, and vector registry - Expand tidalctl CLI and tests; restructure WAL/visibility integration test suites - Refine tidal-net transport/client/server and tidal-server cluster/scatter-gather
75 lines
3.3 KiB
Python
75 lines
3.3 KiB
Python
load("@rules_rust//rust:defs.bzl", "rust_binary", "rust_library", "rust_proc_macro", "rust_test")
|
|
load("@rules_rust//cargo:defs.bzl", "cargo_build_script")
|
|
load("@crates//:defs.bzl", "aliases", "all_crate_deps")
|
|
load("//bazel:rust_cargo_tests.bzl", "rust_cargo_integration_tests")
|
|
|
|
cargo_build_script(
|
|
name = "build_script",
|
|
srcs = [
|
|
"build.rs",
|
|
],
|
|
crate_root = "build.rs",
|
|
data = [
|
|
"proto/wal_shipping.proto",
|
|
],
|
|
edition = "2024",
|
|
aliases = aliases(build = True),
|
|
deps = all_crate_deps(build = True),
|
|
proc_macro_deps = all_crate_deps(build_proc_macro = True),
|
|
visibility = ["//visibility:private"],
|
|
)
|
|
|
|
rust_library(
|
|
name = "tidal_net",
|
|
srcs = glob(["src/**/*.rs", "src/*.rs"], allow_empty = True),
|
|
crate_root = "src/lib.rs",
|
|
crate_name = "tidal_net",
|
|
edition = "2024",
|
|
compile_data = glob(["**/*"], exclude = ["**/*.rs", "**/*.bazel", "BUILD", "WORKSPACE"], allow_empty = True),
|
|
aliases = aliases(),
|
|
deps = all_crate_deps(normal = True) + [
|
|
"//tidal:tidaldb",
|
|
":build_script",
|
|
],
|
|
proc_macro_deps = all_crate_deps(proc_macro = True),
|
|
visibility = ["//visibility:public"],
|
|
)
|
|
|
|
rust_test(
|
|
name = "tidal_net_test",
|
|
crate = ":tidal_net",
|
|
compile_data = glob(["**/*"], exclude = ["**/*.rs", "**/*.bazel", "BUILD", "WORKSPACE"], allow_empty = True),
|
|
data = glob(["**/*"], exclude = ["**/*.rs", "**/*.bazel", "BUILD", "WORKSPACE"], allow_empty = True),
|
|
aliases = aliases(normal_dev = True, proc_macro_dev = True),
|
|
deps = all_crate_deps(normal = True, normal_dev = True),
|
|
proc_macro_deps = all_crate_deps(proc_macro = True, proc_macro_dev = True),
|
|
)
|
|
|
|
rust_cargo_integration_tests(
|
|
name_prefix = "tidal_net",
|
|
tests = glob(["tests/*.rs"]),
|
|
srcs = glob(["tests/**/*.rs"]),
|
|
compile_data = glob(["**/*"], exclude = ["**/*.rs", "**/*.bazel", "BUILD", "WORKSPACE"], allow_empty = True),
|
|
data = glob(["**/*"], exclude = ["**/*.rs", "**/*.bazel", "BUILD", "WORKSPACE"], allow_empty = True),
|
|
aliases = aliases(normal_dev = True, proc_macro_dev = True),
|
|
deps = all_crate_deps(normal = True, normal_dev = True) + [
|
|
"//tidal:tidaldb",
|
|
":tidal_net",
|
|
],
|
|
proc_macro_deps = all_crate_deps(proc_macro = True, proc_macro_dev = True),
|
|
# mtls.rs does a real mTLS gRPC send/receive over a socket -> requires-network (excluded from the
|
|
# default `bazel test //...`, like other network-bound integration tests).
|
|
# KNOWN DEFECT it surfaced: tidal-net enables NO rustls crypto provider in its own dep closure
|
|
# (cargo tree shows rustls gets only "log" via tonic). Under `cargo test` it works ONLY because the
|
|
# whole-workspace shared rustls inherits aws-lc-rs from another workspace crate's reqwest;
|
|
# crate_universe resolves the tidal closure narrowly, so the provider is absent and rustls panics
|
|
# ("Could not automatically determine the process-level CryptoProvider"). This is a latent fragility
|
|
# even in cargo: a standalone tidal-server build would break mTLS at runtime. PROPER FIX (out of
|
|
# this build-only review's scope — touches the production crypto path + needs a lock repin): make
|
|
# the provider explicit in tidal-net (direct `rustls = { features = ["aws_lc_rs"] }` dep OR
|
|
# CryptoProvider::install_default() at startup), then CARGO_BAZEL_REPIN.
|
|
requires_network = [
|
|
"tests/mtls.rs",
|
|
],
|
|
)
|