[libvirt] [PATCH] Move VirtualBox driver into libvirtd

Michal Privoznik mprivozn at redhat.com
Wed May 15 11:30:50 UTC 2013


On 15.05.2013 12:33, Daniel P. Berrange wrote:
> From: "Daniel P. Berrange" <berrange at redhat.com>
> 
> Change the build process & driver initialization so that the
> VirtualBox driver is built into libvirtd, instead of libvirt.so
> This change avoids the VirtualBox GPLv2-only license causing
> compatibility problems with libvirt.so which is under the
> GPLv2-or-later license.
> 
> NB this change prevents use of the VirtualBox driver on the
> Windows platform, until such time as libvirtd can be made
> to work there.
> 
> Signed-off-by: Daniel P. Berrange <berrange at redhat.com>
> ---
>  daemon/libvirtd.c    |  9 +++++++++
>  docs/drvvbox.html.in | 12 ++++++++++++
>  src/Makefile.am      | 24 +++++++++++++++++++-----
>  src/libvirt.c        |  7 -------
>  4 files changed, 40 insertions(+), 12 deletions(-)
> 
> diff --git a/daemon/libvirtd.c b/daemon/libvirtd.c
> index 1ac8e30..abb46ca 100644
> --- a/daemon/libvirtd.c
> +++ b/daemon/libvirtd.c
> @@ -73,6 +73,9 @@
>  # ifdef WITH_UML
>  #  include "uml/uml_driver.h"
>  # endif
> +#ifdef WITH_VBOX
> +# include "vbox/vbox_driver.h"
> +#endif

bad indent

>  # ifdef WITH_NETWORK
>  #  include "network/bridge_driver.h"
>  # endif
> @@ -400,6 +403,9 @@ static void daemonInitialize(void)
>  # ifdef WITH_UML
>      virDriverLoadModule("uml");
>  # endif
> +# ifdef WITH_UML

s/WITH_UML/WITH_VBOX/

> +    virDriverLoadModule("vbox");
> +# endif
>  #else
>  # ifdef WITH_NETWORK
>      networkRegister();
> @@ -434,6 +440,9 @@ static void daemonInitialize(void)
>  # ifdef WITH_UML
>      umlRegister();
>  # endif
> +# ifdef WITH_VBOX
> +    vboxRegister();
> +# endif
>  #endif
>  }
>  
> diff --git a/docs/drvvbox.html.in b/docs/drvvbox.html.in
> index d59da57..e2a213c 100644
> --- a/docs/drvvbox.html.in
> +++ b/docs/drvvbox.html.in
> @@ -31,6 +31,18 @@ vbox+tcp://user@example.com/session  (remote access, SASl/Kerberos)
>  vbox+ssh://user@example.com/session  (remote access, SSH tunnelled)
>  </pre>
>  
> +    <p>
> +      <strong>NOTE: as of libvirt 1.0.6, the VirtualBox driver will always
> +        run inside the libvirtd daemon, instead of being built-in to the
> +        libvirt.so library directly. This change was required due to the
> +        fact that VirtualBox code is GPLv2-only licensed, which is not
> +        compatible with the libvirt.so license of GPLv2-or-later. The
> +        daemon will be auto-started when the first connection to VirtualBox
> +        is requested. This change also means it is no longer possible to
> +        use the VirtualBox on the Windows platform, which lacks support
> +        for the libvirtd daemon.</strong>
> +    </p>
> +
>      <h2><a name="xmlconfig">Example domain XML config</a></h2>
>  
>  <pre>
> diff --git a/src/Makefile.am b/src/Makefile.am
> index 6c626ac..8f26181 100644
> --- a/src/Makefile.am
> +++ b/src/Makefile.am
> @@ -957,12 +957,26 @@ libvirt_driver_vmware_la_SOURCES = $(VMWARE_DRIVER_SOURCES)
>  endif
>  
>  if WITH_VBOX
> +noinst_LTLIBRARIES += libvirt_driver_vbox_impl.la
> +libvirt_driver_vbox_la_SOURCES =
> +libvirt_driver_vbox_la_LIBADD = libvirt_driver_vbox_impl.la
> +if WITH_DRIVER_MODULES
> +mod_LTLIBRARIES += libvirt_driver_vbox.la
> +libvirt_driver_vbox_la_LIBADD += ../gnulib/lib/libgnu.la
> +libvirt_driver_vbox_la_LDFLAGS = -module -avoid-version
> +else
>  noinst_LTLIBRARIES += libvirt_driver_vbox.la
> -libvirt_la_BUILT_LIBADD += libvirt_driver_vbox.la
> -libvirt_driver_vbox_la_CFLAGS = \
> -		-I$(top_srcdir)/src/conf $(AM_CFLAGS)
> -libvirt_driver_vbox_la_LIBADD = $(DLOPEN_LIBS) $(MSCOM_LIBS)
> -libvirt_driver_vbox_la_SOURCES = $(VBOX_DRIVER_SOURCES)
> +# GPLv2-only license requries that it be linked into
> +# libvirtd and *not* libvirt.so
> +#libvirt_la_BUILT_LIBADD += libvirt_driver_xen.la

Why libvirt_driver_xen.la? s/xen/vbox/

> +endif
> +
> +libvirt_driver_vbox_impl_la_CFLAGS =				\
> +		-I$(top_srcdir)/src/conf			\
> +		$(AM_CFLAGS)
> +libvirt_driver_vbox_impl_la_LDFLAGS = $(AM_LDFLAGS)
> +libvirt_driver_vbox_impl_la_LIBADD =  $(DLOPEN_LIBS) $(MSCOM_LIBS)
> +libvirt_driver_vbox_impl_la_SOURCES = $(VBOX_DRIVER_SOURCES)
>  endif
>  
>  if WITH_XENAPI
> diff --git a/src/libvirt.c b/src/libvirt.c
> index 2b3515e..d0ec10a 100644
> --- a/src/libvirt.c
> +++ b/src/libvirt.c
> @@ -81,9 +81,6 @@
>  #ifdef WITH_PHYP
>  # include "phyp/phyp_driver.h"
>  #endif
> -#ifdef WITH_VBOX
> -# include "vbox/vbox_driver.h"
> -#endif
>  #ifdef WITH_ESX
>  # include "esx/esx_driver.h"
>  #endif
> @@ -465,10 +462,6 @@ virGlobalInit(void)
>      if (phypRegister() == -1)
>          goto error;
>  #endif
> -#ifdef WITH_VBOX
> -    if (vboxRegister() == -1)
> -        goto error;
> -#endif
>  #ifdef WITH_ESX
>      if (esxRegister() == -1)
>          goto error;
> 

Makes sense. ACK if you address the nits but please wait a moment before
pushing so others can express themselves as well.

Michal




More information about the libvir-list mailing list