GNOME Bugzilla – Bug 609941
GStreamer-WARNING **: External plugin loader failed.
Last modified: 2010-02-21 12:58:36 UTC
OS: openSUSE 11.2 / 2.6.31.12-0.1-default / x86_64 GStreamer: 0.10.26-999.pm.1000.1 (x86_64) Installed plugins: good, bad, ugly etc. (Can provide details on request) Problem: No webcam video feed. Tested with: a) cheese 2.28.1-2.1.2 (x86_64). b) ekiga 3.2.6-2.6 (x86_64) Command: cheese -v Gives: (cheese:2713): GStreamer-WARNING **: External plugin loader failed. This most likely means that the plugin loader helper binary was not found or could not be run. Cheese 2.28.1 Probing devices with HAL... Found device 046d:08aa, getting capabilities... Detected v4l2 device: Camera Driver: zc3xx, version: 132608 Capabilities: 0x05000001 Probing supported video formats... Device: Camera (/dev/video0) Please advice if this is a bug or whether there is something missing in my installation.
Yes, most likely the gstreamer packages you have are missing the external plugin loader. Do you have /usr/lib/gstreamer0.10/gstreamer-0.10/gst-plugin-scanner or /usr/libexec/gstreamer-0.10/gst-plugin-scanner or something like that?
Found: /usr/lib64/gstreamer-0.10/gst-plugin-scanner No results for: /usr/lib/gstreamer0.10/gstreamer-0.10/gst-plugin-scanner /usr/libexec/gstreamer-0.10/gst-plugin-scanner
Could you run this: $ rm ~/.gstreamer-0.10/registry* $ strace -f gst-inspect-0.10 abcd 2>strace.log $ gzip strace.log and then attach strace.log.gz please?
Created attachment 153862 [details] strace.log
Hrm, odd: $ grep scanner 610017.strace [pid 3211] execve("/usr/lib/gstreamer-0.10/gst-plugin-scanner", ["/usr/lib/gstreamer-0.10/gst-plug"..., "-l"], [/* 77 vars */]) = -1 ENOENT (No such file or directory) but then: stat("/usr/lib64/gstreamer-0.10/gst-plugin-scanner", {st_mode=S_IFREG|0755, st_size=6456, ...}) = 0
Right, so the packager probably builds multiarch packages by doing something like make libexecdir=/foo/bar in which case the install path of the binary will be != the path set by ./configure in config.h
I think the correct way for the packaging system to do this is to pass --libexecdir=$path to the configure call.
Marking as blocker for now, even though I'm not quite sure yet if we should allow this or not..
I don't think we should hack around that, at least not for this release. I've committed this now, which should make the build fail if someone tries to do things like this: commit 46beed9c60a8c60d1cde71bcfe46efe84d8a9758 Author: Tim-Philipp Müller <tim.muller@collabora.co.uk> Date: Tue Feb 16 08:26:59 2010 +0000 build: make sure gst-plugin-scanner gets installed where we expect it Add check to make sure gst-plugin-scanner really gets installed where we will look for it later, ie. paths and prefixes are set at configure time and not specified via make. Fixes #609941. You may want to file a bug with your distro so that they're aware of this issue.
Filed bug with distro: https://bugzilla.novell.com/show_bug.cgi?id=580173
I forgot to mention that you can work around the problem by setting the GST_PLUGIN_SCANNER environment variable to the actual location of the binary, e.g. in gnome-terminal or so: $ export GST_PLUGIN_SCANNER=/usr/lib64/gstreamer-0.10/gst-plugin-scanner $ cheese