Document Apple Silicon limitation, add arm64-linux CI, consolidate workflows#8
Merged
aanas-sayed merged 11 commits intomainfrom Apr 24, 2026
Merged
Document Apple Silicon limitation, add arm64-linux CI, consolidate workflows#8aanas-sayed merged 11 commits intomainfrom
aanas-sayed merged 11 commits intomainfrom
Conversation
Wine stable (11.0) predates the anon_mmap_fixed fix for non-4KB host pages (Wine bug #52715, landed in 10.5 devel). Switch WINE_BRANCH to devel so the image works under Rosetta/Docker on Apple Silicon.
Add --platform linux/amd64 to docker run in test.sh so the amd64 image can be invoked from arm64 hosts. Split CI into a build job (amd64) and a test matrix covering amd64-linux, arm64-linux (QEMU), and apple-silicon (Colima + Rosetta via Virtualization Framework).
LTspice creates the log file immediately with only a header, so the 1s sleep after detection expired before the simulation completed under QEMU. Replace background+poll+kill with a foreground timeout so Wine runs to completion regardless of emulation speed.
Colima requires qemu-img for disk image creation even when using --vm-type vz with Rosetta.
lima 2.1.1 requires lima-additional-guestagents to run x86_64 guests. colima 0.10.1 ignores --vm-type vz for x86_64 and falls back to QEMU full-system emulation anyway, so drop the VZ/Rosetta flags. Inside the QEMU VM the Linux guest kernel uses standard 4KB pages, so Wine works.
Running an x86_64 QEMU full-system VM on Apple Silicon is unreliable in CI (lima guest agent fails to connect). Switch to a native arm64 VM via Apple Virtualization Framework (colima --vm-type vz) then use docker/setup-qemu-action to install QEMU user-mode binfmt for amd64, matching the same approach used for arm64-linux.
Stop hand-tuning colima flags. The community action handles colima setup with a known-working configuration for CI.
The wine-devel branch does not actually fix the anon_mmap_fixed assertion on 16KB-page hosts either. This is tracked upstream as winehq bug #58084 and is not yet fixed in any WineHQ repo branch. Document the limitation in the README.
Apple Silicon macOS runners on GitHub Actions do not support nested virtualization, so Docker cannot run there. Blocked upstream by winehq #58084 on the Wine side as well — see README.
Merge test.yml and release.yml into ci.yml with four jobs: check, build, test, publish. Tests always run; publish runs only when appropriate (push to main, dispatch on main, or scheduled run with a changed LTspice MSI ETag). Removes duplicated build/test logic that had to be kept in sync between the two files.
Add WINE_VERSION build arg to pin all wine sub-packages together (winehq, wine, wine-amd64, wine-i386) since apt won't resolve versioned deps otherwise. Document Wine 9.0 / macos-latest tag as the Apple Silicon workaround until the upstream 16 KB page size bug is fixed, and note the first-run Xvfb issue.
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
test.yml+release.ymlinto oneci.yml(check → build → test → publish). Tests always run; publish gated onmainpushes/dispatch or scheduled runs with a changed LTspice MSI ETag.arm64-linux(ubuntu-24.04-arm + QEMU binfmt) to the test matrix. Apple Silicon was attempted and dropped — GitHub's M-series runners don't support nested virtualization so Docker can't run there.test.sh: adds--platform linux/amd64and replaces the poll-log-and-kill logic withtimeout 120 wine …, so LTspice isn't killed mid-simulation under QEMU.Dockerfile: adds aWINE_VERSIONbuild arg to pin Wine packages to an exact version (enables amacos-latesttag on Wine 9.0).README: warns about the Apple Silicon 16 KB-page Wine abort, references upstream winehq #58084, and points users atmacos-latestas the workaround. Also notes the first-run Xvfb hiccup under X11 forwarding.Tracking
Test plan
amd64-linuxCI passesarm64-linuxCI passes./test.shpasses locally on Apple Silicon against themacos-latest(Wine 9.0) tag./test.shstill fails on Apple Silicon against thelatest(Wine 11.0) tag — documented upstream bug, no regression