Skip to content

Release 0.2.1: fix the static-binary check that stopped 0.2.0's release - #107

Merged
danielmarv merged 2 commits into
OpenElementsLabs:mainfrom
danielmarv:release-0.2.1
Sep 25, 2026
Merged

danielmarv merged 2 commits into
OpenElementsLabs:mainfrom
danielmarv:release-0.2.1

Conversation

@danielmarv

Copy link
Copy Markdown
Collaborator

The v0.2.0 release run published the server and console images, their provenance and SBOMs, and the Helm chart 0.2.0. Its release decision was READY. But Linux packages (amd64) failed:

record-store is not statically linked
record-store: ELF 64-bit LSB pie executable, x86-64, ..., static-pie linked, ...

The binary was static. file describes an x86_64 musl build as static-pie linked and an aarch64 one as statically linked, and the check matched the wording. Because that job failed, the GitHub Release was skipped: no archives, no .deb/.rpm, no checksums and no release notes were published for 0.2.0.

A published tag is never rebuilt, and re-running the job would reuse the workflow as it was at the tag. So this ships the fix as 0.2.1.

Changes

  • release.yml now checks the property itself: no INTERP program header and no NEEDED entry (readelf). file's text is only printed. build-packages.sh, which only has file on a developer machine, accepts both wordings.
  • 0.2.1 version bump across the workspace, the console, the lockfiles, the chart, the Compose defaults and the docs. release-version.sh v0.2.1 passes. Kept at 0.2.0 on purpose: attestation starts at 0.2.0, and the container-images page's example of a fix superseding a published tag.
  • CHANGELOG 0.2.1 section: it is the same software as 0.2.0, the 0.2.0 upgrade notes apply, and a 0.2.0 image can be replaced in place.

Evidence (all on the fork)

After merge

Create and push a signed tag on the merge commit: git tag -s v0.2.1 -m "Record Store v0.2.1". Then watch release.yml.

🤖 Generated with Claude Code

The release refused the x86_64 musl binaries as not statically linked: file
describes them as "static-pie linked", while the aarch64 ones read
"statically linked", and the check matched the words. Both are static. The
workflow now checks the property itself -- no program interpreter and no
shared-library dependency in the ELF headers -- and prints file's
description only for the log. build-packages.sh, which has only file to hand
on a developer machine, accepts both wordings.
0.2.0's images, provenance and chart were published, but the release refused
the x86_64 static binaries on the wording of file's output, so no GitHub
Release, archives, packages or checksums followed. A published version is
never rebuilt, so the fix ships as 0.2.1, the first complete publication of
0.2 -- the same software, with the release check fixed.

The workspace, the console, both lockfiles, the chart and every
current-version example move to 0.2.1. Kept at 0.2.0: that attestation starts
there, and the container-images page's example of a fix superseding a
published tag.
@danielmarv
danielmarv merged commit ed1c09e into OpenElementsLabs:main Sep 25, 2026
19 checks passed
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.

1 participant