Skip to content

opentsne: add build-opentsne.yml for riscv64 wheels - #1789

Open
luhenry wants to merge 2 commits into
mainfrom
opentsne
Open

opentsne: add build-opentsne.yml for riscv64 wheels#1789
luhenry wants to merge 2 commits into
mainfrom
opentsne

Conversation

@luhenry

@luhenry luhenry commented Sep 11, 2026

Copy link
Copy Markdown
Member

Compiles openTSNE's Cython/C++ t-SNE extensions (Barnes-Hut quad-tree, KL divergence, vendored Annoy nearest-neighbour index), OpenMP-parallel. Upstream publishes no riscv64 wheel.

Mirrors upstream's azure-pipelines-release.yml Linux job. setup.py probes for FFTW3 headers at build time and falls back to the numpy FFT implementation when absent, same as upstream's own manylinux wheels (no FFTW3 installed there either).

Differs from upstream

  • Registry index added so numpy/scipy/scikit-learn resolve for riscv64, pinned to binary-only.

Testing

  • hnswlib/pynndescent not installed (no riscv64 wheels); their tests self-skip via unittest.skipIf.

License: wheel bundles libgomp (GPLv3 with the GCC Runtime Library Exception) from the build image, so its sources are published with the release; also vendors Spotify's annoy (Apache-2.0), whose licence text was missing from the wheel, now shipped via a patch.

Patches

  • 0001-ship-annoy-s-Apache-2.0-LICENSE-in-the-wheel-s-dist-.patch - To upstream [not filed]. Without it, the wheel carries no licence text for the vendored annoy extension. Reproduces off riscv64.

Built on cp312; 145 passed, 27 skipped.

luhenry added a commit that referenced this pull request Sep 11, 2026
Running pytest from {project}/tests puts the checked-out openTSNE/
source tree (no compiled .so) ahead of the installed wheel on
sys.path, so import openTSNE resolves to source and fails on
'from openTSNE import _tsne'. Stage tests/ + pyproject.toml into an
empty cwd instead (gotcha 25).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant