2011/6/3 Daniel P. Berrange <berrange(a)redhat.com>:
On Fri, Jun 03, 2011 at 01:27:04PM +0200, Matthias Bolte wrote:
> 2011/6/2 Daniel Veillard <veillard(a)redhat.com>:
> > I just pushed a second release candidate
> > ftp://libvirt.org/libvirt/libvirt-0.9.2-rc2.tar.gz
> > with corresponding rpm builds, this includes the extrenal lock support.
> >
> > On Wed, Jun 01, 2011 at 12:49:52PM +0200, Ruben Kerkhof wrote:
> >> On Wed, Jun 1, 2011 at 10:31, Matthias Bolte
> >> <matthias.bolte(a)googlemail.com> wrote:
> >> > Works on Ubuntu 10.04, Windows (MinGW) and FreeBSD.
> >> >
> >> > Matthias
> >>
> >> Works on OSX 10.7.0, tested with VirtualBox 4.08
> >
> > Excellent news, thanks !
> > I hope we didn't introduced regressions in portability with the latest
> > API additions ! If people could also try -rc2 it would be great too,
> >
> > thanks !
> >
> > Daniel
> >
>
> RC2 is broken on MinGW due to the lock manager using dlopen
> unconditional. The attached patch fixes it.
>
> Still works on FreeBSD and Ubuntu 10.04.
>
> Matthias
> From c734e683c4d9bbb5a87fba3e0008ce8000b62fe5 Mon Sep 17 00:00:00 2001
> From: Matthias Bolte <matthias.bolte(a)googlemail.com>
> Date: Fri, 3 Jun 2011 10:20:49 +0200
> Subject: [PATCH] Make dlopen usage in lock manager conditional
>
> This fixes build failure on MinGW, due to MinGW not supporting dlopen.
> ---
> src/locking/lock_manager.c | 20 +++++++++++++++++++-
> 1 files changed, 19 insertions(+), 1 deletions(-)
>
> diff --git a/src/locking/lock_manager.c b/src/locking/lock_manager.c
> index 6197fd4..6293e6d 100644
> --- a/src/locking/lock_manager.c
> +++ b/src/locking/lock_manager.c
> @@ -29,7 +29,9 @@
> #include "memory.h"
> #include "uuid.h"
>
> -#include <dlfcn.h>
> +#if HAVE_DLFCN_H
> +# include <dlfcn.h>
> +#endif
> #include <stdlib.h>
> #include <unistd.h>
>
> @@ -115,6 +117,7 @@ static void virLockManagerLogParams(size_t nparams,
> *
> * Returns a plugin object, or NULL if loading failed.
> */
> +#if HAVE_DLFCN_H
> virLockManagerPluginPtr virLockManagerPluginNew(const char *name,
> unsigned int flags)
> {
> @@ -187,6 +190,15 @@ cleanup:
> dlclose(handle);
> return NULL;
> }
> +#else /* !HAVE_DLFCN_H */
> +virLockManagerPluginPtr virLockManagerPluginNew(const char *name ATTRIBUTE_UNUSED,
> + unsigned int flags
ATTRIBUTE_UNUSED)
> +{
> + virLockError(VIR_ERR_INTERNAL_ERROR, "%s",
> + _("this platform is missing dlopen"));
> + return NULL;
> +}
> +#endif /* !HAVE_DLFCN_H */
>
>
> /**
> @@ -211,6 +223,7 @@ void virLockManagerPluginRef(virLockManagerPluginPtr plugin)
> * result in an unsafe scenario.
> *
> */
> +#if HAVE_DLFCN_H
> void virLockManagerPluginUnref(virLockManagerPluginPtr plugin)
> {
> if (!plugin)
> @@ -232,6 +245,11 @@ void virLockManagerPluginUnref(virLockManagerPluginPtr plugin)
> VIR_FREE(plugin->name);
> VIR_FREE(plugin);
> }
> +#else /* !HAVE_DLFCN_H */
> +void virLockManagerPluginUnref(virLockManagerPluginPtr plugin ATTRIBUTE_UNUSED)
> +{
> +}
> +#endif /* !HAVE_DLFCN_H */
>
>
> const char *virLockManagerPluginGetName(virLockManagerPluginPtr plugin)
ACK, I hit this yesterday but ran out of time to fix it
Daniel
Thanks, pushed.
Matthias