linuxdeploy / linuxdeploy-plugin-gstreamer

Bundles GStreamer plugins into AppDirs. Experimental code, please expect issues! Help welcome!
3 stars 11 forks source link

gst-plugin-scanner looks libraries in wrong path #17

Open ksvert opened 1 year ago

ksvert commented 1 year ago

I built AppImage with the gstreamer plugin on Ubuntu 20.04 (and 22.04) by linuxdeploy: QMAKE=/usr/bin/qmake6 QML_SOURCES_PATHS=/home/ks/Projects/App/qml/ GSTREAMER_INCLUDE_BAD_PLUGINS="1" ./linuxdeploy-x86_64.AppImage --appdir App/ -e App/App -i App/App.png -d App/App.desktop --plugin qt --plugin gstreamer --output appimage

Log from Ubuntu 22.04: https://gist.github.com/ksvert/5f581352d7d17089ff8926eeb6c6c45f

When I run it on Opensuse Tumbleweed I get an error:

** (gst-plugin-scanner:2307): CRITICAL **: 13:11:40.676: Couldn't g_module_open libpython. Reason: /usr/lib/python3.10/config-3.10-x86_64-linux-gnu/libpython3.10.so: cannot open shared object file: No such file or directory

It looks like it searching for libpython in ubuntu specific location and can't find it because on opensuse it's in different place. It's searching there despite it copied libpython into usr/lib/ inside AppImage.

It seems that such path is hardcoded into libgstpython.so strings libgstpython.so | grep config-3.10

TheAssassin commented 1 year ago

You should provide a log, always.

libpython should be bundled, using a system library may cause issue. That said, this plugin is experimental, and especially in combination with libpython I'd expect bugs.

ksvert commented 1 year ago

I've added log to original post, sorry for forgetting it.

libpython is bundled but libgstpython.so that is located in /usr/lib/gstreamer-1.0/ (inside AppImage) has some function inside that looks for libpython3.10.so in that specific location (i think location is set during building gstreamer library for each distribution). It's not even link to library because ldd doesn't return this requirement.

This error occurs only if AppImage is built on system that has python3-gst-1.0 and gstreamer1.0-python3-plugin-loader installed, without them libgstpython.so isn't provided and gst-plugin-scanner doesn't look for python.