Skip to content

docling-parse: add build-docling-parse.yml for riscv64 wheels - #757

Open
luhenry wants to merge 3 commits into
mainfrom
docling-parse
Open

docling-parse: add build-docling-parse.yml for riscv64 wheels#757
luhenry wants to merge 3 commits into
mainfrom
docling-parse

Conversation

@luhenry

@luhenry luhenry commented Aug 28, 2026

Copy link
Copy Markdown
Member

A pybind11 extension over a C++ PDF parser and renderer, built together with qpdf, FreeType, Blend2D, libjpeg-turbo, OpenJPEG, Little-CMS and PDFium's JBIG2 decoder. Upstream publishes no riscv64 wheel.

Mirrors upstream's wheels.yml.

Differs from upstream

  • Build requirements preinstalled without isolation - the pinned cmake<4 has no riscv64 wheel.
  • The build stages the vendored dependencies' licence files.

Matrix: cp312/cp313/cp314 - upstream publishes no free-threaded wheel.

Testing

  • runs upstream's unit suite; the regression suite needs a Hugging Face corpus download.
  • installs a Noto CJK face, as upstream's test runner does; the manylinux image ships no fonts.
  • skips the four Multiply blend tests - Blend2D's compositing JIT has no riscv64 backend and its reference pipeline drops that blend mode.

License: Wheel statically links qpdf (Apache-2.0), FreeType (FTL), Blend2D (Zlib), libjpeg-turbo (BSD/IJG), OpenJPEG (BSD-2), Little-CMS (MIT), PDFium JBIG2 (BSD-3), utfcpp (BSL-1.0), nlohmann/json (MIT), loguru (public domain) and cxxopts (MIT); upstream ships no licence text for them, so the build adds it.

Built on cp312; 141 passed, 1 skipped, 4 deselected.

luhenry and others added 3 commits August 28, 2026 10:07
Mirrors upstream's wheels.yml Linux job, narrowed to riscv64.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Blend2D generates its compositing pipelines with asmjit, which supports only
x86/x86_64/aarch64, so riscv64 falls back to the reference pipeline. That path
does not implement the Multiply blend mode: the fill paints nothing and the
backdrop shows through. Reproduced on aarch64 by forcing BLEND2D_NO_JIT=ON,
where the same four tests fail identically.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The manylinux image ships no fonts, so the CJK run test depends on whatever the
resolver happens to find: two interpreters drew .notdef boxes and self-skipped
while the third drew nothing and failed. Upstream's own test runner installs a
static Noto CJK face and pins it, which makes the test assert what it is for.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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