[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