Skip to content

Commit 2b50c07

Browse files
committed
blastdns: build cp314t but skip installing it
Fixes PR #3250's cp314t failure. The wheel itself builds and passes the wheel-content check; it is the install step that dies, source-building blastdns' runtime dependency orjson: "orjson v3.13.0 does not support free-threaded Python". That is orjson's own build.rs gate (it bails unless ORJSON_BUILD_FREETHREADED is set), and orjson has never published a free-threaded wheel for any platform across all of its releases, 3.13.0 being the newest. blastdns' __init__ imports orjson unconditionally, so the cp314t wheel can't be installed and imported anywhere, not just here. Upstream still ships cp314-cp314t blastdns wheels, so keep building the entry and stop at the wheel-content check instead of attempting an install that can't succeed. Also correct the matrix comment: pydantic-core does publish cp314t wheels upstream, so its free-threaded gap is only a missing riscv64 build on this registry, not the reason cp314t can't be installed.
1 parent 654c4b8 commit 2b50c07

1 file changed

Lines changed: 14 additions & 6 deletions

File tree

‎.github/workflows/build-blastdns.yml‎

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,10 @@ jobs:
6565
# hits the same gap).
6666
python: ['cp39', 'cp310', 'cp311', 'cp312', 'cp313', 'cp314', 'cp314t']
6767
include:
68-
# pydantic>=2.12.4 (a runtime dependency) needs pydantic-core==2.41.5,
69-
# which this registry has only for cp310-cp314 (no cp39, and no
70-
# free-threaded build exists anywhere upstream either). Those two
71-
# legs still build and ship a wheel; they just can't exercise the
72-
# real test suite here, so they get a wheel-content check instead.
68+
# pydantic>=2.12.4 (a runtime dependency) needs pydantic-core, which
69+
# this registry has only for cp310-cp314. cp39 still builds and
70+
# ships a wheel; it just can't exercise the real test suite here,
71+
# so it gets an import check instead.
7372
- python: cp39
7473
test: smoke
7574
- python: cp310
@@ -82,8 +81,15 @@ jobs:
8281
test: full
8382
- python: cp314
8483
test: full
84+
# orjson>=3.11.4 (a runtime dependency, imported by blastdns'
85+
# __init__) has never published a free-threaded wheel for any
86+
# platform, and its build.rs refuses free-threaded Python unless
87+
# ORJSON_BUILD_FREETHREADED is set, so blastdns cannot be installed
88+
# under cp314t anywhere. Upstream still ships a cp314t wheel, so
89+
# build it and let "Check wheel contents" stand as the proof
90+
# (gotcha 149).
8591
- python: cp314t
86-
test: smoke
92+
test: none
8793

8894
env:
8995
BLASTDNS_VERSION: ${{ matrix.version }}
@@ -137,13 +143,15 @@ jobs:
137143
EOF
138144
139145
- name: Install Python
146+
if: matrix.test != 'none'
140147
uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
141148
with:
142149
python-version: ${{ steps.interp.outputs.value }}
143150
activate-environment: true
144151
enable-cache: false
145152

146153
- name: Install wheel
154+
if: matrix.test != 'none'
147155
env:
148156
# blastdns itself depends on orjson>=3.11.4 at runtime. PyPI lists
149157
# it sdist-only (no riscv64 wheel), so a plain --no-index install

0 commit comments

Comments
 (0)