Skip to content

M138 public#331

Merged
HinTak merged 114 commits intoskia-python:mainfrom
HinTak:m138-public
Jun 4, 2025
Merged

M138 public#331
HinTak merged 114 commits intoskia-python:mainfrom
HinTak:m138-public

Conversation

@HinTak
Copy link
Copy Markdown
Collaborator

@HinTak HinTak commented May 29, 2025

Nothing interesting happened upstream between m136 and m138. Inclusive of #321 and part of #314 (the part that does native aarch64 linux builds). However, a few large additions (#322 , #329 ) and a small one (#324) .

@kyamagu I'll pull all of those into here when the separate CIs finishes, and let you know after I add a README.m138 . How do you feel about EGL ? That pull has bit-rotten slightly, so it needs an update before merging, but looks like wayland is coming and EGL will replace GLX / X11 at some point.

HinTak added 30 commits January 13, 2025 21:30
See
python/cpython#128161
"Defining iterator in a separate class no longer works in 3.13"

We have iterator for SkTextBlob defined by SkTextBlob::Iter(textblob),
which is the c++/pybind11 equivalent of the same situation.
Following the suggestion:
python/cpython#128161 (comment)

Also see actions/runner-images#11241

Fixes skia-python#295
Comments about recovering from auditwheel repair

changing the checksums to match current build
…L contexts with EGL

There are two ways of enabling EGL support on Linux AFAIK: `skia_use_egl=true` switches over
to X11 completely. Or we just add `GrGLInterfaces::MakeEGL` to GLX builds. This
is the 2nd approach. `skia_use_egl=true` is simpler, but modifies existing X11 behavior.

Fixes skia-python#287
gn is really written for clang. Later version of gn has this fixed, but won't
build on older g++ (12) for another problem. Sigh. Staying in this version
of gn for the main builds.

Fedora ships gn actually, though it is a lot more change to adapt to this.
On EL7, EGL/egl.h is in mesa-libEGL-devel instead of libglvnd-devel (later Redhat)

Missing GLES2/gl2.h - in mesa-libGLES-devel

It is not likely that the runtime (libgGL*) libraries are missing if the devel are installed, but you never know.
Include them also.
Move the EGL test before the others to avoid messing the others up
Native aarch64 linux CI hosts are fast enough. These workarounds are not
needed anymore.

Fixes skia-python#315
… available.

3.11/3.12/3.13 (and 3.14 dev) are apparently available via setup-python.

Another attempt at skia-python#318
Native aarch64 linux CI hosts are fast enough. These workarounds are not
needed anymore.

Fixes skia-python#315

Conflicts:
	.github/workflows/ci.yml
@HinTak
Copy link
Copy Markdown
Collaborator Author

HinTak commented May 30, 2025

Fedora / gnome / gtk4 is planning to go pure Wayland (without x11) in the next year or so.

@kyamagu
Copy link
Copy Markdown
Collaborator

kyamagu commented May 30, 2025

Sure, adding EGL support would be perfectly fine. As for the dependency complication, we might just skip bundling libEGL (auditwheel --exclude maybe) and explicitly document that users must have their libEGL installed in the system to use the EGL backend. Unless the wheel size goes too big, it seems acceptable to me.

@HinTak
Copy link
Copy Markdown
Collaborator Author

HinTak commented May 30, 2025

@kyamagu the change in size in quite minimal. The inconvenient thing is that libEGL is needed but not bundled, so linux users need to install it separately, whether they use it or not. I just checked my system , Xorg and Xwayland both depend on it, so this is likely a non-issue.

@HinTak
Copy link
Copy Markdown
Collaborator Author

HinTak commented May 31, 2025

@kyamagu ready to go, I think, except needing a few more tests on the newer runtime effect stuff, and canvas.drawTextOnPath . As usual, read the new readme.m* first. Sorry a fair amount of CI / build stuff is temporary .

@HinTak
Copy link
Copy Markdown
Collaborator Author

HinTak commented May 31, 2025

Added 20 new tests covering the new code, too.

@HinTak HinTak requested a review from kyamagu June 2, 2025 16:59
@HinTak
Copy link
Copy Markdown
Collaborator Author

HinTak commented Jun 2, 2025

@kyamagu Btw, I feel like having a v87 rc1 at this point too (if possible) - which adds windows arm64 support. Don't know how painful it is to do that yet - lack of native gn/ninja at the time, and older c++ code with newer compilers. The other stuff is the EGL change here: I have always said I don't want to add new functionality to v87, but it might be a good thing to keep the build machinery in sync one last time before we stop touching v87 completely. Anyway, I ll play with that a bit first on my repo as it is likely to be messy (lack of native gn/ninja & much newer compiler on old code).

@HinTak
Copy link
Copy Markdown
Collaborator Author

HinTak commented Jun 2, 2025

Hmm, I forgot v87 has some python 2 dependency too...

Copy link
Copy Markdown
Collaborator

@kyamagu kyamagu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should have the README updated to be explicit about the EGL dependency. Otherwise, it looks good to me.

Comment thread .github/workflows/ci.yml
Comment thread relnotes/README.m138.md
@HinTak HinTak requested a review from kyamagu June 3, 2025 15:01
@HinTak
Copy link
Copy Markdown
Collaborator Author

HinTak commented Jun 3, 2025

@kyamagu the addition of native build and arm64 windows was quite smooth with v87 - tagged it as v87.9rc0 https://github.com/kyamagu/skia-python/releases/tag/v87.9rc0 (I think helped by the fact that arm64 windows can run x86_64 binary, so nothing needed on old gn / ninja, unlike the aarch64 linux case) - I am working on rc1 which is +EGL . That turns out to be the more troublesome part as upstream only started to allow glx and egl going side by side around m122/m123, so it requires a bit more source-code level backport from m122/m123 back to m87. Anyway, it is a relatively small change nonetheless - renaming the "non-default" GL interfaces to something else while binding to python in the m13x way. I'll tidy that up and bundle that up and tag it as v87.9rc1. I guess basically arm64 windows people can upgrade to v87.9rc0 or rc1, linux people who wants egl can upgrade to 87.9rc1 . In both case it is people who want extra opting in to rc's. Then we have between rc1 and 87.9 (I would rather call it 87.10 just to avoid thinking whether 87.9 is before or after 87.9 - I think you had use "post1" etc for afterwards?) to decide whether to withdraw egl support on 87.x proper, the last of v87.

Copy link
Copy Markdown
Collaborator

@kyamagu kyamagu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks!

@kyamagu
Copy link
Copy Markdown
Collaborator

kyamagu commented Jun 4, 2025

Regarding the m87 branch, semantic versioning follows the packaging guideline. Post-release is meant for a minor fix for the release pipeline, e.g., a CI error fix. In the current EGL support context, this should be a minor revision update; 87.9 or 87.10.
https://packaging.python.org/en/latest/discussions/versioning/

@HinTak HinTak merged commit dc2981f into skia-python:main Jun 4, 2025
14 checks passed
@HinTak HinTak deleted the m138-public branch June 4, 2025 00: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.

2 participants