On Sun, Feb 25, 2007 at 08:48:12PM +0000, Daniel P. Berrange wrote:
See this thread on kvm-devel for a question about link time
dependancies
in libvirt. I'm not sure what the optimal approach is for us to deal with
this is - just something we should think about in an idle moment...
Definitely (... it would be best for FC7, no later.)
The libvirt already uses exactly defined API (struct virDriver). I
think it's a possible food for dlopen(). The rpm could be divided to
multiple subpackages:
libvirt.rpm
libvirt-driver-xen.rpm
libvirt-driver-qemu.rpm
libvirt-driver-kvm.rpm
Karel
> > Yeah, we've not figured out exactly how to address that
dependancy
> > issue yet - the libvirt.so has to link to libxenstore as part of the
> > Xen driver, so even if you only want to manage QEMU instances we still
> > end up pulling in Xen. We're certainly going to make it possible to
> > turn off the Xen stuff at compile time. Not clear how we'd address the
> > RPM dep issue though because the Fedora builds of libvirt will include
> > both Xen & QEMU support. Perhaps we'll have to try a dlopen()
approach.
>
> I would suggest a /usr/lib/libvirt/xen.so and a
> /usr/lib/libvirt/qemu.so, which are enumerated by reading
> /usr/lib/libvirt, and dlopen()ed by libvirt.so. Only
> /usr/lib/libvirt/xen.so links to libxenstore.
>
> That way, a third party can add a backend by dropping a .so into
> /usr/lib/libvirt, and libvirt.so itself has no backend-related
> dependencies -- it doesn't know anything concrete about the backends, in
> fact.
--
Karel Zak <kzak(a)redhat.com>