+ notes: '18 Linux wheels upstream (abi: cp310,cp311,cp312,cp37,cp38,cp39); no riscv64 on PyPI or pypi.riseproject.dev. Ordinary sdist->bdist port, no blockers. gitlab.matrix.org is reachable from CI, but actions/checkout cannot use it, so both jobs git clone --depth 1 --branch <version> instead. The sdist comes from upstream own python/make_sdist.sh (preprocesses the public headers, vendors the libolm tree into libolm/, applies packaging.diff); the file list of the sdist it produces is identical to the released PyPI sdist. cibuildwheel then builds that extracted sdist on manylinux_2_39_riscv64. libolm crypto is portable C/C++11 - curve25519-donna (the 32-bit generic .c, not the __int128 c64 one), Brad Conte crypto-algorithms aes/sha256, ref10-derived ed25519 - with zero x86 intrinsics or asm; the only arch-specific code in the tree is doctest DOCTEST_BREAK_INTO_DEBUGGER, which falls back to raise(SIGTRAP) on non-x86 Linux. Two non-obvious points. (1) libolm CMakeLists declares cmake_minimum_required(VERSION 3.4), below CMake 4 floor, and olm_build.py shells out to a fixed cmake command line, so the fix is CMAKE_POLICY_VERSION_MINIMUM=3.5 in the environment (gotcha 257); reproduced and fixed locally against cmake 4.4.3. (2) setuptools cffi_modules hook executes olm_build.py - and so the whole libolm cmake build - even for python -m build --sdist, so the sdist job on ubuntu-latest needs the same variable. Tests are not in the sdist (MANIFEST.in ships libolm/tests, never python/tests), so the wheel job clones the tag and stages python/tests via CIBW_TEST_SOURCES (gotcha 104), with package-dir pointed at the extracted directory rather than the tarball (gotchas 251/281). Test deps pytest pytest-benchmark aspectlib, run with --benchmark-disable like upstream tox; 62 tests. musllinux dropped: upstream publishes none and the registry has no musl riscv64 cffi. One patch (licensing): make_sdist.sh never copies the repo LICENSE into the sdist, so the wheel shipped no licence text at all - patch copies it and names both it and libolm/lib/curve25519-donna/LICENSE.md in setup.cfg license_files, landing them in dist-info/licenses/. crypto-algorithms and ed25519 are public domain and need no notice. No gpl_sources job: the extension NEEDED set is only libstdc++.so.6 and libc.so.6, both manylinux-whitelisted, so auditwheel vendors nothing. Rehearsed end to end on x86: sdist from a fresh patched clone, wheel built on cp312/cp313/cp314/cp314t, 62/62 tests pass on cp311 and cp314t, licences present in the wheel. Note libolm is deprecated upstream (last commit 2024-08, successor vodozemac), which is why the patch is To upstream rather than Submitted. Worktree .claude/worktrees/python-olm, branch python-olm, PR #2169 (draft). Run 35597465076: setup, the sdist job (63s on ubuntu-latest) and all three pr-checks jobs green; the four riscv64 build legs have been sitting in status queued on the self-hosted pool for 4h50m with no runner pickup (pool saturated by other packages multi-hour builds), so they have not started, let alone failed. Next step is simply to read run 35597465076 again - no push is needed and none should be made, since a push restarts the run and loses the queue position. CI concluded all-green (13/13 checks, four riscv64 legs + sdist + publish dry-run all success, run 35597465076); PR #2169 marked ready for review.'
0 commit comments