notes: 'PR #2184 draft, CI green: 4 manylinux_2_39_riscv64 wheels (cp312/cp313/cp314/cp314t, ~7.1 MB each, 1h06-1h12 per leg on the 4-core riscv runner), publish dry-run clean. SDK 4.x does NOT wrap libcouchbase/LCB - it wraps couchbase-cxx-client (C++17), vendored as a git submodule, so nothing needs a system package or a prebuilt binary. The sdist also ships deps/couchbase-cxx-cache, the CPM cache of asio 1.34.2, BoringSSL, snappy 1.2.2, spdlog 1.15.0, taocpp/json 1.0.0-beta.14, llhttp 9.3.0, GSL 4.0.0 and hdr_histogram plus the Mozilla CA bundle, so the riscv container fetches nothing: the sdist job runs upstream''s own PYCBC_SET_CPM_CACHE=ON configure_ext on ubuntu-latest and the riscv job extracts, patches and builds that tarball. TWO riscv64-only blockers, both patched: (1) taocpp/json vendors Google double-conversion whose CORRECT_DOUBLE_OPERATIONS arch list falls through to ''#error Target architecture was not detected as supported by Double-Conversion'' - fixed upstream on taocpp/json main in 91a480f (2026-09-01, after beta.14, in no tag yet), backported; (2) -Werror=cast-align on core/io/mcbp_session.cxx:141, since GCC emits -Wcast-align only on strict-alignment targets so upstream''s x86_64/aarch64 CI never sees it - demoted with -Wno-error=cast-align in the core''s own CompilerWarnings.cmake, matching the four -Wno-error= entries it already carries for asio. Patches apply to the extracted sdist, not the checkout: git apply refuses a path inside the couchbase-cxx-client submodule, and the other target only exists once configure_ext has run. Everything else is clean: no arch branches in the cxx-client CMake, the vendored BoringSSL defines OPENSSL_RISCV64 in target.h and every generated .S is self-guarded on OPENSSL_X86_64/OPENSSL_AARCH64 so riscv64 assembles them to nothing and uses the portable C (the wheel reports openssl_runtime=BoringSSL, so the static lib really is linked), snappy''s SIMD probes all fail closed to scalar, and grep ''#error'' over the whole vendored tree returns exactly one hit (the one patched). CMake 4.4 in the image needs CMAKE_POLICY_VERSION_MINIMUM=3.5 for the vendored GSL''s cmake_minimum_required(VERSION 3.1.3...3.16). Python closure is just typing-extensions (py3-none-any, only for <3.13). Built with PYCBC_USE_OPENSSL=OFF (static BoringSSL) like upstream''s own wheels. Upstream''s suite needs a live Couchbase Server (no riscv64 build; its gocaves mock ships no riscv64 binary either) and the sdist omits the harness, so the wheel gets a functional smoke test: real .so, C++ core 1.3.2 + BoringSSL, and a bootstrap to an unroutable address surfacing as CouchbaseException. New gotchas 546/547/548.'
0 commit comments