Skip to content

Fix Raqm licensing issue by building against SheenBiDi and simplify the build - #9926

Open
khaledhosny wants to merge 7 commits into
python-pillow:mainfrom
khaledhosny:raqm-sheenbidi
Open

Fix Raqm licensing issue by building against SheenBiDi and simplify the build#9926
khaledhosny wants to merge 7 commits into
python-pillow:mainfrom
khaledhosny:raqm-sheenbidi

Conversation

@khaledhosny

Copy link
Copy Markdown

Raqm was built in a special way because FriBiDi (a Raqm dependency) LGPL license. Raqm has since gained support for using Apache-2.0-licensed SheenBidi.

The build is now simplified to no longer require fribidi-shim and consequently vendored raqm. This also enabled raqm on iOS. See individual commits for more details.

@akx

akx commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Ah, I was actually just looking at doing this too!

This may have some implications for downstream packagers like Debian though.

@khaledhosny

Copy link
Copy Markdown
Author

This affects only binary wheels, distros can continue using FriBiDi.

Raqm was built in a special way because FriBiDi (a Raqm dependency) LGPL
license. Raqm has since gained support for using Apache-2.0-licensed
SheenBidi.

Raqm is configured with -Dsheenbidi=true. A winbuild/raqm.cmake is added
for Windows builds (Raqm upstream has no CMake support).

The extension still compiles the bundled Raqm copy, so nothing links
these libraries at the moment.
Use the dependency builds introduced in the previous commit. The whole
FriBiDi shim setup is not longer needed since Rqam is built against
SheenBidi.

This simplifies the setup greatly and drops the need for bundling Raqm
at all.

Raqm availability is now decided at compile time. The "fribidi" feature
is meaningless now, but instead of introducing a "sheenbidi" feature
(which we can not reliably detect when dynamic linking Raqm), it is now
deprecated and made an alias of "raqm" feature. The same goes for
"harfbuzz" feature.
Nothing links FriBiDi any more.
There are no licensing issues now with FriBiDi being replaced with
SheenBidi which is statically built as well.
The Linux runner now builds Raqm against SheenBidi like wheel sdo.  Raqm
with FriBiDi path is still covered by Homebrew’s libraqm on macOS and
the MSYS2 one on Windows.
The shipped copy carried a 2016 copyright line and an old address. Take the
text from the Raqm 0.11.0 release.
@khaledhosny

Copy link
Copy Markdown
Author

I think the windows failures are a corrupt file in the ci cache and don't seem to have a way to invalidate that cache, so a maintainer has to drop the bad cache entey.

@khaledhosny

Copy link
Copy Markdown
Author

I don’t know what to do the remaining failures, maybe flacky ci jobs?

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.

2 participants