Build Linux AppImage for both x64 and arm64 - #60
Merged
Conversation
The prepare-whisper.mjs script compiles whisper.cpp natively for the build host's architecture, so a single runner can't produce a correct multi-arch AppImage. Split the Linux release job into per-arch matrix entries (ubuntu-latest for x64, ubuntu-24.04-arm for arm64) so each AppImage bundles whisper/ffmpeg binaries matching its own architecture. Co-Authored-By: Claude Sonnet 5 <[email protected]>
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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
ubuntu-latestfor x64,ubuntu-24.04-armfor arm64) so each AppImage is built natively on its target architecture.electron-builder.ymlnow declares explicitx64/arm64targets for the AppImage output, with arch in the artifact filename to avoid collisions.Why
scripts/prepare-whisper.mjscompiles whisper.cpp for whatever host runs it and caches the binary;ffmpeg-staticsimilarly installs a single host-matched binary. A single runner producing both architectures in one pass would silently bundle the wrong native binaries into one of the AppImages (e.g. an x64 whisper binary inside an arm64 AppImage), causing runtime failures like "Exec format error" on ARM64 Linux hosts.Test plan
workflow_dispatchwithplatform: linux(orall) and confirm bothAudist-<version>-x64.AppImageandAudist-<version>-arm64.AppImageare produced and uploaded as release assets🤖 Generated with Claude Code