feat(ci): add linux_aarch64 release build (CRY-48) - #125
Merged
Conversation
- Add linux_aarch64: [os: :linux, cpu: :aarch64] to Burrito targets in app/mix.exs, keeping it in sync with the CI matrix comment. - Add a matching ubuntu-24.04-arm matrix leg to burrito-build in .github/workflows/main.yaml. The native ARM64 runner is required (not cross-compilation) because rustler_precompiled downloads the mdex_native NIF for the build host's architecture - the same constraint that drove CRY-40's per-OS-runner split. - Add a smoke-test step (linux_aarch64 only) that runs `lc version` on the native runner after the build succeeds, proving the binary executes, the OTP app boots in interactive mode, and all NIFs load (exqlite via Zig cross-compilation, mdex_native via rustler_precompiled's aarch64-unknown-linux-musl precompiled artifact). - Update install.sh detect_target to recognise aarch64 Linux and select the linux_aarch64 tarball instead of erroring out. The packaging, checksum, and release-asset steps in burrito-package already handle arbitrary targets generically (for artifact in lc_*) and require no changes. The Homebrew formula covers only macos_aarch64 and linux_x86_64 (Homebrew's supported platforms) and also needs no changes. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Bash does not execute files in the working directory without an explicit path; burrito_out/lc_linux_aarch64 only works from a shell that has . on $PATH (non-standard). Use ./burrito_out/... so the step is unambiguous regardless of runner shell configuration. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Prevents the step from hanging for up to 6 hours if `lc version` deadlocks instead of crashing (e.g. a NIF load issue that stalls rather than raises). `lc version` should exit in under a second; a 1-minute timeout fails fast without false-positive risk.
bougyman
pushed a commit
that referenced
this pull request
Aug 16, 2026
🤖 I have created a release *beep* *boop* --- ## [1.11.0](v1.10.0...v1.11.0) (2026-08-16) ### Features * **ci:** add linux_aarch64 release build (CRY-48) ([#125](#125)) ([da25532](da25532)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
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
linux_aarch64as a fourth Burrito release target (app/mix.exs)ubuntu-24.04-armmatrix leg to theburrito-buildCI job (.github/workflows/main.yaml) — native ARM64 runner required becauserustler_precompileddownloads NIFs for the build host, not the Burrito target (same constraint as CRY-40)lc versionon the native ARM64 runner after the build, proving the binary executes, the OTP app boots, and all NIFs loadinstall.shto detectaarch64Linux and select thelinux_aarch64tarball instead of erroring outThe packaging/checksum/release-asset steps in
burrito-packagealready handle targets generically (for artifact in lc_*) and need no changes. The Homebrew formula covers onlymacos_aarch64andlinux_x86_64(Homebrew's supported platforms) and also needs no changes.Test plan
mix compile— clean, no warningsmix format --check-formatted— passesmix test— same 5 pre-existing failures, no regressions introducedburrito-buildmatrix produceslc_linux_aarch64onubuntu-24.04-armlc version) exits 0 on the ARM64 runnerburrito-packageincludeslc_linux_aarch64.tar.gzin the release assets andSHA256SUMSCloses https://linear.app/cryptokairos/issue/CRY-48/add-linux-arm64-release-build
🤖 Generated with Claude Code