- notes: 'Feasible but large; not attempted this session -- scoping only. Real source is NOT the standalone github.com/pybamm-team/pybammsolvers repo named in the old queue entry: that repo is archived ("code moved to PyBaMM monorepo", commit 0a957b1, PR #109) and frozen at v0.8.2. Versions 0.9.0+ are cut from github.com/pybamm-team/PyBaMM''s packages/pybammsolvers/ subdirectory, tagged pybammsolvers-v<ver> in that monorepo (confirmed: pybammsolvers-v0.9.1 = commit 79fb27f, pybammsolvers-v0.10.0/v0.11.0 also present) -- any port must clone PyBaMM and build from that subtree, using its reusable .github/workflows/_build_solver_wheels.yml as the template (not the archived repo''s dead CI). Real build: scikit-build-core + pybind11 C++ extension (idaklu.cpp -> pybind11_add_module). SUNDIALS (LLNL/sundials, git submodule, ENABLE_KLU/ENABLE_OPENMP/ENABLE_LAPACK) and SuiteSparse KLU+AMD+COLAMD+BTF (DrTimothyAldenDavis/SuiteSparse, git submodule) are both built from source at wheel-build time by install_KLU_Sundials.py -- not vcpkg on Linux (vcpkg is Windows-only per CMakeLists.txt''s own WIN32 guard) and not a separate dependency to port first; both are portable, architecture-generic CMake/Make C projects with no x86-only paths found. Upstream''s own manylinux job (build_manylinux_wheels in _build_solver_wheels.yml) needs only openblas-devel/lapack-devel (dnf, from CRB on the aarch64 leg) plus the submodule build -- openblas-devel/lapack-devel are already proven present in our manylinux_riscv64 image per casadi.yaml''s own port notes, so this specific prerequisite is not a new blocker. The real blocker for *this exact version* is CasADi version pinning: pyproject.toml pins casadi==3.7.2 exactly (both build-system.requires and project.dependencies, non-Windows path resolves libcasadi.so/headers from the installed Python casadi wheel), and CIBW_REPAIR_WHEEL_COMMAND_LINUX hardcodes `--exclude libcasadi.so.3.7`. Our registry only publishes casadi 3.8.0/3.8.1 (docs/packages/casadi.yaml) -- not 3.7.2 -- so a literal 0.9.1 port needs casadi==3.7.2 added as a riscv64 wheel first (a real but small sibling port: same upstream, same build recipe already proven, just an older tag). The cleaner path: pybammsolvers-v0.10.0 and v0.11.0 (same monorepo, confirmed via their pyproject.toml) pin casadi==3.8.1 -- exactly the version we already publish -- so porting 0.10.0/0.11.0 instead of the queue-assigned 0.9.1 avoids the casadi mismatch entirely and should be preferred unless 0.9.1 specifically is required downstream. Either way this is a substantial native build (two from-source C libraries plus a pinned-ABI compiled dependency, with the project''s own CMakeLists already doing GNU libstdc++ ABI probing via `nm` against libcasadi to match _GLIBCXX_USE_CXX11_ABI) comparable in scope to this repo''s own casadi.yaml port, which took multiple multi-hour CI cycles (PIC flags, wget-vs-curl, SWIG fork deviations) to land -- not attempted in this session per the task''s explicit scope-check instruction. Concrete next steps for whoever picks this up: (1) decide 0.9.1 (needs a casadi==3.7.2 sibling port first) vs 0.10.0/0.11.0 (reuses published casadi 3.8.1, recommended); (2) worktree from pybamm-team/PyBaMM at the chosen pybammsolvers-v<ver> tag, build-from-checkout (not the archived standalone repo, not the PyPI sdist -- scikit-build-core''s sdist excludes the submodule trees entirely per its own pyproject.toml comment); (3) mirror build_manylinux_wheels'' matrix, adding a riscv64 leg alongside its existing x86_64/aarch64 legs (CIBW_BEFORE_ALL_LINUX: dnf/yum openblas-devel+lapack-devel, then `python install_KLU_Sundials.py`), with CIBW_REPAIR_WHEEL_COMMAND_LINUX excluding the matching libcasadi.so.<major.minor> for whichever casadi version is targeted; (4) confirm the pytest suite under tests/ (test_integration.py, test_module.py, test_standalone_newton_solver.py, test_observe.py) needs only pybammsolvers + its dev extras, not a full PyBaMM install, before wiring CIBW_TEST_COMMAND. No worktree/branch opened yet -- this is read-only scoping (PyPI JSON for 0.9.1/0.9.0/0.10.0/0.11.0, the real sdist, the archived standalone repo, and a shallow clone of the pybamm-team/PyBaMM monorepo at the pybammsolvers-v0.9.1/v0.10.0/v0.11.0 tags).'
0 commit comments