mat, sensing-server, and train all depended on signal with default features enabled, which pulled ndarray-linalg → openblas-src → vcpkg/system-BLAS through the entire workspace. --no-default-features at the workspace root could not opt out of BLAS, breaking cargo build / cargo test on Windows without vcpkg. Set default-features = false on the signal dep in all three consumers so the flag actually propagates. Also gate signal::ruvsense::field_model::tests ::test_estimate_occupancy_noise_only with #[cfg(feature = "eigenvalue")] — the test unwraps a NotCalibrated stub when eigenvalue is compiled out. Validated: cargo test --workspace --no-default-features → 1,538 passed, 0 failed, 8 ignored. ESP32-S3 on COM7 still streams live CSI.
This commit is contained in:
parent
79477c17a9
commit
58a63d6bdf
15
CHANGELOG.md
15
CHANGELOG.md
|
|
@ -7,6 +7,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- **Rust workspace build with `--no-default-features` on Windows** (#366, #415) —
|
||||||
|
`wifi-densepose-mat`, `wifi-densepose-sensing-server`, and `wifi-densepose-train`
|
||||||
|
all depended on `wifi-densepose-signal` with default features enabled, which
|
||||||
|
pulled `ndarray-linalg` → `openblas-src` → vcpkg/system-BLAS through the entire
|
||||||
|
workspace. `--no-default-features` at the workspace root then could not opt out
|
||||||
|
of BLAS, breaking `cargo build` / `cargo test` on Windows without vcpkg. All
|
||||||
|
three consumers now declare `wifi-densepose-signal = { ..., default-features = false }`,
|
||||||
|
so `cargo test --workspace --no-default-features` builds cleanly without
|
||||||
|
vcpkg/openblas. Validated: 1,538 tests pass, 0 fail, 8 ignored.
|
||||||
|
- **`signal` test `test_estimate_occupancy_noise_only` failed without `eigenvalue`** —
|
||||||
|
The test unwrapped the `NotCalibrated` stub returned when the BLAS-backed
|
||||||
|
`estimate_occupancy` is compiled out. Gated with `#[cfg(feature = "eigenvalue")]`
|
||||||
|
so it only runs when the real implementation is available.
|
||||||
|
|
||||||
## [v0.6.2-esp32] — 2026-04-20
|
## [v0.6.2-esp32] — 2026-04-20
|
||||||
|
|
||||||
Firmware release cutting ADR-081 and the Timer Svc stack fix discovered during
|
Firmware release cutting ADR-081 and the Timer Svc stack fix discovered during
|
||||||
|
|
|
||||||
|
|
@ -7979,6 +7979,7 @@ dependencies = [
|
||||||
"chrono",
|
"chrono",
|
||||||
"clap",
|
"clap",
|
||||||
"futures-util",
|
"futures-util",
|
||||||
|
"ruvector-mincut",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"tempfile",
|
"tempfile",
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ serde = ["dep:serde", "chrono/serde", "geo/use-serde"]
|
||||||
[dependencies]
|
[dependencies]
|
||||||
# Workspace dependencies
|
# Workspace dependencies
|
||||||
wifi-densepose-core = { version = "0.3.0", path = "../wifi-densepose-core" }
|
wifi-densepose-core = { version = "0.3.0", path = "../wifi-densepose-core" }
|
||||||
wifi-densepose-signal = { version = "0.3.0", path = "../wifi-densepose-signal" }
|
wifi-densepose-signal = { version = "0.3.0", path = "../wifi-densepose-signal", default-features = false }
|
||||||
wifi-densepose-nn = { version = "0.3.0", path = "../wifi-densepose-nn" }
|
wifi-densepose-nn = { version = "0.3.0", path = "../wifi-densepose-nn" }
|
||||||
ruvector-solver = { workspace = true, optional = true }
|
ruvector-solver = { workspace = true, optional = true }
|
||||||
ruvector-temporal-tensor = { workspace = true, optional = true }
|
ruvector-temporal-tensor = { workspace = true, optional = true }
|
||||||
|
|
|
||||||
|
|
@ -44,8 +44,11 @@ clap = { workspace = true }
|
||||||
# Multi-BSSID WiFi scanning pipeline (ADR-022 Phase 3)
|
# Multi-BSSID WiFi scanning pipeline (ADR-022 Phase 3)
|
||||||
wifi-densepose-wifiscan = { version = "0.3.0", path = "../wifi-densepose-wifiscan" }
|
wifi-densepose-wifiscan = { version = "0.3.0", path = "../wifi-densepose-wifiscan" }
|
||||||
|
|
||||||
# Signal processing with RuvSense pose tracker (accuracy sprint)
|
# Signal processing with RuvSense pose tracker (accuracy sprint).
|
||||||
wifi-densepose-signal = { version = "0.3.0", path = "../wifi-densepose-signal" }
|
# default-features = false drops the optional ndarray-linalg/BLAS chain so that
|
||||||
|
# `--no-default-features` at the workspace root can produce a Windows-friendly
|
||||||
|
# build without vcpkg/openblas (issue #366, #415).
|
||||||
|
wifi-densepose-signal = { version = "0.3.0", path = "../wifi-densepose-signal", default-features = false }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
tempfile = "3.10"
|
tempfile = "3.10"
|
||||||
|
|
|
||||||
|
|
@ -1232,6 +1232,9 @@ mod tests {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// estimate_occupancy() falls back to a NotCalibrated stub without the
|
||||||
|
// `eigenvalue` feature, so this test only makes sense with BLAS enabled.
|
||||||
|
#[cfg(feature = "eigenvalue")]
|
||||||
#[test]
|
#[test]
|
||||||
fn test_estimate_occupancy_noise_only() {
|
fn test_estimate_occupancy_noise_only() {
|
||||||
let config = FieldModelConfig {
|
let config = FieldModelConfig {
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ cuda = ["tch-backend"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
# Internal crates
|
# Internal crates
|
||||||
wifi-densepose-signal = { version = "0.3.0", path = "../wifi-densepose-signal" }
|
wifi-densepose-signal = { version = "0.3.0", path = "../wifi-densepose-signal", default-features = false }
|
||||||
wifi-densepose-nn = { version = "0.3.0", path = "../wifi-densepose-nn" }
|
wifi-densepose-nn = { version = "0.3.0", path = "../wifi-densepose-nn" }
|
||||||
|
|
||||||
# Core
|
# Core
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue