Repository navigation
build: musl and Windows ARM64 builds, smarter installers, man page and completions in packages - #19
Merged
Merged
Conversation
ink never uses comrak's syntect plugin; the feature only pulled in syntect's onig backend and compiled C oniguruma. ink's own syntect dependency uses the pure-Rust default-fancy regex engine. The only remaining C dependency is ring (via rustls), which keeps static musl and cross builds simple.
…w targets - rust-version = 1.90: the highest rust-version among resolved dependencies (quantette via ratatui-image); cargo check --locked passes on 1.90. - .cargo/config.toml links the MSVC CRT statically for x86_64 and aarch64 Windows so ink.exe runs without the VC++ redistributable. - cargo-binstall overrides for the static musl builds (amd64, arm64, armv7) and Windows ARM64.
…nance; run on PRs
- New assets (existing names unchanged): ink-linux-{amd64,arm64,armv7}-musl
built with cross and checked to be static; ink-windows-arm64.exe built
natively on windows-11-arm; ink-<version>-<os>-<arch>.tar.gz/.zip archives
with the man page and completions.
- aarch64 glibc builds natively on ubuntu-22.04-arm (glibc guard kept).
- Every binary the runner can execute is smoke-tested (--version and a
piped --plain render); arm musl under qemu-user, macOS x86_64 under Rosetta.
- Windows builds are checked for dynamic CRT imports.
- .deb/.rpm now ship ink.1 and bash/zsh/fish completions
(packaging/stage.sh generates them), and the amd64 deb is test-installed.
- Runs on PRs touching the pipeline and on workflow_dispatch; release,
crates and homebrew only run for a pushed v* tag. Top-level permissions
are read-only; only the release job can write.
- Build provenance attestation for every asset in SHA256SUMS.
The packaging job's stub binary now answers man/completions so stage.sh runs as in the release, and the deb and rpm layouts are asserted. The msrv job builds with the rust-version read from Cargo.toml.
install.sh picks the static musl build on musl, glibc < 2.35 and armv7, refuses Termux with a cargo install hint, resolves latest via the releases/latest/download redirect, honours INK_VERSION, falls back to wget, keeps mandatory SHA256SUMS verification, only uses sudo when needed, and runs from a main function so a truncated download does nothing. --print-asset plus INK_TEST_* overrides make detection testable. install.ps1 installs ink.exe for x64 or ARM64 (x64 fallback for releases without an ARM64 build) to %LOCALAPPDATA%\Programs\ink after verifying the checksum, and adds it to the user PATH.
Merged
1 task
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.
Summary
Widens the set of machines the release binaries run on and makes the release pipeline testable before a tag. Existing asset names are unchanged; everything here is additive.
cross: Alpine, Debian 11, Ubuntu 20.04, RHEL 8, NixOS, containers, 32-bit Raspberry Pi.windows-11-arm..tar.gzand.ziparchives.install.shdetects musl, old glibc, ARMv7 and Termux, supportsINK_VERSIONpinning and wget, and no longer uses the rate-limited API. Newinstall.ps1for Windows.syntectfeature, which removes the C oniguruma dependency.rust-version = 1.90declared, with a CI job that checks it.Testing
install.shwas run for real against v0.8.0 and v0.7.0, and its detection was checked in Alpine, Debian 11, Ubuntu 20.04 and 22.04 containers.🤖 Generated with Claude Code
https://claude.ai/code/session_01UVcvmQrSXd2eyt32g4ko19