[BUG] Production output configurations fail strict builds #3

Closed
opened 2026-09-15 18:28:53 +02:00 by erikinkinen · 0 comments
Owner

Summary

The logging-only native configuration compiles three direct-sink transport helpers although neither serial nor framebuffer output is enabled. Strict native Clippy fails with unused-function errors. The earlier default/all-feature checks do not expose this unsupported inclusion boundary.

Reproduction

Run cargo clippy --locked --features logd-runtime-logging --target x86_64-unknown-none -- -D warnings. The retained invocation exits 101 with completed cleanup and diagnoses decode_direct_transport_reply, encode_direct_call_request and direct_transport_call_if_available in src/sinks_transport.rs as unused.

Expected and actual behavior

The declared logging-only feature must build without warnings. Direct serial/framebuffer transport should be compiled only where those configured sinks use it. Keep strict warning enforcement and the existing capability and transport contracts.

Environment and identity

  • Original Logd source: c53d4550cb432e25d83c9c37f02aac01053818d3; the first retained native failure used this original transport implementation and inclusion condition before the correction.
  • Rust/Cargo 1.97.1 on Linux x86_64, development profile, native x86_64-unknown-none target, logging-only production feature.
  • No image or VM was executed. This is a compile-configuration failure; no runtime authority defect is demonstrated.
  • Last known passing logging-only strict native configuration: unknown.

Evidence and prior checks

The complete retained diagnostic identifies the three unused functions and the warning-denied exit. Source inspection finds a logging-feature condition on each definition, while their actual direct-sink callers are gated by serial/framebuffer selection. Host/default/all-feature checks passed before this independently selected native mode exposed the gap.

Signed correction

The full matrix additionally exposed serial-only test imports/helpers and a test-only unused mutable variable. Their conditions now match their actual consumers; serial-only idle delivery is exercised without requiring framebuffer output. Signed bc15238f25f818a28fe51b249e2db33f667c4599 passes the complete warning-denied host/native matrix: default and runtime/logging configurations each pass 43 tests, serial-only 59, framebuffer/all-feature 133, release-only/release+logging 45, release+serial 62, and release+framebuffer 138, in both development and release profiles. All twenty native builds, strict host/native Clippy, formatting, private host/native rustdoc and documentation checks pass. Earlier failures are retained. Complete push/review CI 233/234 passes with four classified logs, 631,851 bytes and no warnings. Each Rust job runs all eighty-three owned checks across the twenty feature/profile configurations. Product catalog and runtime-image adoption remain separate. Review: #4. Both complete CI runs are now classified and this configuration regression is resolved. Coherent product runtime-image adoption remains a separate open gate.

Tracking

Related audit: #1. Related configuration-test gap: #2. Narrow and consolidate the transport inclusion condition, document the helpers, and validate every supported production output configuration before closing this report.

## Summary The logging-only native configuration compiles three direct-sink transport helpers although neither serial nor framebuffer output is enabled. Strict native Clippy fails with unused-function errors. The earlier default/all-feature checks do not expose this unsupported inclusion boundary. ## Reproduction Run `cargo clippy --locked --features logd-runtime-logging --target x86_64-unknown-none -- -D warnings`. The retained invocation exits 101 with completed cleanup and diagnoses `decode_direct_transport_reply`, `encode_direct_call_request` and `direct_transport_call_if_available` in `src/sinks_transport.rs` as unused. ## Expected and actual behavior The declared logging-only feature must build without warnings. Direct serial/framebuffer transport should be compiled only where those configured sinks use it. Keep strict warning enforcement and the existing capability and transport contracts. ## Environment and identity - Original Logd source: `c53d4550cb432e25d83c9c37f02aac01053818d3`; the first retained native failure used this original transport implementation and inclusion condition before the correction. - Rust/Cargo 1.97.1 on Linux x86_64, development profile, native `x86_64-unknown-none` target, logging-only production feature. - No image or VM was executed. This is a compile-configuration failure; no runtime authority defect is demonstrated. - Last known passing logging-only strict native configuration: unknown. ## Evidence and prior checks The complete retained diagnostic identifies the three unused functions and the warning-denied exit. Source inspection finds a logging-feature condition on each definition, while their actual direct-sink callers are gated by serial/framebuffer selection. Host/default/all-feature checks passed before this independently selected native mode exposed the gap. ### Signed correction The full matrix additionally exposed serial-only test imports/helpers and a test-only unused mutable variable. Their conditions now match their actual consumers; serial-only idle delivery is exercised without requiring framebuffer output. Signed `bc15238f25f818a28fe51b249e2db33f667c4599` passes the complete warning-denied host/native matrix: default and runtime/logging configurations each pass 43 tests, serial-only 59, framebuffer/all-feature 133, release-only/release+logging 45, release+serial 62, and release+framebuffer 138, in both development and release profiles. All twenty native builds, strict host/native Clippy, formatting, private host/native rustdoc and documentation checks pass. Earlier failures are retained. Complete push/review CI 233/234 passes with four classified logs, 631,851 bytes and no warnings. Each Rust job runs all eighty-three owned checks across the twenty feature/profile configurations. Product catalog and runtime-image adoption remain separate. Review: https://git.erikinkinen.fi/erix/logd/pulls/4. Both complete CI runs are now classified and this configuration regression is resolved. Coherent product runtime-image adoption remains a separate open gate. ## Tracking Related audit: https://git.erikinkinen.fi/erix/logd/issues/1. Related configuration-test gap: https://git.erikinkinen.fi/erix/logd/issues/2. Narrow and consolidate the transport inclusion condition, document the helpers, and validate every supported production output configuration before closing this report.
erikinkinen changed title from [BUG] Logging-only native build includes unused sink transport to [BUG] Production output configurations fail strict builds 2026-09-15 18:45:15 +02:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
erix/logd#3
No description provided.