Repository navigation
Conversation
Ports pyboolector 3.2.4.19342042739, Cython bindings around the Boolector
SMT solver (MIT), statically linking the bundled CaDiCaL and Lingeling SAT
backends (both MIT, both plain portable C/C++ with no SIMD/ASM; GMP is off
by default). Drives upstream's own pypi/build.sh (the PyPi_Linux_x86_64
job's recipe) inside the riscv64 manylinux image instead of x86_64's.
One patch: pypi/build.sh resolves /opt/python/${py}-* by globbing, which
is ambiguous on this image once a free-threaded interpreter shares the
cp314 prefix; match the exact directory instead (cp314t is dropped from
the matrix for the same reason).
…mum_required btor2tools (fetched fresh by boolector's contrib/setup-btor2tools.sh during the build) declares cmake_minimum_required(VERSION 3.3), which CMake 4 (shipped in manylinux_2_39_riscv64) refuses outright: "Compatibility with CMake < 3.5 has been removed". This failed cp312 and cp313 identically, a few minutes into the "Build wheel" step. Since the failing cmake invocation is inside btor2tools' own configure.sh, not a line we control to add -DCMAKE_POLICY_VERSION_MINIMUM to, set it as an environment variable on the docker run instead (gotcha 257) so it reaches that cmake call anyway.
cp312/cp313 riscv64 build failure: root cause + fixRoot cause: Both Traced this to Fix: Set cp314 remains Pushed to the |
pyboolector3.2.4.19342042739Cython bindings around the Boolector SMT solver, statically linking the bundled CaDiCaL and Lingeling SAT backends (both MIT, plain portable C/C++, GMP off by default). Upstream publishes no riscv64 wheel.
Mirrors the
PyPi_Linux_x86_64job of upstream's ownpypi/azure-pipelines-pypi.yml, which drivespypi/build.shinside a manylinux container, swapped to the riscv64 image.Differs from upstream
pypi/build.sh- its/opt/python/${py}-*glob is ambiguous once a free-threaded interpreter shares thecp314prefix on this image.Matrix: cp312/cp313/cp314, no cp314t - the patched script needs an exact
cp314-cp314tdirectory it has no slot for; upstream itself has never shipped a Linux cp314 wheel either.Testing
examples/api/python/quickstart.py, which asserts, callsSat()and prints a model.License: OK, all MIT (boolector, CaDiCaL, Lingeling, Btor2Tools); no GPL anywhere in the build.
Patches
0001-exact-match-interpreter-dir.patch- Inappropriate [riscv64 image's split cp314/cp314t layout]. Without it,lsreturns two paths forcp314and the build aborts; reproduces on any arch with both interpreters under one manylinux prefix.Not locally build-validated (sandboxed dev environment has no native toolchain/docker to rehearse the compile); only patch format and dependency resolution checked locally.