Skip to content

ci: cross-build macOS x86_64 on Apple Silicon; drop Windows#147

Merged
rahlk merged 1 commit into
146-package-codeanalyzer-java-as-a-pypi-distribution-with-pypi-releaseymlfrom
fix/pypi-release-macos-x86-drop-windows
Jun 8, 2026
Merged

ci: cross-build macOS x86_64 on Apple Silicon; drop Windows#147
rahlk merged 1 commit into
146-package-codeanalyzer-java-as-a-pypi-distribution-with-pypi-releaseymlfrom
fix/pypi-release-macos-x86-drop-windows

Conversation

@rahlk

@rahlk rahlk commented Jun 8, 2026

Copy link
Copy Markdown
Collaborator

Why

The v2.3.7 PyPI Release run hung for ~54 min and had to be cancelled. Two problems:

  1. macos-x86_64 stuck queued forever — it targeted runs-on: macos-13, the Intel hosted runner image GitHub has retired. No runner is ever assigned, so the job (and the whole run) never completes.
  2. windows-x86_64 build failedhatch_build.py looks for codeanalyzer, but GraalVM emits codeanalyzer.exe on Windows:
    RuntimeError: CODEANALYZER_NATIVE_BINARY is set to '.../codeanalyzer' but no file exists there.
    

(The musllinux-* legs also failed at musl-toolchain setup, but those are experimental: true/continue-on-error and out of scope here.)

What

  • macOS x86_64 → cross-build on Apple Silicon. Retarget the leg to macos-14, install an x86_64 GraalVM by hand, and run native-image under Rosetta 2 (arch -x86_64). The x86_64 toolchain emits an x86_64 binary + x86_64 jmods. GraalVM native-image has no true arm64→x86_64 cross-target, so Rosetta is the supported path.
  • Drop Windows entirely — removes the windows-x86_64 matrix leg, the MSVC setup step, and the now-unused .exe binary fallback.

Notes

  • The arm64 leg keeps using graalvm/setup-graalvm; the GraalVM step is now gated to runner.os == 'macOS' && matrix.rosetta != true.
  • Smoke test of the x86_64 wheel runs the binary via Rosetta on the arm64 host.
  • After merge, re-tagging (e.g. v2.3.8) will exercise the full publish path. The original v2.3.7 run was cancelled.

🤖 Generated with Claude Code

GitHub retired the Intel macos-13 hosted runners, so the macos-x86_64
leg sat queued forever and hung the whole release run. Rebuild it on a
macos-14 (Apple Silicon) runner: install an x86_64 GraalVM and run
native-image under Rosetta 2, which emits an x86_64 binary and x86_64
jmods (native-image has no true cross-target).

Drop the Windows wheel entirely. Its build also failed (hatch_build.py
looked for 'codeanalyzer' but GraalVM emits 'codeanalyzer.exe' on
Windows), and Windows native-image support isn't worth maintaining here.
Removes the windows matrix leg, the MSVC setup step, and the now-unused
.exe binary fallback.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@rahlk rahlk merged commit 0c5e5e9 into 146-package-codeanalyzer-java-as-a-pypi-distribution-with-pypi-releaseyml Jun 8, 2026
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