You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
moonshine.rn: is_lfs_pointer_file depends on undocumented rg, and the iOS build lacks the LFS preflight guard #443
Two smaller findings from the Codex review of #441, both in packages/moonshine.rn.
1. is_lfs_pointer_file silently fails without rg
build-moonshine-android.sh:142:
if rg -q '^version https://git-lfs.github.com/spec/v1'"$file_path";then
rg (ripgrep) is not declared as a dependency anywhere and is not present on a stock macOS or CI image. Under set -euo pipefail inside an if, a missing binary makes the condition false rather than aborting — so an unmaterialized LFS pointer is silently treated as a real file, and the guard added in #441 does not fire. The build then proceeds to the opaque CMake failure the guard exists to prevent.
Fix: use portable grep -q. Note the helper is duplicated, so both copies need it.
Regression check: with rg removed from PATH, pointer detection still returns 0.
2. The iOS build script has no equivalent guard
build-moonshine-ios.sh shares the same shape as the Android script — the same unconditional core/CMakeLists.txt source list and the same LFS flow — but has no post-pull check. It fails the same opaque way when the asset is unmaterialized.
Fix: add the equivalent guard before CMake runs.
Regression check: missing, pointer, override-supplied, and materialized cases each behave correctly.
Context
Neither is a regression from #441; both are pre-existing. The rg dependency is the more consequential of the two, since it can silently disable the guard that PR just added.
Related: #442 (setup.sh checks out a tag whose tree lacks the file), #437.
Activity