Skip to content

lpc8xx: convert 5 stub workflows to real builds (Stage 8 of #487) — orchestrator + upstream proof are in #528

@zackees

Description

@zackees

TL;DR

fbuild build . -e <variant> works for all five ArduinoCore-LPC8xx variants in upstream CI today. The five .github/workflows/build-lpc*.yml files in this repo still carry the Stage-1 no-op stub headers from PR #476, and that note is now stale: PR #488 (Stage 2 orchestrator) merged 2026-06-07, and PR #521 (project-local variants/<variant>/pins_arduino.h resolver) merged shortly after — together they close the last hole that kept the per-board CI slot at "echo and pass."

Evidence — upstream green runs

zackees/ArduinoCore-LPC8xx installs fbuild from PyPI and runs fbuild build . -e <platform> against its own platformio.ini. Latest-main runs as of 2026-06-09, all ✅:

Upstream _fbuild.yml body is bare:

```yaml

  • run: pip install --upgrade fbuild
  • run: fbuild --version
  • run: fbuild build . -e ${{ inputs.platform }}
    ```

No shims, no patches. The orchestrator + project-local variants resolver do all the work.

Stub workflows to un-stub

Workflow Variant Origin
build-lpc804.yml lpc804 PR #476 — Stage-1 stub
build-lpc845.yml lpc845 PR #476 — Stage-1 stub
build-lpc845brk.yml lpc845brk Just added — stale stub copy on arrival
build-lpcxpresso804.yml lpcxpresso804 Just added — stale stub copy on arrival
build-lpcxpresso845max.yml lpcxpresso845max Just added — stale stub copy on arrival

Each header still claims "Stage 2 not yet implemented"; the body just echoes. That header is wrong as of #488 — the three new files inherited the stale comment from the lpc804/lpc845 template.

Two options for the conversion

Option A — In-tree fixtures (parity with every other board)

  1. Add `tests/platform//{platformio.ini,.ino,README.md}` for the three new variants.
  2. Add `crates/fbuild-config/assets/boards/json/.json` modeled on `lpc845.json` (cpu, ram/rom from NXP data sheets, `extra_flags` reflecting the per-variant `CPU_LPC*` define).
  3. Drop the per-workflow echo block; switch each to `uses: ./.github/workflows/template_build.yml` with `firmware-ext: bin`.

Pros: Consistent with every other board build; CI is hermetic.
Cons: Three more board JSONs and three more fixtures to maintain locally.

Option B — Upstream-integration workflow

One parameterized job that clones `zackees/ArduinoCore-LPC8xx` (pinned SHA), runs `fbuild build . -e ` for each variant.

Pros: Single source of truth for the variants list; no JSON/fixture drift here.
Cons: External-repo state can break our CI; harder to bisect locally; departs from the per-board pattern this repo standardized on.

Recommendation: Option A — `lpc804`/`lpc845` already have in-tree fixtures, so the delta is just three JSON files + three fixtures. Optionally keep an Option-B smoke job as belt-and-suspenders.

Related

cc @zackees

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    Status
    Triage

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions