feat(release): ship zipped binaries so rokit and mise can install lpm - #32
Merged
Conversation
rokit and mise install a tool from a release archive, not a loose
binary, so neither could install lpm at all. Releases now also upload
`lpm-{os}-{arch}.zip` holding a bare `lpm[.exe]` at its root, and
`self update` reads that instead.
The bare binary keeps being uploaded for now, and that is the whole
reason this can ship in one release: every lpm already out there derives
`lpm-{os}-{arch}[.exe]` and matches it exactly, so dropping it would
strand those installs on a `self update` that can never find its asset
again. They can reach this version, and from this version on only the
zip is read. The bare asset can stop being published once nobody is left
on a version that needs it -- nothing current reads it.
Unpacking goes through `tools::archive`, the same code that unpacks
every other tool's release, so lpm now reads its own the way it reads
everyone else's. Two things it does not inherit: the binary is looked up
by name rather than taken from the archive root, so a nested layout
still updates, and a non-archive asset is refused instead of being
written through as the executable -- a truncated download or an error
page served under the zip's name would otherwise brick the install.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
rokit and mise install a tool from a release archive, not a loose binary, so neither could install lpm at all. Releases now also upload
lpm-{os}-{arch}.zipholding a barelpm[.exe]at its root, andself updatereads that instead.The bare binary keeps being uploaded for now, and that is the whole reason this can ship in one release: every lpm already out there derives
lpm-{os}-{arch}[.exe]and matches it exactly, so dropping it would strand those installs on aself updatethat can never find its asset again. They can reach this version, and from this version on only the zip is read. The bare asset can stop being published once nobody is left on a version that needs it -- nothing current reads it.Unpacking goes through
tools::archive, the same code that unpacks every other tool's release, so lpm now reads its own the way it reads everyone else's. Two things it does not inherit: the binary is looked up by name rather than taken from the archive root, so a nested layout still updates, and a non-archive asset is refused instead of being written through as the executable -- a truncated download or an error page served under the zip's name would otherwise brick the install.Closes #28