Skip to content

Keep Intel Macs off a source build of cryptography - #79

Merged
parawanderer merged 1 commit into
mainfrom
fix/intel-cryptography-wheel
Aug 16, 2026
Merged

parawanderer merged 1 commit into
mainfrom
fix/intel-cryptography-wheel

Conversation

@parawanderer

Copy link
Copy Markdown
Owner

Follow-up to #78. That removed Homebrew's Python — file count in the bundle dropped from 352 to 239 — but the Intel build still demanded macOS 15, still set by libcrypto.3.dylib.

Cause

cryptography publishes macOS wheels for arm64 only from 49.0.0 onward. 48.0.0 is the last release with a universal2 wheel, and that one targets macOS 10.9.

So on Intel there was nothing to install and uv built it from source — 94 seconds of it in the log — linking against the runner's OpenSSL, which is Homebrew's and preinstalled on GitHub's macOS images. PyInstaller bundled that dylib, and its minimum macOS is baked in at Homebrew's build time.

arm64 never hit this: it has a wheel, its bundle contains no libcrypto at all, and its minimum is 12.0 set by protobuf.

Fix

A marker-scoped constraint, so only Intel macOS is held back and every other platform keeps the current release:

constraint-dependencies = [
    "cryptography<49 ; sys_platform == 'darwin' and platform_machine == 'x86_64'",
]

The lock now carries 48.0.1 with macosx_10_9_universal2 wheels and 50.0.0 with the arm64 ones.

Verified

Lock resolves, uv sync --frozen installs, 384 tests pass. This machine is arm64, so it takes the 50.0.0 branch — the Intel path can only be proved by CI. Run the workflow manually with exporter-v1.1.0 after merging.


Summary written by Claude Code.

The Intel build still demanded macOS 15 after the Homebrew Python was removed,
and the file setting it was still libcrypto.3.dylib. The cause is one version
boundary: cryptography publishes macOS wheels for arm64 only from 49.0.0 on,
so Intel had nothing to install and compiled it against the runner's OpenSSL -
Homebrew's, preinstalled on GitHub's images - which PyInstaller then bundled.

48.0.0 is the last release with a universal2 wheel, and it targets 10.9.
Constrained by marker so only darwin x86_64 is held back; the lock now carries
48.0.1 for that platform and 50.0.0 everywhere else.

Verified here only that the lock resolves, installs and passes the suite -
this machine is arm64, so it takes the 50.0.0 branch. The Intel path is CI's
to prove.
@parawanderer
parawanderer merged commit 9428fef into main Aug 16, 2026
4 checks passed
saamdotexe pushed a commit to saamdotexe/OpenTagViewer that referenced this pull request Oct 22, 2026
…graphy-wheel

Keep Intel Macs off a source build of cryptography
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