You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Split from #1400, which fixed this class for SAMD (#1418) and ESP8266 (#1398). Unlike #1400, this one is confirmed failing, not inferred.
Confirmed broken
Nightly Platforms run 33866723360 (2026-09-04) failed on all nine CH32V boards: CH32V003, CH32V006, CH32V103, CH32V203, CH32V208, CH32V303, CH32V307, CH32X035, CH32L103.
From the CH32V003 / build job log verbatim:
build error: package error: ch32v-core unpacked without its submodule contents.
These directories are declared in .gitmodules and came out empty:
- libraries/Adafruit_TinyUSB_Arduino
Note this is the /archive/<sha> form, not /archive/refs/tags/. Both are auto-generated and both omit submodules — worth stating because the SAMD regression guard in #1418 originally only rejected the refs form.
Verified by downloading the pinned archive:
it contains .gitmodules
arduino_core_ch32-d767162…/libraries/Adafruit_TinyUSB_Arduino/ is present with exactly one entry — the empty directory itself
That is precisely the condition #1401's unpack check fires on. The boards were green through 2026-08-24; #1401 merged 2026-08-28.
Why the usual fix does not apply
The ESP8266 (#1398) and SAMD (#1418) fixes both switched to a prepared artifact. Neither option exists here:
openwch publishes no release assets at all.gh release view 1.0.4 --repo openwch/arduino_core_ch32 --json assets returns empty, as do the other four releases.
Not on the current build path.ch32v_core.rs defines get_libraries_dir(), but:
it has no framework_libraries implementation, and
no orchestrator under crates/fbuild-build-mcu/ consumes get_libraries_dir() for ch32v
so bundled core libraries are never enumerated for these boards. The tests/platform/ch32v003 sketch is a plain pinMode/digitalWrite blink. CH32V003 has no USB peripheral at all.
This is the same shape as SAMD: a genuinely unused submodule turned into a hard failure by a check that fires on the package rather than on use.
It is not universally irrelevant, though — CH32V208 and CH32V307 do have USB, so a user sketch including Adafruit_TinyUSB.h would hit the original #1380 failure mode. Any fix should say which of the two problems it is solving.
Options
Declare the submodule knowingly-unpopulated (see the escape-hatch issue filed alongside this one). Cheapest, and honest about the fact that nothing reads it today. Does not help a sketch that wants TinyUSB.
Submodule-aware fetch — git clone --recurse-submodules at the pinned sha. PackageBase does not do clones today. Fixes it properly for USB-capable parts.
FastLED-owned mirror bundle. There is precedent: arduino_core_lpc8xx.rs already fetches from FastLED/framework-arduino-lpc8xx, which carries no .gitmodules. Costs a mirror to maintain.
I have not picked one — option 2 is the only one that makes TinyUSB actually usable, but it is also the only one that changes the fetch path for every package.
Not the cause
Worth recording so nobody re-checks: the failure is unrelated to the CH32V bring-up work in #1208/#1209.
Split from #1400, which fixed this class for SAMD (#1418) and ESP8266 (#1398). Unlike #1400, this one is confirmed failing, not inferred.
Confirmed broken
Nightly Platforms run
33866723360(2026-09-04) failed on all nine CH32V boards:CH32V003,CH32V006,CH32V103,CH32V203,CH32V208,CH32V303,CH32V307,CH32X035,CH32L103.From the
CH32V003 / buildjob log verbatim:Cause
crates/fbuild-library/src/library/ch32v_core.rs:Note this is the
/archive/<sha>form, not/archive/refs/tags/. Both are auto-generated and both omit submodules — worth stating because the SAMD regression guard in #1418 originally only rejected therefsform.Verified by downloading the pinned archive:
.gitmodulesarduino_core_ch32-d767162…/libraries/Adafruit_TinyUSB_Arduino/is present with exactly one entry — the empty directory itselfThat is precisely the condition #1401's unpack check fires on. The boards were green through 2026-08-24; #1401 merged 2026-08-28.
Why the usual fix does not apply
The ESP8266 (#1398) and SAMD (#1418) fixes both switched to a prepared artifact. Neither option exists here:
gh release view 1.0.4 --repo openwch/arduino_core_ch32 --json assetsreturns empty, as do the other four releases.d767162is 2025-05-07 ("Update PlatformIO builder script ([META] fbuild build cache must survive CI tar-extract / cross-runner restore #147)"); the newest release is 1.0.4 from 2023-12-18. Downgrading to a release would lose 17 months of core changes.Is the content actually needed?
Not on the current build path.
ch32v_core.rsdefinesget_libraries_dir(), but:framework_librariesimplementation, andcrates/fbuild-build-mcu/consumesget_libraries_dir()for ch32vso bundled core libraries are never enumerated for these boards. The
tests/platform/ch32v003sketch is a plainpinMode/digitalWriteblink. CH32V003 has no USB peripheral at all.This is the same shape as SAMD: a genuinely unused submodule turned into a hard failure by a check that fires on the package rather than on use.
It is not universally irrelevant, though — CH32V208 and CH32V307 do have USB, so a user sketch including
Adafruit_TinyUSB.hwould hit the original #1380 failure mode. Any fix should say which of the two problems it is solving.Options
git clone --recurse-submodulesat the pinned sha.PackageBasedoes not do clones today. Fixes it properly for USB-capable parts.arduino_core_lpc8xx.rsalready fetches fromFastLED/framework-arduino-lpc8xx, which carries no.gitmodules. Costs a mirror to maintain.I have not picked one — option 2 is the only one that makes TinyUSB actually usable, but it is also the only one that changes the fetch path for every package.
Not the cause
Worth recording so nobody re-checks: the failure is unrelated to the CH32V bring-up work in #1208/#1209.