Files
jcoffey-dev ff6a4d5f09 Take tonic to 0.14, with the prost split it requires
#31 and #36 bump tonic-build alone to 0.14 and break the build outright:
0.14 moved prost codegen out to tonic-prost-build, so
`tonic_build::configure()` no longer exists. Both repositories also pin
`tonic = "0.12"` as the runtime beside it, and codegen from 0.14 against
a 0.12 runtime would be incoherent even if it compiled.

So the whole set moves together, in agent and in search:

  tonic         0.12 -> 0.14
  tonic-build   0.12 -> tonic-prost-build 0.14   (build-dependency)
  prost         0.13 -> 0.14
  tonic-prost   new runtime dependency

Two consequences worth naming. The generated code now reaches for
`tonic_prost::ProstCodec`, so tonic-prost has to be a real dependency
rather than something the build script pulls in. And prost had to move
with it: tonic-prost 0.14 wants prost 0.14, so leaving ours at 0.13
left the generated types deriving a `Message` trait from a different
prost than the one the codec demanded.

tonic's `tls` feature is gone, replaced by one feature per crypto
provider. `tls-ring` is the like-for-like choice: it is the rustls-plus-
ring pairing `tls` used to mean, and the agent hands its own CA and
identity to ClientTlsConfig for mTLS, so it needs no root store.

The call sites did not change at all -- transport::{Certificate,
Channel, ClientTlsConfig, Identity} and include_proto! are all still
where they were.

Verified by building both, since no CI job compiles Rust: agent and
search check clean, 34 agent tests and 24 search tests pass.
2026-09-10 10:08:19 -07:00

55 lines
1.5 KiB
TOML

[package]
name = "cairnobs-agent"
version.workspace = true
edition.workspace = true
license.workspace = true
description = "Cairn OBS distro-agnostic Linux/Windows log collector"
[[bin]]
name = "cairnobs-agent"
path = "src/main.rs"
[features]
default = ["journald"]
journald = []
file-tail = []
# Windows-only sources. Feature-enabled AND target_os="windows"-gated at
# the module level (see src/source/mod.rs), so enabling these on a
# non-Windows build is a harmless no-op, not a build failure -- keeps
# `cargo test --workspace --all-features` green on Linux CI.
windows-eventlog = []
etw = []
[dependencies]
cairnobs-parser = { path = "../cairnobs-parser" }
tokio = { version = "1", features = ["rt-multi-thread", "macros", "process", "io-util", "io-std", "time", "fs", "sync", "signal"] }
tonic = { version = "0.14", features = ["tls-ring"] }
tonic-prost = "0.14"
prost = "0.14"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
toml = "1.1"
clap = { version = "4", features = ["derive"] }
anyhow = "1"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
# Windows-only: not in the dependency graph at all on other targets, so
# they don't affect Linux build times or the musl release binary.
[target.'cfg(windows)'.dependencies]
windows = { version = "0.62", features = [
"Win32_Foundation",
"Win32_System_EventLog",
"Win32_System_Threading",
"Win32_System_Diagnostics_Etw",
"Win32_Security",
] }
windows-service = "0.8"
quick-xml = "0.42"
[build-dependencies]
tonic-prost-build = "0.14"