Skip to content

feat(ci): add linux_aarch64 release build (CRY-48) - #125

Merged
bougyman merged 3 commits into
mainfrom
CRY-48-linux-aarch64-release
Aug 16, 2026
Merged

feat(ci): add linux_aarch64 release build (CRY-48)#125
bougyman merged 3 commits into
mainfrom
CRY-48-linux-aarch64-release

Conversation

@bougyman

Copy link
Copy Markdown
Member

Summary

  • Adds linux_aarch64 as a fourth Burrito release target (app/mix.exs)
  • Adds a native ubuntu-24.04-arm matrix leg to the burrito-build CI job (.github/workflows/main.yaml) — native ARM64 runner required because rustler_precompiled downloads NIFs for the build host, not the Burrito target (same constraint as CRY-40)
  • Adds a smoke-test step that runs lc version on the native ARM64 runner after the build, proving the binary executes, the OTP app boots, and all NIFs load
  • Updates install.sh to detect aarch64 Linux and select the linux_aarch64 tarball instead of erroring out

The packaging/checksum/release-asset steps in burrito-package already handle targets generically (for artifact in lc_*) and need no changes. The Homebrew formula covers only macos_aarch64 and linux_x86_64 (Homebrew's supported platforms) and also needs no changes.

Test plan

  • mix compile — clean, no warnings
  • mix format --check-formatted — passes
  • mix test — same 5 pre-existing failures, no regressions introduced
  • CI: burrito-build matrix produces lc_linux_aarch64 on ubuntu-24.04-arm
  • CI: smoke-test step (lc version) exits 0 on the ARM64 runner
  • CI: burrito-package includes lc_linux_aarch64.tar.gz in the release assets and SHA256SUMS

Closes https://linear.app/cryptokairos/issue/CRY-48/add-linux-arm64-release-build

🤖 Generated with Claude Code

bougyman and others added 2 commits August 16, 2026 12:38
- 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>
Copilot AI lite review requested due to automatic review settings August 16, 2026 16:39

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

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
bougyman merged commit da25532 into main Aug 16, 2026
2 checks passed
@bougyman
bougyman deleted the CRY-48-linux-aarch64-release branch August 16, 2026 16:49
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).
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.

2 participants