GNOME Bugzilla – Bug 444049
cacasink doesn't ask for libs
Last modified: 2007-06-06 07:52:07 UTC
When I write a simple test program using gstreamer, and then run it with GST_DEBUG='*:2', I get error messages from cacasink when the plugin is loaded because it can't find symbols from curses, slang, and X11. They're harmless, since I'm not using cacasink, but they're annoying enough that I'm now linking my app with -lcurses -lslang -lX11 just so that cacasink will find what it wants and shut up. It would be nice if it linked with them itself. Other information:
I don't get these with CVS. What version of gst-plugins-good do you have? $ gst-inspect-0.10 autoaudiosink | grep Version What's the output of: $ ldd /usr/lib/libcaca.so on your system? What distro + distro version do you run?
$ gst-inspect-0.10 autoaudiosink | grep Version Version: 0.10.5 $ ldd /usr/lib/libcaca.so ldd: /usr/lib/libcaca.so: No such file or directory Hmm... well, that is a symlink to a nonexistent file. But: $ ldd /usr/lib/gstreamer-0.10/libgstcacasink.so libgstbase-0.10.so.0 => /usr/lib/libgstbase-0.10.so.0 (0x009df000) libgstreamer-0.10.so.0 => /usr/lib/libgstreamer-0.10.so.0 (0x008aa000) libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0x00d61000) libgmodule-2.0.so.0 => /usr/lib/libgmodule-2.0.so.0 (0x00288000) libdl.so.2 => /lib/libdl.so.2 (0x00dd4000) libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 (0x00dec000) libxml2.so.2 => /usr/lib/libxml2.so.2 (0x00111000) libpthread.so.0 => /lib/tls/libpthread.so.0 (0x00eb4000) libz.so.1 => /usr/lib/libz.so.1 (0x0023d000) libm.so.6 => /lib/tls/libm.so.6 (0x00e7b000) libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x0028c000) libc.so.6 => /lib/tls/libc.so.6 (0x00ec5000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x004cb000) $ nm /usr/lib/gstreamer-0.10/libgstcacasink.so | fgrep initscr U initscr I am using CentOS 3.5, with gstreamer compiled from the 0.10.12 source. % GST_DEBUG='*:2' gst-launch-0.10 filesrc location=/dev/null ! cacasink 0:00:00.058830000 31014 0x9f07058 WARN GST_PLUGIN_LOADING gstplugin.c:414:gst_plugin_load_file: module_open failed: /usr/lib/gstreamer-0.10/libgstcacasink.so: undefined symbol: initscr 0:00:00.059133000 31014 0x9f07058 WARN GST_PLUGIN_LOADING gstplugin.c:878:gst_plugin_load_by_name: load_plugin error: Opening module failed 0:00:00.059169000 31014 0x9f07058 WARN GST_PLUGIN_LOADING gstpluginfeature.c:134:gst_plugin_feature_load: Failed to load plugin containing feature 'cacasink'. 0:00:00.059203000 31014 0x9f07058 WARN GST_ELEMENT_FACTORY gstelementfactory.c:405:gst_element_factory_create:<elementfactory157> loading plugin returned NULL! 0:00:00.059237000 31014 0x9f07058 ERROR GST_PIPELINE ./grammar.y:494:_gst_parse__yyparse: no element "cacasink" WARNING: erroneous pipeline: no element "cacasink"
Works fine here. It looks like your distro has a broken libcaca, especially since you say it has a broken symlink.
The /usr/lib/libcaca broken symlink is because the libcaca-devel RPM doesn't depend on the libcaca RPM, which is kind of silly. I installed the libcaca RPM and now have a correct symlink. ldd /usr/lib/libcaca.so now shows all of the needed libraries -- but gstreamer still can't load it. Ah! If I recompile gst-plugins-good after installing the libcaca RPM, ldd on libgstcacasink.so now points to libcaca. So there's certainly a bug in libcaca-devel (it should depend on libcaca). I wonder if there's also a bug in the autoconf caca autodetection, where it is happy to build the cacasink plugin (incorrectly) when there's no actual libcaca to link to?
Closing, not a GStreamer bug.