Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .audit/oberstet_fix_1848.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
- [ ] I did **not** use any AI-assistance tools to help create this pull request.
- [x] I **did** use AI-assistance tools to *help* create this pull request.
- [x] I have read, understood and followed the projects' [AI Policy](https://github.com/crossbario/autobahn-python/blob/main/AI_POLICY.md) when creating code, documentation etc. for this pull request.

Submitted by: @oberstet
Date: 2026-06-17
Related issue(s): #1848
Branch: oberstet:fix_1848
82 changes: 82 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,9 @@ jobs:
artifact_linux_no_nvx: ${{ steps.check.outputs.artifact_linux_no_nvx }}
artifact_manylinux_x86_64: ${{ steps.check.outputs.artifact_manylinux_x86_64 }}
artifact_arm64_cp311: ${{ steps.check.outputs.artifact_arm64_cp311 }}
artifact_arm64_cp312: ${{ steps.check.outputs.artifact_arm64_cp312 }}
artifact_arm64_cp313: ${{ steps.check.outputs.artifact_arm64_cp313 }}
artifact_arm64_cp314: ${{ steps.check.outputs.artifact_arm64_cp314 }}
artifact_arm64_pypy_bookworm: ${{ steps.check.outputs.artifact_arm64_pypy_bookworm }}
artifact_arm64_pypy_trixie: ${{ steps.check.outputs.artifact_arm64_pypy_trixie }}

Expand Down Expand Up @@ -142,7 +144,9 @@ jobs:
// Query artifacts from wheels-arm64 workflow
const wheelsArm64RunId = latestRuns['wheels-arm64']?.id;
core.setOutput('artifact_arm64_cp311', await findArtifact(wheelsArm64RunId, 'artifacts-arm64-cpython-3.11-manylinux_2_28_aarch64'));
core.setOutput('artifact_arm64_cp312', await findArtifact(wheelsArm64RunId, 'artifacts-arm64-cpython-3.12-manylinux_2_28_aarch64'));
core.setOutput('artifact_arm64_cp313', await findArtifact(wheelsArm64RunId, 'artifacts-arm64-cpython-3.13-manylinux_2_28_aarch64'));
core.setOutput('artifact_arm64_cp314', await findArtifact(wheelsArm64RunId, 'artifacts-arm64-cpython-3.14-manylinux_2_28_aarch64'));
core.setOutput('artifact_arm64_pypy_bookworm', await findArtifact(wheelsArm64RunId, 'artifacts-arm64-pypy-3.11-bookworm-manylinux_2_36_aarch64'));
core.setOutput('artifact_arm64_pypy_trixie', await findArtifact(wheelsArm64RunId, 'artifacts-arm64-pypy-3.11-trixie-manylinux_2_38_aarch64'));

Expand Down Expand Up @@ -422,6 +426,17 @@ jobs:
retry-delay: 30
continue-on-error: true

- name: Download and verify ARM64 CPython 3.12 artifacts with retry logic
uses: wamp-proto/wamp-cicd/actions/download-artifact-verified@main
with:
name: ${{ needs.check-all-workflows.outputs.artifact_arm64_cp312 }}
path: ${{ github.workspace }}/wheelhouse-arm64/
run-id: ${{ needs.check-all-workflows.outputs.wheels_arm64_run_id }}
github-token: ${{ secrets.GITHUB_TOKEN }}
max-attempts: 5
retry-delay: 30
continue-on-error: true

- name: Download and verify ARM64 CPython 3.13 artifacts with retry logic
uses: wamp-proto/wamp-cicd/actions/download-artifact-verified@main
with:
Expand All @@ -433,6 +448,17 @@ jobs:
retry-delay: 30
continue-on-error: true

- name: Download and verify ARM64 CPython 3.14 artifacts with retry logic
uses: wamp-proto/wamp-cicd/actions/download-artifact-verified@main
with:
name: ${{ needs.check-all-workflows.outputs.artifact_arm64_cp314 }}
path: ${{ github.workspace }}/wheelhouse-arm64/
run-id: ${{ needs.check-all-workflows.outputs.wheels_arm64_run_id }}
github-token: ${{ secrets.GITHUB_TOKEN }}
max-attempts: 5
retry-delay: 30
continue-on-error: true

- name: Download and verify ARM64 PyPy 3.11 Bookworm artifacts with retry logic
uses: wamp-proto/wamp-cicd/actions/download-artifact-verified@main
with:
Expand Down Expand Up @@ -813,17 +839,21 @@ jobs:
mode: strict
keep-metadata: true # Keep CHECKSUMS for user verification
targets: |
cpy311-macos-arm64
cpy311-linux-x86_64-manylinux_2_28
cpy311-linux-aarch64-manylinux_2_28
cpy311-win-amd64
cpy312-macos-arm64
cpy312-linux-x86_64-manylinux_2_28
cpy312-linux-aarch64-manylinux_2_28
cpy312-win-amd64
cpy313-macos-arm64
cpy313-linux-x86_64-manylinux_2_28
cpy313-linux-aarch64-manylinux_2_28
cpy313-win-amd64
cpy314-macos-arm64
cpy314-linux-x86_64-manylinux_2_28
cpy314-linux-aarch64-manylinux_2_28
cpy314-win-amd64
pypy311-macos-arm64
pypy311-linux-x86_64-manylinux_2_28
Expand Down Expand Up @@ -1251,6 +1281,17 @@ jobs:
retry-delay: 30
continue-on-error: true

- name: Download and verify ARM64 CPython 3.12 artifacts with retry logic
uses: wamp-proto/wamp-cicd/actions/download-artifact-verified@main
with:
name: ${{ needs.check-all-workflows.outputs.artifact_arm64_cp312 }}
path: ${{ github.workspace }}/wheelhouse-arm64/
run-id: ${{ needs.check-all-workflows.outputs.wheels_arm64_run_id }}
github-token: ${{ secrets.GITHUB_TOKEN }}
max-attempts: 5
retry-delay: 30
continue-on-error: true

- name: Download and verify ARM64 CPython 3.13 artifacts with retry logic
uses: wamp-proto/wamp-cicd/actions/download-artifact-verified@main
with:
Expand All @@ -1262,6 +1303,17 @@ jobs:
retry-delay: 30
continue-on-error: true

- name: Download and verify ARM64 CPython 3.14 artifacts with retry logic
uses: wamp-proto/wamp-cicd/actions/download-artifact-verified@main
with:
name: ${{ needs.check-all-workflows.outputs.artifact_arm64_cp314 }}
path: ${{ github.workspace }}/wheelhouse-arm64/
run-id: ${{ needs.check-all-workflows.outputs.wheels_arm64_run_id }}
github-token: ${{ secrets.GITHUB_TOKEN }}
max-attempts: 5
retry-delay: 30
continue-on-error: true

- name: Download and verify ARM64 PyPy 3.11 Bookworm artifacts with retry logic
uses: wamp-proto/wamp-cicd/actions/download-artifact-verified@main
with:
Expand Down Expand Up @@ -1642,17 +1694,21 @@ jobs:
mode: strict
keep-metadata: true # Keep CHECKSUMS for user verification
targets: |
cpy311-macos-arm64
cpy311-linux-x86_64-manylinux_2_28
cpy311-linux-aarch64-manylinux_2_28
cpy311-win-amd64
cpy312-macos-arm64
cpy312-linux-x86_64-manylinux_2_28
cpy312-linux-aarch64-manylinux_2_28
cpy312-win-amd64
cpy313-macos-arm64
cpy313-linux-x86_64-manylinux_2_28
cpy313-linux-aarch64-manylinux_2_28
cpy313-win-amd64
cpy314-macos-arm64
cpy314-linux-x86_64-manylinux_2_28
cpy314-linux-aarch64-manylinux_2_28
cpy314-win-amd64
pypy311-macos-arm64
pypy311-linux-x86_64-manylinux_2_28
Expand Down Expand Up @@ -2100,6 +2156,17 @@ jobs:
retry-delay: 30
continue-on-error: true

- name: Download and verify ARM64 CPython 3.12 artifacts with retry logic
uses: wamp-proto/wamp-cicd/actions/download-artifact-verified@main
with:
name: ${{ needs.check-all-workflows.outputs.artifact_arm64_cp312 }}
path: ${{ github.workspace }}/dist/
run-id: ${{ needs.check-all-workflows.outputs.wheels_arm64_run_id }}
github-token: ${{ secrets.GITHUB_TOKEN }}
max-attempts: 5
retry-delay: 30
continue-on-error: true

- name: Download and verify ARM64 CPython 3.13 artifacts with retry logic
uses: wamp-proto/wamp-cicd/actions/download-artifact-verified@main
with:
Expand All @@ -2111,6 +2178,17 @@ jobs:
retry-delay: 30
continue-on-error: true

- name: Download and verify ARM64 CPython 3.14 artifacts with retry logic
uses: wamp-proto/wamp-cicd/actions/download-artifact-verified@main
with:
name: ${{ needs.check-all-workflows.outputs.artifact_arm64_cp314 }}
path: ${{ github.workspace }}/dist/
run-id: ${{ needs.check-all-workflows.outputs.wheels_arm64_run_id }}
github-token: ${{ secrets.GITHUB_TOKEN }}
max-attempts: 5
retry-delay: 30
continue-on-error: true

- name: Download and verify ARM64 PyPy 3.11 Bookworm artifacts with retry logic
uses: wamp-proto/wamp-cicd/actions/download-artifact-verified@main
with:
Expand Down Expand Up @@ -2262,17 +2340,21 @@ jobs:
mode: strict
# keep-metadata: false (default - removes CHECKSUMS for PyPI)
targets: |
cpy311-macos-arm64
cpy311-linux-x86_64-manylinux_2_28
cpy311-linux-aarch64-manylinux_2_28
cpy311-win-amd64
cpy312-macos-arm64
cpy312-linux-x86_64-manylinux_2_28
cpy312-linux-aarch64-manylinux_2_28
cpy312-win-amd64
cpy313-macos-arm64
cpy313-linux-x86_64-manylinux_2_28
cpy313-linux-aarch64-manylinux_2_28
cpy313-win-amd64
cpy314-macos-arm64
cpy314-linux-x86_64-manylinux_2_28
cpy314-linux-aarch64-manylinux_2_28
cpy314-win-amd64
pypy311-macos-arm64
pypy311-linux-x86_64-manylinux_2_28
Expand Down
20 changes: 20 additions & 0 deletions .github/workflows/wheels-arm64.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,16 @@ jobs:
build_type: "official"
python_versions: "cpy311"

# CPython 3.12 - manylinux_2_28_aarch64 (glibc 2.28)
# Modern baseline (Debian 10+, Ubuntu 18.04+, RHEL 8+)
- name: "cpython-3.12-manylinux_2_28_aarch64"
base_image: "quay.io/pypa/manylinux_2_28_aarch64"
manylinux_tag: "manylinux_2_28_aarch64"
glibc_version: "2.28"
python_impl: "cpython"
build_type: "official"
python_versions: "cpy312"

# CPython 3.13 - manylinux_2_28_aarch64 (glibc 2.28)
# Modern baseline (Debian 10+, Ubuntu 18.04+, RHEL 8+)
- name: "cpython-3.13-manylinux_2_28_aarch64"
Expand All @@ -69,6 +79,16 @@ jobs:
build_type: "official"
python_versions: "cpy313"

# CPython 3.14 - manylinux_2_28_aarch64 (glibc 2.28)
# Modern baseline (Debian 10+, Ubuntu 18.04+, RHEL 8+)
- name: "cpython-3.14-manylinux_2_28_aarch64"
base_image: "quay.io/pypa/manylinux_2_28_aarch64"
manylinux_tag: "manylinux_2_28_aarch64"
glibc_version: "2.28"
python_impl: "cpython"
build_type: "official"
python_versions: "cpy314"

# ============================================================
# PyPy ARM64 wheels (using our custom manylinux images)
# ============================================================
Expand Down
2 changes: 2 additions & 0 deletions docs/changelog.rst
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ Changelog
* Fix NVX native-extension builds breaking under cross-compilation (e.g. Buildroot/Yocto for aarch64), where the cross toolchain rejected the host-only ``-march=native`` flag (``unknown value 'native' for '-march'``). The default architecture target is now the portable baseline for *all* build contexts (wheels, local source installs, and cross-compilation), with ``-march=native`` available opt-in via ``AUTOBAHN_ARCH_TARGET=native``. The target architecture is detected via ``sysconfig.get_platform()`` so the correct baseline is chosen when cross-compiling. Thanks to @jameshilliard for the original report and approach (#1834, #1835)
* Fail the ``just build-all`` recipe (non-zero exit) when any per-interpreter wheel build fails, naming the interpreter(s). Previously a failed build was silently swallowed, producing a green wheels job with a missing wheel that was only caught downstream by strict release fileset validation (#1859)
* Cap ``cbor2 < 6`` on PyPy/Windows only (via environment markers), keeping ``cbor2`` 6.x everywhere else. ``cbor2`` 6.x is Rust/pyo3-only with no PyPy/Windows wheel and no pure-Python fallback, so it cannot be installed on PyPy/Windows; the 5.x line ships a pure-Python wheel (and runs at near-native speed on PyPy). This unblocks building and installing autobahn on PyPy/Windows (#1859)
* Build and publish the missing CPython 3.12 and 3.14 ``manylinux_*_aarch64`` (ARM64) wheels. The per-version ARM64 build matrix (added in commit 3d856f5 to deduplicate wheels) only covered cp311 and cp313, so no cp312 aarch64 wheel was ever published (and cp314 was never added) - e.g. ``pip download autobahn --platform manylinux_2_34_aarch64`` for CPython 3.12 found no matching distribution. The strict release fileset manifest shared the same gap and so could not catch it; it now requires the cp312/cp314 aarch64 wheels (fail-closed). Thanks to @norrisjeremy for the report (#1848)
* Make the release fileset symmetric across all four platforms: every supported interpreter (cp311, cp312, cp313, cp314, pypy311) is now required on macOS/arm64, Linux/x86_64, Linux/aarch64, and Windows/amd64. The macOS job already built all interpreters via ``just build-all``, but the manifest only required cp313/cp314/pypy311, so the cp311/cp312 macOS wheels were built and then dropped as "extra" rather than published; they are now kept and required (#1848)

25.12.2
-------
Expand Down
Loading