+ notes: 'PR #2653 opened (draft); CI running. 9 Linux wheels upstream (abi: cp311,cp312,cp313,cp314,pp311); no riscv64 on PyPI or pypi.riseproject.dev. Feasible: pyFFTW vendors no FFTW source, it dynamically links the system FFTW3 (upstream before-all is `yum install -y fftw-devel` on manylinux_2_28) and auditwheel vendors libfftw3/libfftw3f/libfftw3l plus their _omp variants and libgomp into pyfftw.libs/ (verified in upstream''s aarch64 wheel). Rocky 10 riscv64 ships the whole fftw* family in appstream (gotcha 401; cvxopt already published against it), so upstream''s before-all works unchanged. Only arch-specific code is include/cpu.h''s x86 cpuid SIMD-alignment probe, which falls back to 4-byte alignment on other arches. Licensing: upstream wheels bundle GPL-2.0-or-later FFTW with only pyFFTW''s BSD LICENSE.txt; the PEP 639 `license-files = ["LICENSE.txt"]` has no default glob (gotcha 105), so one patch widens it to `LICENSE*` and before-all stages /usr/share/licenses/fftw-libs-double/COPYING as LICENSE.fftw (verified locally via uv build --sdist: License-File lists both). The patch dirties the setuptools_scm tree (locally reproduced 0.15.2.dev0+g7a82ae0da.d...), so SETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYFFTW pins it (gotcha 31). gpl_sources job collects gcc + fftw srpms, as in build-cvxopt.yml. Testing is upstream''s own pyproject test-command (pytest --import-mode=append {project}, test-requires pytest scipy dask packaging); upstream skips tests on aarch64 for 21 unexplained failures (pyFFTW/pyFFTW#326), which may also show on riscv64 (128-bit software long double like aarch64) - next step is triaging the first build_wheels run. Worktree .claude/worktrees/pyfftw, branch pyfftw.'
0 commit comments