Skip to content

Document Apple Silicon limitation, add arm64-linux CI, consolidate workflows#8

Merged
aanas-sayed merged 11 commits intomainfrom
fix/wine-arm64-page-size
Apr 24, 2026
Merged

Document Apple Silicon limitation, add arm64-linux CI, consolidate workflows#8
aanas-sayed merged 11 commits intomainfrom
fix/wine-arm64-page-size

Conversation

@aanas-sayed
Copy link
Copy Markdown
Owner

Summary

  • Merges test.yml + release.yml into one ci.yml (check → build → test → publish). Tests always run; publish gated on main pushes/dispatch or scheduled runs with a changed LTspice MSI ETag.
  • Adds 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/amd64 and replaces the poll-log-and-kill logic with timeout 120 wine …, so LTspice isn't killed mid-simulation under QEMU.
  • Dockerfile: adds a WINE_VERSION build arg to pin Wine packages to an exact version (enables a macos-latest tag on Wine 9.0).
  • README: warns about the Apple Silicon 16 KB-page Wine abort, references upstream winehq #58084, and points users at macos-latest as the workaround. Also notes the first-run Xvfb hiccup under X11 forwarding.

Tracking

Test plan

  • amd64-linux CI passes
  • arm64-linux CI passes
  • ./test.sh passes locally on Apple Silicon against the macos-latest (Wine 9.0) tag
  • ./test.sh still fails on Apple Silicon against the latest (Wine 11.0) tag — documented upstream bug, no regression

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.
@aanas-sayed aanas-sayed merged commit 7e81759 into main Apr 24, 2026
10 checks passed
@aanas-sayed aanas-sayed deleted the fix/wine-arm64-page-size branch April 26, 2026 13:03
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.

1 participant