Skip to content

chore(dev-tools): drop soldr dep; require global soldr install (#251)#256

Merged
zackees merged 1 commit into
mainfrom
chore/global-soldr
May 23, 2026
Merged

chore(dev-tools): drop soldr dep; require global soldr install (#251)#256
zackees merged 1 commit into
mainfrom
chore/global-soldr

Conversation

@zackees
Copy link
Copy Markdown
Member

@zackees zackees commented May 23, 2026

Closes #251.

Summary

soldr is no longer a dependency of the repo-local fbuild-dev-tools package. The repo now relies on soldr being installed globally on PATH — consistent with how all FastLED-org repos consume soldr.

Changes

Removed

  • dependencies = [soldr>=0.7.4] from ci/dev-tools/pyproject.toml.
  • uv run soldr ... everywhere it was used at runtime — replaced with bare soldr ...:
    • lint, ci/lint.py, ci/test.py, ci/measure_baseline_205.py (actual subprocess calls)
    • command examples across crates, benches, docs, CLAUDE.md, CODEX.md, install

Added

  • install_soldr_global() step in the root install script — when soldr is missing, bootstraps via uv tool install soldr and falls back to a clear pointer at https://github.com/zackees/soldr if uv is unavailable.
  • Helpful missing-soldr error in ci/trampoline.py::_soldr_prefix().
  • uv run soldr ... is now actively REJECTED by ci/hooks/tool_guard.py (new UV_RUN_FORBIDDEN_TARGETS set covers cargo/rustc/etc. and soldr). Regression test added (test_blocks_uv_run_soldr).

Intentionally untouched (historical)

  • DONE.md, tasks/lessons.md, PLAN.md — point-in-time records; preserving their original uv run soldr references.

Acceptance criteria (from #251)

  • ci/dev-tools/pyproject.toml no longer declares soldr as a dep.
  • Helper code still runs soldr from PATH.
  • Missing-soldr error explains that global soldr is required.
  • Missing-soldr error recommends uv/uvx and links to https://github.com/zackees/soldr.

Test plan

  • soldr cargo check --workspace --all-targets — clean
  • soldr cargo fmt --all --check — clean
  • python -m unittest test_tool_guard — 7/7 pass (includes new test_blocks_uv_run_soldr)
  • CI: Formatting, Documentation, board builds all green

🤖 Generated with Claude Code

Closes #251.

`soldr` is no longer a dependency of the repo-local `fbuild-dev-tools`
package. The repo now relies on `soldr` being installed globally on
`PATH`, which keeps agent/developer behavior consistent across repos
that all consume soldr the same way.

**Removed:**
- `dependencies = ["soldr>=0.7.4"]` from `ci/dev-tools/pyproject.toml`
- `uv run soldr ...` everywhere — replaced by bare `soldr ...`:
  - actual subprocess calls in `lint`, `ci/lint.py`, `ci/test.py`,
    `ci/measure_baseline_205.py`
  - doc strings, READMEs, command examples across crates, benches,
    docs/, CLAUDE.md, CODEX.md

**Added:**
- `install_soldr_global()` step in the root `install` script: when
  `soldr` is missing, bootstraps via `uv tool install soldr` and falls
  back to a clear pointer at https://github.com/zackees/soldr if uv is
  unavailable.
- Helpful error in `ci/trampoline.py::_soldr_prefix()` when `soldr` is
  missing: tells the user to `uv tool install soldr` (or use the
  upstream install script) and links to the soldr repo.
- `uv run soldr ...` is now actively REJECTED by the
  `ci/hooks/tool_guard.py` hook (new `UV_RUN_FORBIDDEN_TARGETS` set
  covers both `cargo`/`rustc`/etc and `soldr`). Added regression test
  `test_blocks_uv_run_soldr` to `ci/hooks/test_tool_guard.py`.

**Untouched (historical records):**
- `DONE.md`, `tasks/lessons.md`, `PLAN.md` — these are point-in-time
  changelogs / planning docs; leaving their `uv run soldr` references
  preserves history.

**Acceptance criteria (from issue):**
- [x] `ci/dev-tools/pyproject.toml` no longer declares `soldr` as a dep.
- [x] Helper code still runs `soldr` from PATH.
- [x] Missing-soldr error explains that global `soldr` is required.
- [x] Missing-soldr error recommends uv/uvx and links to
      https://github.com/zackees/soldr.

Tests: `cargo check --workspace --all-targets`, `cargo fmt --check`,
and `python -m unittest test_tool_guard` all green.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 23, 2026

Warning

Review limit reached

@zackees, we couldn't start this review because you've used your available PR reviews for now.

Your plan currently allows 1 review/hour. Refill in 4 minutes and 20 seconds.

Your organization has run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After more review capacity refills, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than trial, open-source, and free plans. In all cases, review capacity refills continuously over time.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: e8237129-03d6-4cf8-9ef9-c37a661fae83

📥 Commits

Reviewing files that changed from the base of the PR and between 6175424 and e8054ad.

⛔ Files ignored due to path filters (1)
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (42)
  • CLAUDE.md
  • CODEX.md
  • bench/README.md
  • bench/fastled-examples/README.md
  • ci/dev-tools/README.md
  • ci/dev-tools/pyproject.toml
  • ci/hooks/README.md
  • ci/hooks/board_context.py
  • ci/hooks/test_tool_guard.py
  • ci/hooks/tool_guard.py
  • ci/lint.py
  • ci/measure_baseline_205.py
  • ci/test.py
  • ci/trampoline.py
  • ci/validate_boards.py
  • crates/fbuild-build/tests/README.md
  • crates/fbuild-build/tests/avr_build.rs
  • crates/fbuild-build/tests/eh_frame_strip_esp32.rs
  • crates/fbuild-build/tests/esp32_build.rs
  • crates/fbuild-build/tests/flag_escaping_lint.rs
  • crates/fbuild-build/tests/stm32_acceptance.rs
  • crates/fbuild-build/tests/teensy30_acceptance.rs
  • crates/fbuild-build/tests/teensy41_acceptance.rs
  • crates/fbuild-build/tests/teensy_build.rs
  • crates/fbuild-build/tests/teensylc_acceptance.rs
  • crates/fbuild-config/src/bin/README.md
  • crates/fbuild-config/src/bin/enrich_boards.rs
  • crates/fbuild-daemon/tests/process_containment.rs
  • crates/fbuild-deploy/src/esp32/tests.rs
  • crates/fbuild-header-scan/benches/README.md
  • crates/fbuild-library-select/benches/README.md
  • crates/fbuild-library-select/benches/resolve_cold.rs
  • crates/fbuild-library-select/benches/resolve_warm.rs
  • crates/fbuild-python/src/lib.rs
  • docs/DEVELOPMENT.md
  • docs/PERF_WARM_BUILD.md
  • docs/ROADMAP.md
  • docs/SOLDR_BUILD_PERF.md
  • install
  • lint
  • python/README.md
  • test
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/global-soldr

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@zackees zackees merged commit 9f0a0f9 into main May 23, 2026
90 checks passed
@zackees zackees mentioned this pull request May 23, 2026
4 tasks
zackees added a commit that referenced this pull request May 23, 2026
Patch release rolling up fixes and CI/dev-tooling cleanup since v2.2.3.

User-facing
-----------
- fix(teensy41): link `libarm_cortexM7lfsp_math` so Teensy Audio FFT
  examples (`Ports/PJRCSpectrumAnalyzer`) link cleanly (#258 / #257).
  First teensy41 CI green path since mid-April.

Internal / CI / dev tooling
---------------------------
- chore(deps): adopt upstream soldr/zccache/setup-soldr updates;
  `zccache-artifact` 1.4.0 -> 1.8; `zccache` PyPI >= 1.8.2;
  `profile = "minimal"` in rust-toolchain.toml; `prebuild-deps: none`
  workaround for the setup-soldr cargo-chef regression (#253).
- refactor(fbuild-core): migrate to `running-process-core` 3.4 from
  crates.io, dropping the abandoned-branch git pin (#254).
- fix(ci): unblock Formatting + Documentation on main after the
  loc-gate-refactor split (#255).
- chore(dev-tools): drop `soldr` from `ci/dev-tools/pyproject.toml`;
  require a globally-installed `soldr` everywhere; `uv run soldr ...`
  is now actively rejected by the tool_guard hook (#256 / #251).

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

chore(dev-tools): rely on global soldr instead of pyproject dependency

1 participant