Untrack the bench binary my own PR committed - #835
Conversation
c/tests/bench_omp_grain is a 16,880-byte ELF executable, mode 100755, added by 00129d2 (JustVugg#808). It is the only tracked build artifact under c/tests/ and it is mine. .gitignore already guards c/tests/test_* with source-file exceptions, but the pattern was never extended to bench_* or fuzz_*, which build to extensionless binaries in the same directory. That gap is how it got in, so the fix is the gap rather than the one file: same shape, same exceptions, for both prefixes. This also matters for JustVugg#801. That PR fixes tools/clean.py, which today globs only tests/test_*.exe and therefore deletes nothing on Unix; once it correctly removes extensionless test binaries, `make clean` would delete a tracked file and leave every contributor with a dirty tree. Removing the binary is what keeps that fix harmless.
|
Found the missing half of this story while rebasing #819, and it makes the case for
So this was never "forgot to ignore it". It is the older trap: That changes what the fix has to be. An ignore rule alone cannot remove this file no matter where it is written; only Worth noting the two ignore files were both already trying: I have left the |
#868 closed most of this: c/COLI_V4_UNIT_*.o covers the twelve objects the amalgamated deepseek_v4 Makefile leaves next to the sources. Four more go somewhere else. c/Makefile:895: V4_OWN_DIR = build/ownership so `make check` also writes build/ownership/COLI_V4_UNIT_{RUNTIME,CONFIG, ST,NATIVE_QUANT}.o, which no rule matched. On current dev a clean checkout plus `make check` still leaves `?? c/build/` in git status -- one `git add -A` away from the same accident #868 was written to stop, and the one I made on #849 and #800. Ignoring c/build/ wholesale rather than the four names: nothing under it is tracked, and it is a build output directory, so a rule per object would need editing every time the ownership suite grows. Worth stating because it caught me on #849: an ignore rule does not untrack what is already committed. #868 made the twelve invisible in git status while leaving them in the tree; git rm --cached is what removed them. Same shape as #835. This prevents the next one, it does not clean up an existing one.
c/tests/bench_omp_grainis a 16,880-byte ELF executable, mode 100755, tracked indev. It was added by00129d2(#808) β mine β and it is the only tracked build artifact underc/tests/.The gap, not just the file
.gitignorealready guards test binaries properly:That pattern was never extended to
bench_*orfuzz_*, which build to extensionless binaries in the same directory. So this fixes the gap rather than the one file β same shape, same source exceptions, for both prefixes. Verified both directions: the binaries are ignored, andbench_omp_grain.c/fuzz_rans.care not.After this,
git ls-files c/tests/has no extensionless entries left.Why it matters beyond tidiness
This interacts with #801.
tools/clean.pytoday globs onlytests/test_*.exe, somake cleanremoves nothing on Linux or macOS. #801 fixes that. The moment it lands,make cleanwould delete a tracked file and hand every contributor a dirty tree β a confusing failure whose cause is here, not there.Removing the binary is what keeps that fix harmless, so this is worth taking regardless of what happens to #801.
Note on how it got in
#808 added
bench-omp-grain, whose recipe buildstests/bench_omp_grainin-tree.git addpicked it up because nothing ignored it. The irony is not lost on me β #808's stated purpose was running structural checks in CI, and it shipped an artifact no structural check was looking for.