Hi All,
I had to work on this issue and found that the changes in the commit :
https://github.com/eclipse-platform/eclipse.platform.swt/commit/d8e3f297ffde54412d935db7dde31d276b58b635#diff-874667bd88035dc47251befdad240fb5cf39f7db50597060fe17c2ecb6082de5 has caused this issue. But this commit seems to be added intentionally making
the min version of GTK to 3.22. The crash occurs when we are right clicking (when trying to show a pop up menu) - getting gtk_menu_popup_at_pointer undefined symbol. Since this may not be present in gtk4. Earlier we used to have a separate handling if the
gtk version was less than 3.22. I tried to add the removed native call and changes in Menu.java, Device.java and Shell.java and the right click functionality is working fine now.
I had to build the .so files used for gtk.linux locally for this. When I was doing that I created the .so using
`eclipse.platform.swt\bundles\org.eclipse.swt\bin\library\build.sh -gtk3 install` command. The output .so files will be created using GTK3 binding (eg: libswt-pi3-gtk-4960r6.so ) and it will
not have the .so corresponding to GTK4 binding (expected as per the documentation).
* But will these .so files work for any platform (when the final product is installed) where the GTK version installed is GTK4. I am afraid that it will fail at some native calls for GTK4 (as I see
we have GTK4 native calls made from different UI java classes).
* When I checked the latest eclipse platform, it also contains only the "libswt-pi3-gtk-4960r6.so" (and no libswt-pi4-gtk-4960r6.so) in org.eclipse.swt.gtk.linux.x86_64.jar. So I just wanted to confirm
during eclipse build also we are using -gtk3 and e haven't moved to gtk4 still. Please correct me if I am wrong at some point.
Thanks,
Vishnu
From: Vishnu Sarath
Sent: Thursday, June 1, 2023 11:50 AM
To: platform-dev@xxxxxxxxxxx; mistria@xxxxxxxxxx
Subject: RE: [platform-dev] Eclipse Platform Build
Thanks @mistria@xxxxxxxxxx
for the detailed mail. I was trying out the things mentioned.
Please see the below steps I tried:
- Setup a Fedora38 VM.
- We suspect this commit
https://github.com/eclipse-platform/eclipse.platform.swt/commit/d8e3f297ffde54412d935db7dde31d276b58b635#diff-874667bd88035dc47251befdad240fb5cf39f7db50597060fe17c2ecb6082de5 (which was done to make 3.22 GTK version as minimum), as the cause of the crash
issue we are seeing (not sure, need to confirm). The crash occurs when we are right clicking (when trying to show a pop up menu) - getting
gtk_menu_popup_at_pointer undefined symbol. Since this may not be present in gtk4. Earlier we used to have a separate handling if the gtk version was less than 3.22. I tried to add the removed native call and changes in Menu.java.
And created the .so files with building in Fedora38 VM (Glibc 2.37).
- But when I am using this .so files in the product and trying to launch the product in SUSE12 SP5, the launch itself is failing. When I tried find the root
cause (adding some logs) I got the below error:
/home/testuser/Downloads/testProduct/testProduct -linux.gtk.x86_64/configuration/org.eclipse.osgi/277/0/.cp/libswt-pi3-gtk-4960r6.so: /lib64/libc.so.6: version `GLIBC_2.34'
not found (required by /home/ testuser/Downloads/ testProduct / testProduct -linux.gtk.x86_64/configuration/org.eclipse.osgi/277/0/.cp/libswt-pi3-gtk-4960r6.so)
It’s expecting Glibc version above 2.34 while the SUSE12 is having 2.22 by default.
I am a bit new to this, so could someone please guide me on how to fix this. Is this issue because I am using a wrong platform (with higher version of Glibc 2.37 for building). What is the ideal
platform which we are using to generate swt .so files for linux gtk.
Thanks,
Vishnu
The version of SWT was bumped by +0.1.0 during last cycle, which means it has new APIs and some bundles are probably consuming those new API; so by auditing the version, it seems like the combination you wish to achieve (latest platform
with old SWT) is then not possible.
With the link above and good knowledge of Maven, Tycho and PDE, you may be able to hack something to enforce another locally built version of SWT, but overall it will be annoying and difficult for questionable value. If you can make a PR
that fixes
https://github.com/eclipse-platform/eclipse.platform/issues/212 while still working with supported environments, there are chances that it get merged and than part of the official build. This is IMO the most profitable path forward, although it's not certain
it can work.
Note that if you're stuck in an environment that is not supported anymore, you may consider alternative distributions of Eclipse IDE, such as Flatpak one; with such container-like installations, most libs -including GTK- are supposed to
be included in a compatible way.
https://flathub.org/apps/org.eclipse.Java .