Uh oh!
There was an error while loading. Please reload this page.
ci: fail board builds that leave stray files in the working tree - #1272
Conversation
Linker helpers (collect2/lto-wrapper) running in the daemon's inherited cwd twice dropped scratch files (a stray 0-byte `-r`) into the repo root (#1267, #1269, FastLED/FastLED#3867). Every board build now asserts `git status --porcelain` is empty after the quick + release builds so the regression class is caught in CI instead of by users. Co-Authored-By: Claude <noreply@anthropic.com>
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (3)
📝 WalkthroughWalkthroughThe changes normalize local library dependency paths and add a post-build check that requires quick and release builds to leave the working tree clean. ChangesLocal dependency path normalization
Build working-tree validation
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
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. Comment |
…ctation Two pre-existing failures from #1256/#1257/#1258 that turned main's Dylint and Check macOS/Windows jobs red: - library_spec.rs used std::path::PathBuf for local_path, which the ban_std_pathbuf dylint denies (the file is not allowlisted). Migrate to fbuild_core::path::NormalizedPath. - test_named_relative_local_symlink_adds_include_dir compared raw tempfile paths against production's canonicalized output, failing on Windows (8.3 short names, RUNNER~1) and macOS (/var -> /private/var). Canonicalize the expectation the same way production does. Co-Authored-By: Claude <noreply@anthropic.com>
Uh oh!
There was an error while loading. Please reload this page.
Follow-up to #1269/#1270, requested guard so this regression class is caught in CI.
What
Adds a step to
template_build.yml(inherited by all ~60 renderedbuild-*.ymlboard workflows) that runs after the quick + releasefbuild buildsteps and fails ifgit status --porcelainis non-empty.Why
Linker helpers (
collect2/lto-wrapper) running in the fbuild daemon's inherited cwd have now twice dropped scratch files — a stray 0-byte file literally named-r— into the invocation directory (#1267 fixed teensy in #1268; #1269/#1270 fixed the remaining five ARM linkers). CI builds run from the repo root, which is exactly the cwd the stray landed in, so a clean-tree assertion after the build catches the whole class regardless of which platform regresses next.Gitignored build output (
.fbuild/,target/) is invisible togit status, so the check only fires on genuinely stray untracked/modified files.Verification
ci/render_workflows.pydrift check: clean (the template is referenced viaworkflow_call, no re-render needed; every rendered workflow already liststemplate_build.ymlin its path filters, so all board builds run on this PR and exercise the new step).🤖 Generated with Claude Code
Summary by CodeRabbit
Bug Fixes
Chores