appimagetool don't configure `loaders.cache`
brunvonlope opened this issue · 5 comments
Similar to #282
When bundling GTK apps, appimagetool copy the loaders.cache file required by GdkPixbuf. But inside the file the paths aren't adapted to be relative to AppDir/usr/lib... which makes the system loaders be called by GdkPixbuf.
I suggest changing the paths inside the loaders.cache file when calling deploy
in a similar way that we do manually with GIMP: https://gitlab.gnome.org/GNOME/gimp/-/blob/master/build/linux/appimage/bundle-gimp-appimage.sh?ref_type=heads#L170. Otherwise, some apps can even not display the GUI at all.
Hello @brunvonlope, apparently you know a lot about the inner workings of GTK (well, at least compared to me, anyways). Would you be able to send a pull request? Thanks for your suggestion.
Hello @brunvonlope, apparently you know a lot about the inner workings of GTK (well, at least compared to me, anyways). Would you be able to send a pull request? Thanks for your suggestion.
I know almost nothing, specially about Go
We already have some code related to it:
go-appimage/src/appimagetool/appdirtool.go
Lines 625 to 675 in 6866993
Maybe it is not working properly?
Indeed it's not working:
ERROR whatToPatchAway: could not find directory that contains libpixbufloader-png.so
My system doesn't even have a libpixbufloader-png.so
anymore. PNG support is baked into gdk-pixbuf
itself, not implemented as a loader module.
This could either be fixed by assuming the following directory layout
loaders.cache
loaders/
*.so
so that the loaders can be found from the location of loaders.cache
, or searching other formats, e.g. svg
, webp
, until one succeeds.
Thanks @pbs3141. I'd appreciate code contributions from someone knowledgeable about Gtk here.
Has https://github.com/linuxdeploy/linuxdeploy-plugin-gtk/blob/3b67a1d1c1b0c8268f57f2bce40fe2d33d409cea/linuxdeploy-plugin-gtk.sh#L312-L332 the correct logic?