bug(update): pre-0.15.2 binaries cannot self-update across the asset rename - one-time manual reinstall required #164
Labels
No labels
breaking
bug
documentation
enhancement
epic
good first issue
help wanted
refactoring
resolution/duplicate
resolution/invalid
resolution/wontfix
security
severity/critical
severity/high
severity/low
severity/medium
status/abandoned
status/blocked
status/needs-decision
status/needs-info
status/needs-verification
testing
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
sixfold-space/madtea#164
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Hit right after cutting v0.15.2:
What broke
v0.15.2 renamed release assets to version-free names (
madtea_linux_amd64.tar.gz) for permanently stable latest-download URLs. Binaries older than 0.15.2 construct the legacy versioned filename when self-updating, do not find it on the new release, and fail with the error above. This was a known, accepted consequence of the rename - old updater code cannot be fixed retroactively - but it deserves its own record because every existing install hits it exactly once.Uploading legacy-named duplicate assets would NOT rescue old binaries: their updater verifies the asset against the GPG-signed
checksums.txt, which covers only the new names; making that work would mean amending and re-signing a published release's checksum manifest. Not worth it for a pre-launch install base.Fix (per install, one time)
Reinstall via any current channel; from then on the built-in fallback handles both naming eras:
Binaries 0.15.2+ look for the version-free name first and fall back to legacy names, so they update fine both across old releases and all future ones (covered by TestRunUpdateLegacyAssetNameFallback).
Remaining work (what keeps this open)
Live check passed - the remaining task is done. In an isolated Debian container (never the host, per the self-replace-on-host rule), a genuine v0.15.2 release binary self-updated cleanly to v0.17.0:
v0.15.2 is the first release with the version-free asset names (confirmed: its release assets are madtea_linux_amd64.tar.gz etc, no version in the name), and the update resolved the latest release's version-free
madtea_linux_amd64.tar.gz, GPG/checksum-verified it, and atomically replaced the binary. The 0.15.2+ fallback works across the asset rename to the next release. Anonymous fetch (no credentials configured) succeeded, as expected for a public repo. Nothing left to do here.