Skip to content

fix(workspace): unblock --no-default-features build on Windows (#366, #415)#425

Merged
ruvnet merged 1 commit intomainfrom
fix/issue-366-build-no-default-features
Apr 25, 2026
Merged

fix(workspace): unblock --no-default-features build on Windows (#366, #415)#425
ruvnet merged 1 commit intomainfrom
fix/issue-366-build-no-default-features

Conversation

@ruvnet
Copy link
Copy Markdown
Owner

@ruvnet ruvnet commented Apr 25, 2026

Summary

Fixes #366 and the active half of #415: cargo build --workspace --no-default-features and cargo test --workspace --no-default-features now succeed on Windows without vcpkg/openblas.

Root cause

wifi-densepose-mat, wifi-densepose-sensing-server, and wifi-densepose-train all depended on wifi-densepose-signal with default features enabled, which means signal's default = [\"eigenvalue\"] pulled ndarray-linalgopenblas-src through the entire workspace. --no-default-features at the workspace root only applies to the target crate; transitive default features stay on. The CLAUDE.md-recommended Windows build path (cargo test --workspace --no-default-features) therefore could not actually opt out of BLAS.

Fix

Three one-liners on the signal dependency:

wifi-densepose-signal = { version = \"0.3.0\", path = \"../wifi-densepose-signal\", default-features = false }

…in mat/Cargo.toml, sensing-server/Cargo.toml, train/Cargo.toml. Plus one stale-test fix:

// signal/src/ruvsense/field_model.rs
#[cfg(feature = \"eigenvalue\")]
#[test]
fn test_estimate_occupancy_noise_only() { ... }

The test was already failing on main under --no-default-features (unwrapping the NotCalibrated stub returned when the BLAS-backed impl is compiled out) — this gate makes the workspace test claim hold true.

Validation

$ cargo check --workspace --no-default-features
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 5.87s

$ cargo test --workspace --no-default-features
… (lots of test results) …
Total: 1538 passed, 0 failed, 8 ignored

ESP32-S3 on COM7 was running unmodified firmware throughout and continued streaming live CSI (cb #15900, RSSI −44 dBm) before, during, and after these changes — server-side fix only, no firmware impact.

Notes on user reports

The E0432 unresolved import ruvector_mincut, E0425 CLASSES, and 5× E0499/E0502 borrow errors that the user reported in #366 against v0.6.2 source code are already fixed in different ways on main (ruvector-mincut is now declared, CLASSES was renamed to model.class_names, tracker_update uses the .take()+restore pattern). What was not fixed on main was the BLAS propagation — that's what this PR addresses.

Test plan

  • cargo check --workspace --no-default-features succeeds on Windows
  • cargo test --workspace --no-default-features → 1,538 passed, 0 failed
  • ESP32-S3 on COM7 still streams CSI (unchanged firmware)
  • CI: workspace tests on Linux + Windows runners
  • CI: firmware build matrix unaffected (no firmware changes)

🤖 Generated with claude-flow

…415)

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.

Co-Authored-By: claude-flow <ruv@ruv.net>
@ruvnet ruvnet merged commit 58a63d6 into main Apr 25, 2026
@ruvnet ruvnet deleted the fix/issue-366-build-no-default-features branch April 25, 2026 23:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Rust build errors

1 participant