Skip to content

Comments

Build linux/macos arm64/aarch64 wheels on native runners#1308

Open
ddelange wants to merge 4 commits intoMagicStack:masterfrom
ddelange:native-builds
Open

Build linux/macos arm64/aarch64 wheels on native runners#1308
ddelange wants to merge 4 commits intoMagicStack:masterfrom
ddelange:native-builds

Conversation

@ddelange
Copy link
Contributor

@ddelange ddelange commented Feb 22, 2026

hi @elprans 👋

I did the initial implementation of the parallel release.yml in #954 and I'm providing some maintenance here :)

This PR contains the following commits:

  1. switch to linux arm64 native runner (blog post) and macos x86 native runner (blog post)
  2. fix CI rot related to setuptools deprecating pkg_resources
  3. various CI speedups
  4. fix CI rot related to cpython 3.9 on arm64 macos runners

the runner changes avoid emulation (qemu on linux, rosetta on macos), mainly for speedup (e.g. linux aarch64 wheel build is currently taking 30+ mins vs. 4 mins for x86). i left the setup-qemu step in place in case you want to add more wheel architectures for which no native runners exist

@ddelange ddelange force-pushed the native-builds branch 4 times, most recently from 05c8e87 to d22a029 Compare February 22, 2026 21:58
setuptools 82.0.0 removed pkg_resources, breaking the build.
Use packaging.requirements.Requirement instead, and switch the
Cython dependency string to PEP 508 format (no parentheses).
- Switch to official PyPA build frontend for sdist ref https://pypi.org/project/build/
- Cancel running jobs when a new commit is pushed to a PR ref https://stackoverflow.com/questions/66335225#comment133398800_72408109
- Switch from setup-python to setup-uv ref https://github.com/astral-sh/setup-uv
@ddelange ddelange force-pushed the native-builds branch 4 times, most recently from 5be2c72 to dafc5bb Compare February 22, 2026 22:26
Comment on lines +31 to +33
# github does not provide 3.9 cpython for arm64 runners
- python-version: "3.9"
os: macos-15
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fyi Python 3.9 is EOL since 31 Oct 2025, can consider dropping support

@ddelange ddelange force-pushed the native-builds branch 3 times, most recently from 2403b7b to 434ebc2 Compare February 23, 2026 08:50
ref https://github.com/MagicStack/asyncpg/actions/runs/22286259051/job/64465189709?pr=1308

failed with:

======================================================================
ERROR: test_tls_version (test_connect.TestSSLConnection)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/runner/work/asyncpg/asyncpg/asyncpg/_testbase/__init__.py", line 92, in wrapper
    self.loop.run_until_complete(coro)
  File "/Applications/Xcode_16.4.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/asyncio/base_events.py", line 642, in run_until_complete
    return future.result()
  File "/Users/runner/work/asyncpg/asyncpg/tests/test_connect.py", line 2024, in test_tls_version
    await self.connect(
  File "/Users/runner/work/asyncpg/asyncpg/asyncpg/connection.py", line 2443, in connect
    return await connect_utils._connect(
  File "/Users/runner/work/asyncpg/asyncpg/asyncpg/connect_utils.py", line 1209, in _connect
    addrs, params, config = _parse_connect_arguments(**kwargs)
  File "/Users/runner/work/asyncpg/asyncpg/asyncpg/connect_utils.py", line 893, in _parse_connect_arguments
    addrs, params = _parse_connect_dsn_and_args(
  File "/Users/runner/work/asyncpg/asyncpg/asyncpg/connect_utils.py", line 798, in _parse_connect_dsn_and_args
    ssl.minimum_version = _parse_tls_version(
  File "/Applications/Xcode_16.4.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/ssl.py", line 586, in minimum_version
    super(SSLContext, SSLContext).minimum_version.__set__(self, value)
ValueError: Unsupported protocol version 0x304
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