[libvirt] [PATCH 1/2] build: define WITH_INTERFACE for the driver
Daniel Veillard
veillard at redhat.com
Wed Sep 5 03:27:37 UTC 2012
On Sun, Sep 02, 2012 at 10:44:16PM -0500, Doug Goldstein wrote:
> Based exclusively on work by Eric Blake in a patch posted with the same
> subject. However some modifications related to comments and my plans to
> add another backend.
>
> Added WITH_INTERFACE as the only automake variable deciding whether to
> build the driver and using WITH_NETCF to identify that we're wanting to
> use the netcf library as the backend.
>
> * configure.ac: Added with_interface
> * src/interface/netcf_driver.c: Renamed..
> * src/interface/interface_backend_netcf.c: ..to this to match storage.
> * src/interface/netcf_driver.h: Renamed..
> * src/interface/interface_driver.h: ..to this.
> * daemon/Makefile.am: Respect WITH_INTERFACE and WITH_NETCF.
>
> Signed-off-by: Doug Goldstein <cardoe at cardoe.com>
> ---
> configure.ac | 33 ++++++++++++++++++-
> daemon/Makefile.am | 2 +-
> daemon/libvirtd.c | 8 ++--
> src/Makefile.am | 24 +++++++++++---
> .../{netcf_driver.c => interface_backend_netcf.c} | 2 +-
> .../{netcf_driver.h => interface_driver.h} | 0
> tests/virdrivermoduletest.c | 2 +-
> tools/virsh.c | 4 +-
> 8 files changed, 58 insertions(+), 17 deletions(-)
> rename src/interface/{netcf_driver.c => interface_backend_netcf.c} (99%)
> rename src/interface/{netcf_driver.h => interface_driver.h} (100%)
>
> diff --git a/configure.ac b/configure.ac
> index 028a80d..fd546fc 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -1967,7 +1967,6 @@ AM_CONDITIONAL([WITH_NETCF], [test "$with_netcf" = "yes"])
> AC_SUBST([NETCF_CFLAGS])
> AC_SUBST([NETCF_LIBS])
>
> -
> AC_ARG_WITH([secrets],
> AC_HELP_STRING([--with-secrets], [with local secrets management driver @<:@default=yes@:>@]),[],[with_secrets=yes])
>
> @@ -2806,6 +2805,36 @@ if test "$with_nwfilter" = "yes" ; then
> fi
> AM_CONDITIONAL([WITH_NWFILTER], [test "$with_nwfilter" = "yes"])
>
> +dnl check if the interface driver should be compiled
> +AC_ARG_WITH([interface],
> + AC_HELP_STRING([--with-interface],
> + [with host interface driver @<:@default=check@:>@]), [],
> + [with_interface=check])
> +
> +dnl Don't compile the interface driver without libvirtd
> +if test "$with_libvirtd" = "no" ; then
> + with_interface=no
> +fi
> +
> +dnl The interface driver depends on the netcf library
> +if test "$with_interface:$with_netcf" = "check:yes" ; then
> + with_interface=yes
> +fi
> +
> +if test "$with_interface:$with_netcf" = "check:no" ; then
> + with_interface=no
> +fi
> +
> +if test "$with_interface:$with_netcf" = "yes:no" ; then
> + AC_MSG_ERROR([Requested the Interface driver without netcf support])
> +fi
> +
> +if test "$with_interface" = "yes" ; then
> + AC_DEFINE_UNQUOTED([WITH_INTERFACE], [1],
> + [whether the interface driver is enabled])
> +fi
> +AM_CONDITIONAL([WITH_INTERFACE], [test "$with_interface" = "yes"])
> +
> dnl libblkid is used by several storage drivers; therefore we probe
> dnl for it unconditionally.
> AC_ARG_WITH([libblkid],
> @@ -3017,7 +3046,7 @@ AC_MSG_NOTICE([ Test: $with_test])
> AC_MSG_NOTICE([ Remote: $with_remote])
> AC_MSG_NOTICE([ Network: $with_network])
> AC_MSG_NOTICE([ Libvirtd: $with_libvirtd])
> -AC_MSG_NOTICE([ netcf: $with_netcf])
> +AC_MSG_NOTICE([Interface: $with_interface])
> AC_MSG_NOTICE([ macvtap: $with_macvtap])
> AC_MSG_NOTICE([ virtport: $with_virtualport])
> AC_MSG_NOTICE([])
> diff --git a/daemon/Makefile.am b/daemon/Makefile.am
> index b00fc13..fbd5a5e 100644
> --- a/daemon/Makefile.am
> +++ b/daemon/Makefile.am
> @@ -147,7 +147,7 @@ if WITH_NETWORK
> libvirtd_LDADD += ../src/libvirt_driver_network.la
> endif
>
> -if WITH_NETCF
> +if WITH_INTERFACE
> libvirtd_LDADD += ../src/libvirt_driver_interface.la
> endif
>
> diff --git a/daemon/libvirtd.c b/daemon/libvirtd.c
> index 352d4fe..e8d7ce1 100644
> --- a/daemon/libvirtd.c
> +++ b/daemon/libvirtd.c
> @@ -75,8 +75,8 @@
> # ifdef WITH_NETWORK
> # include "network/bridge_driver.h"
> # endif
> -# ifdef WITH_NETCF
> -# include "interface/netcf_driver.h"
> +# ifdef WITH_INTERFACE
> +# include "interface/interface_driver.h"
> # endif
> # ifdef WITH_STORAGE
> # include "storage/storage_driver.h"
> @@ -379,7 +379,7 @@ static void daemonInitialize(void)
> # ifdef WITH_NWFILTER
> virDriverLoadModule("nwfilter");
> # endif
> -# ifdef WITH_NETCF
> +# ifdef WITH_INTERFACE
> virDriverLoadModule("interface");
> # endif
> # ifdef WITH_QEMU
> @@ -401,7 +401,7 @@ static void daemonInitialize(void)
> # ifdef WITH_NETWORK
> networkRegister();
> # endif
> -# ifdef WITH_NETCF
> +# ifdef WITH_INTERFACE
> interfaceRegister();
> # endif
> # ifdef WITH_STORAGE
> diff --git a/src/Makefile.am b/src/Makefile.am
> index 95e1bea..72c4d6c 100644
> --- a/src/Makefile.am
> +++ b/src/Makefile.am
> @@ -548,8 +548,17 @@ PARALLELS_DRIVER_SOURCES = \
> NETWORK_DRIVER_SOURCES = \
> network/bridge_driver.h network/bridge_driver.c
>
> -INTERFACE_DRIVER_SOURCES = \
> - interface/netcf_driver.h interface/netcf_driver.c
> +INTERFACE_DRIVER_SOURCES =
> +
> +if WITH_INTERFACE
> +INTERFACE_DRIVER_SOURCES += \
> + interface/interface_driver.h
> +endif
> +
> +if WITH_NETCF
> +INTERFACE_DRIVER_SOURCES += \
> + interface/interface_backend_netcf.c
> +endif
>
> SECRET_DRIVER_SOURCES = \
> secret/secret_driver.h secret/secret_driver.c
> @@ -1017,7 +1026,7 @@ endif
> EXTRA_DIST += network/default.xml
>
>
> -if WITH_NETCF
> +if WITH_INTERFACE
> if WITH_DRIVER_MODULES
> mod_LTLIBRARIES += libvirt_driver_interface.la
> else
> @@ -1025,10 +1034,13 @@ noinst_LTLIBRARIES += libvirt_driver_interface.la
> # Stateful, so linked to daemon instead
> #libvirt_la_BUILT_LIBADD += libvirt_driver_interface.la
> endif
> -libvirt_driver_interface_la_CFLAGS = $(NETCF_CFLAGS) \
> - -I$(top_srcdir)/src/conf $(AM_CFLAGS)
> +libvirt_driver_interface_la_CFLAGS = -I$(top_srcdir)/src/conf $(AM_CFLAGS)
> libvirt_driver_interface_la_LDFLAGS = $(AM_LDFLAGS)
> -libvirt_driver_interface_la_LIBADD = $(NETCF_LIBS)
> +libvirt_driver_interface_la_LIBADD =
> +if WITH_NETCF
> +libvirt_driver_interface_la_CFLAGS += $(NETCF_CFLAGS)
> +libvirt_driver_interface_la_LIBADD += $(NETCF_LIBS)
> +endif
> if WITH_DRIVER_MODULES
> libvirt_driver_interface_la_LIBADD += ../gnulib/lib/libgnu.la
> libvirt_driver_interface_la_LDFLAGS += -module -avoid-version
> diff --git a/src/interface/netcf_driver.c b/src/interface/interface_backend_netcf.c
> similarity index 99%
> rename from src/interface/netcf_driver.c
> rename to src/interface/interface_backend_netcf.c
> index 935be66..9285b08 100644
> --- a/src/interface/netcf_driver.c
> +++ b/src/interface/interface_backend_netcf.c
> @@ -27,7 +27,7 @@
>
> #include "virterror_internal.h"
> #include "datatypes.h"
> -#include "netcf_driver.h"
> +#include "interface_driver.h"
> #include "interface_conf.h"
> #include "memory.h"
>
> diff --git a/src/interface/netcf_driver.h b/src/interface/interface_driver.h
> similarity index 100%
> rename from src/interface/netcf_driver.h
> rename to src/interface/interface_driver.h
> diff --git a/tests/virdrivermoduletest.c b/tests/virdrivermoduletest.c
> index 4d6e91e..8762de4 100644
> --- a/tests/virdrivermoduletest.c
> +++ b/tests/virdrivermoduletest.c
> @@ -79,7 +79,7 @@ mymain(void)
> #ifdef WITH_NWFILTER
> TEST("nwfilter", NULL);
> #endif
> -#ifdef WITH_NETCF
> +#ifdef WITH_INTERFACE
> TEST("interface", NULL);
> #endif
> #ifdef WITH_QEMU
> diff --git a/tools/virsh.c b/tools/virsh.c
> index 7a5b92c..b8ec663 100644
> --- a/tools/virsh.c
> +++ b/tools/virsh.c
> @@ -2643,8 +2643,8 @@ vshShowVersion(vshControl *ctl ATTRIBUTE_UNUSED)
> #ifdef WITH_BRIDGE
> vshPrint(ctl, " Bridging");
> #endif
> -#ifdef WITH_NETCF
> - vshPrint(ctl, " Interface");
> +#if defined(WITH_INTERFACE) && defined(WITH_NETCF)
> + vshPrint(ctl, " Interface (netcf)");
> #endif
> #ifdef WITH_NWFILTER
> vshPrint(ctl, " Nwfilter");
Overall, I like the idea to being able to fallback to udev,
and this clearly goes in the right direction. I think a
patch for libvirt.spec.in replacing the _without_netcf with
_without_interface and doing the corresponding adjustments would
be needed though. But I recognize you are not in a good situation
to make this patch :-) so that should probably be done after
commiting that patch set, assuming you get an ACK for example from
Laine since that touches his area of expertise :-)
Daniel
--
Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/
daniel at veillard.com | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library http://libvirt.org/
More information about the libvir-list
mailing list