Skip to content

Commit 33eeea6

Browse files
theCodeDriftclaude
andcommitted
fix(vale): quote the verified aarch64 interpreter in the arm64 README
The arm64 README's glibc section was copy-pasted from the x64 one, asserting `interpreter /lib64/ld-linux-x86-64.so.2` — the x86-64 dynamic linker — as a verified fact about the arm64 binary. Checked against the pinned 3.17.1 Linux_arm64 archive (whose sha256 matches the manifest): the real string is `ELF 64-bit LSB executable, ARM aarch64, dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.7.0, stripped`. The minimum kernel differs too (3.7.0, not 3.2.0), so both halves of the quoted string were wrong. design.md scoped its verification to x86-64, which is what made the arm64 claim unjustified; it now records both architectures' strings and notes that they differ, so the next README does not inherit the same paste. The x64 README was verified correct byte-for-byte and is unchanged. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Jwc9FFroR3mTZ4hLiSkkX3
1 parent 1eb4858 commit 33eeea6

2 files changed

Lines changed: 6 additions & 6 deletions

File tree

‎openspec/changes/add-vale-binary-packages/design.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ ast-grep's seventh is `win32-ia32`, and Vale publishes no 32-bit Windows asset,
137137

138138
### musl stays on the `PATH` fallback
139139

140-
Upstream publishes no musl asset, so there is nothing to package for Alpine. That is not a naming detail: Vale's Linux build is **dynamically linked against glibc** — verified as `ELF 64-bit LSB executable, x86-64, dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, stripped` — so it is not a static Go binary and will not run on musl even if it were installed there. A musl host therefore falls back to a `vale` on `PATH`, and the linux packages' READMEs say so plainly rather than leaving a user to discover it as a loader error.
140+
Upstream publishes no musl asset, so there is nothing to package for Alpine. That is not a naming detail: Vale's Linux build is **dynamically linked against glibc** on both architectures — verified against the pinned 3.17.1 archives as `ELF 64-bit LSB executable, x86-64, dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, stripped` and, for arm64, `ELF 64-bit LSB executable, ARM aarch64, dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.7.0, stripped` — so it is not a static Go binary and will not run on musl even if it were installed there. The two differ in interpreter path and minimum kernel, so each linux README quotes its own architecture's string rather than sharing one. A musl host therefore falls back to a `vale` on `PATH`, and the linux packages' READMEs say so plainly rather than leaving a user to discover it as a loader error.
141141

142142
This matches the existing gap rather than widening it: `findSgBinary()` maps every Linux to `-gnu` today, so Alpine already falls through for ast-grep.
143143

‎packages/vale-linux-arm64/README.md‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,11 @@ the same digest upstream publishes in `vale_<version>_checksums.txt`.
4444
## glibc, and why there is no musl package
4545

4646
Vale's Linux build is dynamically linked against glibc — `ELF 64-bit LSB
47-
executable, dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for
48-
GNU/Linux 3.2.0` — so it is not a static Go binary and it does not run on
49-
musl-based distributions such as Alpine. Upstream publishes no musl asset, so
50-
there is nothing to package for those hosts; they fall back to a `vale` found
51-
on `PATH`.
47+
executable, ARM aarch64, dynamically linked, interpreter
48+
/lib/ld-linux-aarch64.so.1, for GNU/Linux 3.7.0` — so it is not a static Go
49+
binary and it does not run on musl-based distributions such as Alpine. Upstream
50+
publishes no musl asset, so there is nothing to package for those hosts; they
51+
fall back to a `vale` found on `PATH`.
5252

5353
## License
5454

0 commit comments

Comments
 (0)