Skip to content

fix(rp2040): do not infer Bluetooth-only Arduino-Pico libraries when Bluetooth is off #1498

fix(rp2040): do not infer Bluetooth-only Arduino-Pico libraries when Bluetooth is off

fix(rp2040): do not infer Bluetooth-only Arduino-Pico libraries when Bluetooth is off #1498

name: CI Workflow Drift
# Enforces that .github/workflows/build-*.yml and nightly-platforms.yml
# match what `ci/render_workflows.py` would emit from the SOT files
# (ci/board_families.json + ci/ci_common_paths.txt). See FastLED/fbuild#835.
#
# This is intentionally always-on (no paths filter) -- it is fast and
# stops drift the moment it appears. If a contributor edits a per-board
# `on:` block by hand, this gate fails with a copy-paste fix command.
#
# It also enforces that every `pull_request`-triggered workflow declares an
# auto-cancel `concurrency:` block (ci/check_workflow_concurrency.py), so a
# rapid series of pushes to a feature branch supersedes its in-flight runs
# instead of queueing ~80 more board builds behind them.
on:
workflow_dispatch: {}
push:
branches: [main]
pull_request:
branches: [main]
# Auto-cancel superseded PR runs: pushing again to a feature branch
# supersedes the in-flight run instead of queueing behind it. Non-PR
# events key on run_id so each gets its own group -- a shared group keeps
# only ONE pending run, which would silently drop queued main SHAs.
concurrency:
group: ci-workflow-drift.yml-${{ github.event_name == 'pull_request' && github.ref || github.run_id }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
jobs:
check:
name: Render-and-diff
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@v6
- uses: astral-sh/setup-uv@v3
- name: Verify rendered workflows match SOT
run: uv run --no-project python ci/render_workflows.py --check
- name: Verify PR-triggered workflows auto-cancel superseded runs
run: uv run --with pyyaml --no-project python ci/check_workflow_concurrency.py
- name: Unit-test the concurrency guard
run: uv run --with pyyaml --no-project python -m unittest ci.test_workflow_concurrency
# soldr's blessed cross path is the only sanctioned one; cargo-zigbuild,
# ziglang, zig cc and cargo-xwin are retired. This gate keeps them from
# coming back via a copy-pasted snippet or a half-remembered recipe.
# See agents/docs/cross-compilation.md.
- name: Verify the retired cross backends stay purged
run: uv run --no-project python ci/check_no_legacy_cross.py
- name: Unit-test the cross-backend guard
run: uv run --no-project python -m unittest ci.test_no_legacy_cross
# clud force-reinstalls a pinned soldr as the global uv tool on every
# launch, downgrading every other project's soldr. See FastLED/fbuild#1436.
- name: Verify .clud/settings.json does not pin soldr
run: uv run --no-project python -m unittest ci.test_clud_settings_soldr