Repository navigation
Description
Context
The Build CH32V307 workflow emitted warnings in GitHub Actions run/job:
- Job: https://github.com/FastLED/fbuild/actions/runs/26870686326/job/79244964744
- Source run: PR Fix ESP32-C2 skeleton SDK install #378 merge ref
5413534c2964257eb904ee3f28ee864093f8e59c - Workflow input:
test-dir=tests/platform/ch32v307,env-name=ch32v307 - Build commands from
.github/workflows/template_build.yml:fbuild build tests/platform/ch32v307 -e ch32v307 --quickfbuild build tests/platform/ch32v307 -e ch32v307 --release
- Toolchain reported in the log:
riscv-none-elf-gcc 14.2.0 - CH32V core package pinned by fbuild:
openwch/arduino_core_ch321.0.4
The job completed successfully and produced both quick and release firmware.bin artifacts, but the CH32V307 build commands emitted 104 compiler warning lines. These are 52 warning sites repeated once by the quick build and once by the release build.
Compiler warning breakdown across both passes:
30x -Wmissing-field-initializerscores/arduino/ch32/analog.cpp: DAC/ADC init structscores/arduino/ch32/interrupt.cpp: GPIO/EXTI init structs
28x excess elements in struct initializervariants/CH32V30x/CH32V307VCT6/PeripheralPins.c: ADC/DAC/I2C/UART/SPI pin-map terminators
20x -Wattributescores/arduino/ch32/clock.ccores/arduino/ch32/interrupt.cppsystem/CH32V30x/USER/ch32v30x_it.c
18x -Wcommentsystem/CH32V30x/SRC/Peripheral/inc/ch32v30x_eth.h: nested comment markers
4x -Wunused-variablecores/arduino/ch32/analog.cpp:bankandcalibration_value
2x -Wsign-comparecores/arduino/ch32/uart.c
2x "CH32V30x_D8C" redefinedcores/arduino/ch32/ch32_def_build.hdefinesCH32V30x_D8C- fbuild's
crates/fbuild-config/assets/boards/json/genericCH32V307VCT6.jsonalso passes-DCH32V30x_D8Cviabuild.extra_flags
The same job also emitted these GitHub warning annotations outside the CH32V firmware build commands:
setup-soldr: defaulting SOLDR_LINKER=fast ... Set linker: platform-default ... or linker: <value> to silence this warning.setup-soldr: build-cache cache payload is 1.12GB before compression (>512.0MB).soldr cook prebuilt dependencies, but this job's compile cache recorded 18 miss(es) and 0 hit(s) ... set prebuild-deps: none to skip the unused cook.
Assessment: this is explainable with the current implementation, but should not be treated as the expected final CI state. Most compiler diagnostics come from the pinned upstream OpenWCH Arduino core being compiled under fbuild's CH32V -Wall -Wextra flags. The duplicate CH32V30x_D8C warning is at least partly local, because fbuild's board JSON passes a macro that the OpenWCH startup-selection header also defines. The setup-soldr annotations are expected in the sense that the action is explicitly warning about current cache/linker configuration, but they still produce warning annotations on an otherwise successful board build.
Proposal
Decide and implement a CH32V warning policy so Build CH32V307 no longer emits untracked warnings on successful builds.
Practical options:
- Patch known OpenWCH
1.0.4issues duringCh32vCores::patch_compatibility, similar to the existing backup-header compatibility patch. - Scope warning suppressions to third-party OpenWCH core/framework compilation only, so user project code can still surface useful warnings.
- Remove or de-duplicate local board defines that OpenWCH derives internally, starting with
CH32V30x_D8CforgenericCH32V307VCT6. - If some upstream diagnostics are intentionally accepted, encode that as an explicit allowlist/count so new warnings are visible.
- Decide whether the
setup-soldrannotations should be silenced through explicit workflow inputs/configuration, tracked separately, or kept as intentional annotations.
Acceptance criteria
- Re-running the CH32V307 quick and release CI build no longer emits untracked compiler
warning:lines from the OpenWCH core. - The
CH32V30x_D8Credefinition is either fixed or explicitly documented as intentional. - Any warning suppression is scoped narrowly enough that fbuild does not hide warnings from user/project source files.
- The
setup-soldrwarning annotations in this job are either removed, intentionally documented, or split into a separate cache/workflow follow-up. - The issue is closed with evidence from a fresh
Build CH32V307run, including the run URL and warning count.
Open questions
- Should fbuild patch the pinned OpenWCH core on install, or should it keep the downloaded package untouched and apply compile-flag suppressions around third-party sources?
- Should this warning policy apply only to CH32V307 first, or to every CH32V board that consumes
openwch/arduino_core_ch32? - Are the
setup-soldrcache/linker annotations in scope for this issue, or should they become a separate CI-cache cleanup issue?
Related issues
No strong duplicate found after searching for CH32V307 warnings, openwch warning, and arduino_core_ch32 in FastLED/fbuild issues.
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsTriage
Activity
[-]chore(ci): clean up CH32V307 OpenWCH build warnings[/-][+]chore(ci): clean up CH32V307 workflow warnings[/+]fix(ch32v): scope third-party OpenWCH warnings + remove duplicate CH3…
zackees commentedon Jun 3, 2026
Closed by #399 (
Closes #382auto-close).Verification on the merged PR head
b3be0ed8)grep -c 'warning:'over the full CH32V307 job log → 0 (was 104 on the reference run from chore(ci): clean up CH32V307 workflow warnings #382)"CH32V30x_D8C" redefinedwarnings emitted--quickand--releaseeach compile 60 files, 0warning:linesWhat landed
Ch32vCompiler::with_framework_root(framework_dir)— appends-wto compile commands for sources rooted under the OpenWCHarduino_core_ch32install only. User sketch sources and project libraries still compile under-Wall -Wextra. Applied broadly to every CH32V board onarduino_core_ch32, not just CH32V307.genericCH32V307VCT6.jsondropped the redundant-DCH32V30x_D8Cextra flag (the OpenWCHch32_def_build.hheader derives it fromCH32V30x_C). Same treatment forgenericCH32V303VCT6.json(-DCH32V30x_D8→ derived fromCH32V30x).Out of scope follow-up
The
setup-soldrGitHub Action annotations (SOLDR_LINKER=fast, build-cache >512MB, prebuild-deps miss count) are configuration-level signals from the action, not from fbuild's build pipeline. Split into #400.