Hi,

while packaging GTK 4.19.2 with the GLES2 patchset from my GitHub fork, I 
ran into a file list error, which made me stumble upon this upstream GTK 
commit:
https://github.com/GNOME/gtk/commit/e8694e0e7f71aa2e1a3ac4299ab675170a051145

(I am linking to the GitHub mirror because the GNOME GitLab has Anubis 
configured in such a way that it does not work at all in my browser, unlike 
all the other sites running Anubis that I have run into. The commit is an 
upstream commit from GNOME GitLab.)

Do not let the wording "Let …" in the commit message fool you. There is no 
option there, the backends are now ALWAYS static rather than modules. So 
"Force …" would be more accurate.

What this means is that any GTK application in Fedora will now always load 
GStreamer and CUPS libraries on startup, no matter whether it actually does 
any media playback/capture and/or any printing. And worse, if multiple 
backends are enabled, they will ALL be statically built in and hence loaded 
on startup along with any libraries they depend on. (E.g., the "file" 
printing backend is also built in now, though that one at least does not 
drag in any additional external libraries.) This unnecessary linking of 
large libraries (such as GStreamer and CUPS) means a huge waste of RAM and 
an increased potential for subtle bugs such as symbol conflicts. All this 
just because Android does not or poorly support dlopen, an Android-specific 
issue that should not affect us.

The way Qt handles this is that ALL plugins can OPTIONALLY be statically 
compiled in, which is done on Android and iOS, and sometimes on macOS, but 
most definitely not in GNU/Linux distribution packages. Why has GTK decided 
to hardcode the static linking instead of either making it an option for the 
packager or deciding it automatically based on the target (Android = static, 
GNU/Linux = dynamic)? IMHO, it is not acceptable.

I could revert the offending commit in my fork, but that would not help all 
the users using the stock Fedora GTK, and it is also not what the fork is 
supposed to be for.

        Kevin Kofler

-- 
_______________________________________________
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org
Do not reply to spam, report it: 
https://pagure.io/fedora-infrastructure/new_issue

Reply via email to