diff --git a/build.sh b/build.sh index c41080f7..7b7d670b 100755 --- a/build.sh +++ b/build.sh @@ -60,6 +60,7 @@ REQUIRE_OTA_UPDATES="${REQUIRE_OTA_UPDATES:-}" OTA_EXCLUDED_TARGETS=() LOGGING_MATRIX_FAILURES=() LOGGING_MATRIX_DEFERRED_TARGETS=() +LOGGING_MATRIX_DEFERRED_CAPACITY_TARGETS=() RADIO_PRESET_SELECTION="" KISS_MODE_OVERRIDE="${KISS_MODE_OVERRIDE-}" PARSED_COMMAND_ARGS=() @@ -2107,6 +2108,23 @@ is_logging_size_constrained_target() { esac } +is_logging_matrix_capacity_deferred_target() { + # This STM32WL Companion needs 238 KiB with its complete storage, sensor, + # and runtime USB logging contract, while the deployed layout reserves + # 32 KiB of its 256 KiB flash for LittleFS. Do not silently shrink that + # storage or remove a feature just to publish a matrix artifact. The target + # remains directly buildable for capacity work; it is omitted from the + # logging matrix until its storage-layout decision is explicitly approved. + case "$1" in + wio-e5-mini_companion_radio_usb) + return 0 + ;; + *) + return 1 + ;; + esac +} + prompt_for_kiss_modem_build_policy() { local kiss_count=0 local target @@ -5662,6 +5680,7 @@ run_logging_matrix_build_targets() { fi LOGGING_MATRIX_FAILURES=() LOGGING_MATRIX_DEFERRED_TARGETS=() + LOGGING_MATRIX_DEFERRED_CAPACITY_TARGETS=() if [ "${REQUIRE_OTA_UPDATES:-0}" = "1" ]; then printf '%s\n' "${OTA_EXCLUDED_TARGETS[@]}" > "${OUTPUT_DIR}/ota-excluded-targets.txt" fi @@ -5672,6 +5691,10 @@ run_logging_matrix_build_targets() { if is_mqtt_bridge_target "$target"; then continue fi + if is_logging_matrix_capacity_deferred_target "$target"; then + LOGGING_MATRIX_DEFERRED_CAPACITY_TARGETS+=("$target") + continue + fi if requires_esp32_full_cli_profile "$target"; then full_only_standard_skip_count=$((full_only_standard_skip_count + 1)) else @@ -5728,6 +5751,10 @@ run_logging_matrix_build_targets() { echo "${#LOGGING_MATRIX_DEFERRED_TARGETS[@]} standard ESP32 target(s) exceeded the portable OTA slot and were deferred to the expanded FULL pass:" printf ' %s\n' "${LOGGING_MATRIX_DEFERRED_TARGETS[@]}" fi + if [ ${#LOGGING_MATRIX_DEFERRED_CAPACITY_TARGETS[@]} -gt 0 ]; then + echo "${#LOGGING_MATRIX_DEFERRED_CAPACITY_TARGETS[@]} standard target(s) are deferred pending an approved storage-capacity decision:" + printf ' %s\n' "${LOGGING_MATRIX_DEFERRED_CAPACITY_TARGETS[@]}" + fi if [ ${#LOGGING_MATRIX_FAILURES[@]} -gt 0 ]; then echo "Logging matrix completed with ${#LOGGING_MATRIX_FAILURES[@]} failed build(s):" printf ' %s\n' "${LOGGING_MATRIX_FAILURES[@]}" diff --git a/test/test_build_profiles.sh b/test/test_build_profiles.sh index 292e43fd..d02c38af 100644 --- a/test/test_build_profiles.sh +++ b/test/test_build_profiles.sh @@ -813,6 +813,11 @@ for constrained_companion in \ is_logging_size_constrained_target "$constrained_companion" \ || fail "$constrained_companion enabled oversized verbose mesh diagnostics" done +is_logging_matrix_capacity_deferred_target wio-e5-mini_companion_radio_usb \ + || fail "Wio E5 Mini Companion was not deferred pending its storage decision" +if is_logging_matrix_capacity_deferred_target wio-e5-mini_repeater; then + fail "Wio E5 Mini capacity deferral expanded beyond the affected Companion" +fi if uses_merged_standard_usb_logging nrf_repeater_lora_ota_no_external_sensors; then fail "LoRa OTA repeater incorrectly merged USB logging" fi