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.0 +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 */