Files
netris-nestri/Cargo.toml
Wanjohi bf2c9632f5 fix(build): nescapture's release profile was being ignored
`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>
2026-09-01 16:33:00 +03:00

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"