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_sync-autobahn-zlmdb.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 project's AI_POLICY.md when creating code, documentation etc. for this pull request.

Submitted by: @oberstet
Date: 2025-12-13
Related issue(s): #1821
Branch: oberstet:sync-autobahn-zlmdb
2 changes: 1 addition & 1 deletion .cicd
260 changes: 260 additions & 0 deletions .github/workflows/README.md

Large diffs are not rendered by default.

32 changes: 16 additions & 16 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ jobs:

// Query artifacts from wheels-docker workflow
const wheelsDockerRunId = latestRuns['wheels-docker']?.id;
core.setOutput('artifact_manylinux_x86_64', await findArtifact(wheelsDockerRunId, 'artifacts-manylinux_2_34_x86_64'));
core.setOutput('artifact_manylinux_x86_64', await findArtifact(wheelsDockerRunId, 'artifacts-manylinux_2_28_x86_64'));

// Query artifacts from wheels-arm64 workflow
const wheelsArm64RunId = latestRuns['wheels-arm64']?.id;
Expand Down Expand Up @@ -813,20 +813,20 @@ jobs:
mode: strict
keep-metadata: true # Keep CHECKSUMS for user verification
targets: |
cpy311-linux-x86_64-manylinux_2_34
cpy311-linux-x86_64-manylinux_2_28
cpy311-linux-aarch64-manylinux_2_28
cpy311-win-amd64
cpy312-linux-x86_64-manylinux_2_34
cpy312-linux-x86_64-manylinux_2_28
cpy312-win-amd64
cpy313-macos-arm64
cpy313-linux-x86_64-manylinux_2_34
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_34
cpy314-linux-x86_64-manylinux_2_28
cpy314-win-amd64
pypy311-macos-arm64
pypy311-linux-x86_64-manylinux_2_34
pypy311-linux-x86_64-manylinux_2_28
pypy311-linux-aarch64-manylinux_2_17
pypy311-win-amd64
source
Expand Down Expand Up @@ -1642,20 +1642,20 @@ jobs:
mode: strict
keep-metadata: true # Keep CHECKSUMS for user verification
targets: |
cpy311-linux-x86_64-manylinux_2_34
cpy311-linux-x86_64-manylinux_2_28
cpy311-linux-aarch64-manylinux_2_28
cpy311-win-amd64
cpy312-linux-x86_64-manylinux_2_34
cpy312-linux-x86_64-manylinux_2_28
cpy312-win-amd64
cpy313-macos-arm64
cpy313-linux-x86_64-manylinux_2_34
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_34
cpy314-linux-x86_64-manylinux_2_28
cpy314-win-amd64
pypy311-macos-arm64
pypy311-linux-x86_64-manylinux_2_34
pypy311-linux-x86_64-manylinux_2_28
pypy311-linux-aarch64-manylinux_2_17
pypy311-win-amd64
source
Expand Down Expand Up @@ -2262,20 +2262,20 @@ jobs:
mode: strict
# keep-metadata: false (default - removes CHECKSUMS for PyPI)
targets: |
cpy311-linux-x86_64-manylinux_2_34
cpy311-linux-x86_64-manylinux_2_28
cpy311-linux-aarch64-manylinux_2_28
cpy311-win-amd64
cpy312-linux-x86_64-manylinux_2_34
cpy312-linux-x86_64-manylinux_2_28
cpy312-win-amd64
cpy313-macos-arm64
cpy313-linux-x86_64-manylinux_2_34
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_34
cpy314-linux-x86_64-manylinux_2_28
cpy314-win-amd64
pypy311-macos-arm64
pypy311-linux-x86_64-manylinux_2_34
pypy311-linux-x86_64-manylinux_2_28
pypy311-linux-aarch64-manylinux_2_17
pypy311-win-amd64
source
Expand Down
8 changes: 6 additions & 2 deletions .github/workflows/wheels-arm64.yml
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,9 @@ jobs:
if: matrix.target.build_type == 'custom'
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
# CFFI and flatc compilation under QEMU ARM64 emulation is very slow
# Builds can take 45+ minutes due to emulation overhead
timeout_minutes: 60
max_attempts: 3
retry_on: error
warning_on_retry: true
Expand All @@ -153,7 +155,9 @@ jobs:
- name: Build ARM64 wheels with NVX extension (with retry for QEMU flakiness)
uses: nick-fields/retry@v3
with:
timeout_minutes: 15
# CFFI and flatc compilation under QEMU ARM64 emulation is very slow
# Builds can take 45+ minutes due to emulation overhead
timeout_minutes: 60
max_attempts: 3
retry_on: error
warning_on_retry: true
Expand Down
35 changes: 9 additions & 26 deletions .github/workflows/wheels-docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,22 +45,14 @@ jobs:
fail-fast: false
matrix:
target:
# manylinux_2_34 (glibc 2.34+) - PEP 600 compliant for modern Linux
# manylinux_2_28 (glibc 2.28+) - PEP 600 compliant, wide compatibility
# IMPORTANT: manylinux_2_28 uses baseline x86_64 ISA level (no SSE4.2/POPCNT)
# which is required for auditwheel to repair binaries like flatc.
# manylinux_2_34 uses x86_64_v2 which causes auditwheel failures.
# Matches zlmdb which also uses manylinux_2_28.
# see: https://github.com/pypa/manylinux
- name: "manylinux_2_34_x86_64"
base_image: "quay.io/pypa/manylinux_2_34_x86_64"

# Future manylinux images can be added here:
# - name: "manylinux_2_34_aarch64"
# base_image: "quay.io/pypa/manylinux_2_34_aarch64"

# Deactivated for now - focusing on standard manylinux wheels:
# - name: "debian12-amd64"
# base_image: "debian:12"
# - name: "rocky9-amd64"
# base_image: "rockylinux:9"
# - name: "ubuntu2404-amd64"
# base_image: "ubuntu:24.04"
- name: "manylinux_2_28_x86_64"
base_image: "quay.io/pypa/manylinux_2_28_x86_64"

steps:
- name: Checkout code
Expand Down Expand Up @@ -197,22 +189,13 @@ jobs:
command -v auditwheel >/dev/null || { echo "auditwheel missing, aborting"; exit 1; }
mkdir -p wheelhouse

# Convert linux_x86_64 wheels to multi-platform tag (incl. manylinux_2_34_x86_64) using auditwheel
# Convert linux_x86_64 wheels to manylinux_2_28_x86_64 using auditwheel
echo ""
echo "==> Converting wheels to multi-platform tag (incl. manylinux_2_34_x86_64) format..."
echo "==> Converting wheels to manylinux_2_28_x86_64 format..."
for wheel in dist/*.whl; do
if [[ "$wheel" == *"linux_x86_64"* ]]; then
echo "Converting: $(basename $wheel)"

# show autodetected set of platform tags
auditwheel show "$wheel"

# fix/rename wheel based on autodetected platform tags and store in wheelhouse/
# -> auditwheel will encode all (!) supported tags into the wheel filename
# -> Python packaging ecosystem allows wheels to carry multiple platform tags
# -> pip will then pick the most specific tag that works for the current system
# -> so we do not need to manually set: --plat manylinux_2_34_x86_64 as in:
# auditwheel repair "$wheel" --plat manylinux_2_34_x86_64 -w wheelhouse/
auditwheel repair "$wheel" -w wheelhouse/
else
echo "Copying non-linux wheel: $(basename $wheel)"
Expand Down
9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,15 @@ node.key
src/autobahn/nvx/_nvx_*.c
src/_nvx_*.c

# Build artifact: flatc binary (compiled from deps/flatbuffers during wheel build)
src/autobahn/_flatc/bin/

# Build artifact: reflection.bfbs (generated from reflection.fbs during wheel build)
src/autobahn/flatbuffers/reflection.bfbs

# Build artifact: wamp.bfbs (generated from wamp.fbs during wheel build)
src/autobahn/wamp/flatbuffers/wamp.bfbs

.wheels
get-pip.py
docs/autoapi/
Expand Down
Loading