Hi,

The reason it fails is fairly simple. Instead of linking using -lxmms,
this module links against libxmms using dlopen. As it dlopen's
'libxmms.so' which is only provided by xmms-dev... well it doesn't work
if the package is not present.
To fixes are possible. Either making the dlopen against the library
soname, 'libxmms.so.1', which is a quick fix (patch attached) but will
be broken if the soname changes, but I doubt it will for XMMS.
The other solution is to modify to link the usual way, but it would
require a more intrusive patch.

By the way, I miss a bit the point of using dlopen to access libxmms for
an xmms plugin.If someone knows...

I hope this little explaination will be helpful.
Regis

diff -urN xmms-jack-0.14/jack.c xmms-jack-0.14.patch/jack.c
--- xmms-jack-0.14/jack.c	2005-04-16 02:29:55.000000000 +0100
+++ xmms-jack-0.14.patch/jack.c	2005-06-15 19:53:19.163586432 +0100
@@ -61,7 +61,7 @@
 MAKE_FUNCPTR(xmms_convert_buffers_new);
 MAKE_FUNCPTR(xmms_convert_buffers_destroy);
 MAKE_FUNCPTR(xmms_convert_get_frequency_func);
-void *xmmslibhandle; /* handle to the dlopen'ed libxmms.so */
+void *xmmslibhandle; /* handle to the dlopen'ed libxmms.so.1 */
 
 static int isXmmsFrequencyAvailable = 0;
 
@@ -205,7 +205,7 @@
   /* jack client list */
   JACK_SetClientName("xmms-jack");
 
-  xmmslibhandle = dlopen("libxmms.so", RTLD_NOW);
+  xmmslibhandle = dlopen("libxmms.so.1", RTLD_NOW);
   if(xmmslibhandle)
   {
     fp_xmms_convert_buffers_new = dlsym(xmmslibhandle, "xmms_convert_buffers_new");
@@ -242,7 +242,7 @@
     }
   } else
   {
-    TRACE("unable to dlopen '%s'\n", "libxmms.so");
+    TRACE("unable to dlopen '%s'\n", "libxmms.so.1");
   }
 
   /* only initialize this stuff if we have the functions available */

Reply via email to