-
Notifications
You must be signed in to change notification settings - Fork 14
Wheel Build Mechanism
This page explains how wheels are built for ManimPango so that it works on major Operating Systems, including Windows, macOS, GNU/Linux. Wheel build mechanism uses cibuildwheel, and build on the infrastructure provided graciously by Github Action.
Outdated, wheels are removed now. See https://github.com/ManimCommunity/ManimPango/issues/27
Wheels for Linux are built after every commit, using Github Actions on manylinux2014
(shouldn't it be manylinux2010?) docker image, for both the arch's x86_64
as well as i686
. System libraries aren't used, instead, Pango and its dependencies are compiled from source using Autotools, Meson and Ninja. See this file for more info.
Finally, it is tested in the classic docker image provided by python.
- Compile for ARM targets using Travis or local infrastructure. Will anyone use it? Is it worth spending time on that?
- Use Caching on Github Actions for Pango binaries.
- Try building a more recent version of Pango. For now, it is
v1.44.7
. - Try making the build compatible with manylinux2010.
Wheels for windows are build using Github Action's windows-2016
build image which contains Visual Studio 2017.
Building Pango and Cairo on Windows takes a lot of time and requires lots of configurations, so it is in another repo located at https://github.com/naveen521kk/pango-build. The script in download_dlls.py
downloads corresponding build(either 32-bit or 64-bit) from that repository. Also, the shared libraries(DLL files) are named as CORE_MANIM_*.dll
where *
is the name of the library. This is done so as to avoid Dll_Hell
Pkg-config is required for building ManimPango, and that isn't easily compilable without using msys2 toolchain, so a fork of it (work similar and compiles on Windows), is used called pkgconf is used. It is built each time before starting building wheels. See this for more information.
Finally, the wheels are built and then tested in a venv.
- Test in a docker image. See this from scikit-learn
- Use caching from
pkg-config
builds.
[TODO]