Skip to content

epam-indigo: Add version 1.46.0 - #3052

Draft
luhenry wants to merge 4 commits into
mainfrom
epam-indigo
Draft

luhenry wants to merge 4 commits into
mainfrom
epam-indigo

Conversation

@luhenry

@luhenry luhenry commented Oct 13, 2026 •

Copy link
Copy Markdown
Member

Compiles four C++ libraries (indigo, indigo-inchi, indigo-renderer, bingo-nosql) loaded via ctypes, not CPython extensions, so one py3-none wheel serves every interpreter - matching upstream's own wheel shape. Upstream publishes no riscv64 wheel.

Mirrors upstream's indigo-ci.yaml build steps, driven directly in the manylinux_riscv64 image instead of upstream's per-OS matrix.

Differs from upstream

  • Patches setup.py's hardcoded --plat-name list, which has no riscv64 case.
  • BUILD_STANDALONE (default on) builds cairo/freetype/libpng/pixman/zlib/rapidjson/lunasvg/tinyxml2 from the vendored sources rather than linking the image's own - same as upstream's own build, just narrowed to this one platform.

Matrix: single py3-none wheel, no per-interpreter matrix - matches upstream's own ctypes-loaded shape.

Testing: upstream's own api/python/tests unit suite, run against the installed wheel.

License: Apache-2.0. The wheel statically links cairo (LGPL-2.1-or-MPL-1.1), pixman (MIT), zlib (zlib), rapidjson (MIT), lunasvg (MIT), freetype (FTL/GPL-2.0), libpng, tinyxml2, InChI and object_threadsafe (all permissive); upstream's own wheel ships none of their licence text, so this build adds it.

No local rehearsal: disk was at single-digit GB free with other agents active; left the real build to CI's riscv64 runner.

The py3-none-<platform> wheel ships four C++ libraries loaded via
ctypes (not CPython extensions), so one wheel serves every
interpreter. Builds the libraries in the manylinux_riscv64 image with
BUILD_STANDALONE's vendored cairo/freetype/pixman/zlib/etc (no SIMD
gates in any of them), then patches setup.py's hardcoded --plat-name
list to add riscv64. Stages licence texts for every statically linked
third-party library, none of which ship in upstream's own wheel.
luhenry added a commit that referenced this pull request Oct 13, 2026
@luhenry
luhenry marked this pull request as draft October 14, 2026 11:35
third_party/cairo/CMakeLists.txt links the system freetype and fontconfig
(and hardcodes -I/usr/include/freetype2) on any non-Emscripten Unix build.
The riscv64 job only installed cmake, so the cairo build failed with
'fatal error: ft2build.h: No such file or directory'. Both packages ship
in Rocky's own repos on riscv64, no EPEL/CRB needed.

luhenry commented Oct 16, 2026 •

Copy link
Copy Markdown
Member Author

Root cause: the Build epam-indigo 1.46.0 py3-none-manylinux_riscv64 job failed during the native build with:

third_party/cairo/src/cairo-ft.h:46:10: fatal error: ft2build.h: No such file or directory

third_party/CMakeLists.txt only vendors/builds FreeType itself when EMSCRIPTEN is set; on every other Unix target (including this one) third_party/cairo/CMakeLists.txt links the system freetype/fontconfig and hardcodes -I/usr/include/freetype2. The job's "Install cmake" step only installed cmake, so neither header nor library was present on manylinux_2_39_riscv64.

Fix: install freetype-devel and fontconfig-devel alongside cmake in that step. Both ship in Rocky's own riscv64 repos (no EPEL/CRB needed), matching the same packages already used for this on build-cadquery-ocp-novtk.yml and build-aggdraw.yml.

Pushed to epam-indigo as efdea77.

@luhenry
luhenry marked this pull request as ready for review October 22, 2026 02:56
@luhenry
luhenry marked this pull request as draft October 22, 2026 02:58
@luhenry luhenry closed this Oct 22, 2026
@luhenry luhenry reopened this Oct 22, 2026
…ned Pillow

api/python/setup.py reads the platform with opt.split("=")[1], so
"--plat-name manylinux_2_39_riscv64" (space-separated) raised IndexError.
Use the --plat-name=<name> --python-tag=py3 form of upstream's own
api/python/CMakeLists.txt.

The smoke test pinned Pillow==10.3.0 from requirements_dev.txt, which
has no riscv64 wheel; its sdist build needs libjpeg headers the
manylinux image lacks. Install Pillow unpinned, as upstream's
test_indigo_python_* jobs do, with PIP_ONLY_BINARY=Pillow.

This branch has not been deployed

No deployments
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