mirror of
https://github.com/nestriness/nestri.git
synced 2026-09-19 17:25:19 +03:00
`apps/nescapture/Cargo.toml` carried `[profile.release]` with `opt-level = 3` and `lto = "thin"`. Cargo only reads `[profile.*]` from the workspace root and warns about a member that writes one, so `cargo build --release --workspace` — which is what build/Dockerfile runs — ignored it. The Vulkan capture layer that ends up in the guest image was built at the default release profile, and the warning saying so scrolled past on every build. `opt-level = 3` is already the release default, so `lto = "thin"` is the only part that was actually lost. It moves to the workspace root, where Cargo reads it, and now applies to all five members — the same rule as `[workspace.dependencies]` right above it: what must not differ between members is stated once. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
53 lines
1.8 KiB
TOML
53 lines
1.8 KiB
TOML
# The Rust half of this monorepo. The JS/TS half is `package.json`.
|
|
#
|
|
# Layout, per the same rule on both sides: split by *what a thing is*, not by
|
|
# what language it is written in.
|
|
#
|
|
# apps/ deployables — a binary someone runs
|
|
# crates/ shared Rust — a library another crate depends on
|
|
# packages/ shared JS/TS
|
|
#
|
|
# Members are added as components move in. An empty list is honest: nothing has
|
|
# landed yet.
|
|
|
|
[workspace]
|
|
resolver = "3"
|
|
members = [
|
|
"apps/nescapture",
|
|
"apps/nescope",
|
|
"apps/neshub",
|
|
"apps/neswire",
|
|
"crates/nesprotocol",
|
|
]
|
|
|
|
# One pin per dependency, here. A member never writes a version — that is what
|
|
# stops two crates in one tree from disagreeing about tokio.
|
|
[workspace.dependencies]
|
|
anyhow = "1"
|
|
clap = { version = "4", features = ["derive", "env"] }
|
|
libc = "0.2"
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
thiserror = "2"
|
|
tokio = { version = "1", features = ["full"] }
|
|
tracing = "0.1"
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
|
|
|
# Cargo only reads `[profile.*]` from the workspace root, and warns about a
|
|
# member that writes one. `apps/nescapture` had exactly this block and was
|
|
# getting none of it: `cargo build --release --workspace` — which is what
|
|
# build/Dockerfile runs — silently ignored it, so the Vulkan capture layer
|
|
# shipped at the default release profile.
|
|
#
|
|
# `opt-level = 3` is already the release default; `lto = "thin"` is the part
|
|
# that was actually being lost. It applies to the whole workspace now, which is
|
|
# the same rule as `[workspace.dependencies]` above: settings that must not
|
|
# differ between members live in one place.
|
|
[profile.release]
|
|
lto = "thin"
|
|
|
|
[workspace.package]
|
|
edition = "2024"
|
|
license = "Apache-2.0"
|
|
repository = "https://github.com/nestrilabs/nestri"
|