[libvirt] [PATCHv2 1/2] build: define WITH_INTERFACE for the driver

Laine Stump laine at laine.org
Mon Sep 10 19:03:44 UTC 2012


On 09/09/2012 06:02 PM, 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.

In general I think it's good to separate the concept of the interface
driver from its netcf backend (regardless of what other backends we may
end up putting in.

I did notice that if I specify --with-netcf --without-interface, there
was no error, but instead the "netcf: " line at the end of configure
said "-lnetcf", implying that it might end up being added to the link
lines somewhere even though it also said "Interface: no". It think if
with-interface == no, then with-netcf should also be set to no (or an
error generated if it's being forced to yes, since there's no other use
for netcf).

Beyond that, I will have to defer to Eric's superior knowledge of
autoconf for any more detailed comments about the changes to configure.ac.



>
> * 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.
> * libvirt.spec.in: Add RPM support for --with-interface
> ---
>  configure.ac                                       |   33 ++++++++++++++++++-
>  daemon/Makefile.am                                 |    2 +-
>  daemon/libvirtd.c                                  |    8 ++--
>  libvirt.spec.in                                    |   13 ++++---
>  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                                      |    5 ++-
>  9 files changed, 67 insertions(+), 22 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 47a72b9..3e2fd0a 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -1948,7 +1948,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])
>  
> @@ -2787,6 +2786,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],
> @@ -2998,7 +3027,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 b45349c..3405c67 100644
> --- a/daemon/Makefile.am
> +++ b/daemon/Makefile.am
> @@ -151,7 +151,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 6973df6..1156bd6 100644
> --- a/daemon/libvirtd.c
> +++ b/daemon/libvirtd.c
> @@ -78,8 +78,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"
> @@ -382,7 +382,7 @@ static void daemonInitialize(void)
>  # ifdef WITH_NWFILTER
>      virDriverLoadModule("nwfilter");
>  # endif
> -# ifdef WITH_NETCF
> +# ifdef WITH_INTERFACE
>      virDriverLoadModule("interface");
>  # endif
>  # ifdef WITH_XEN
> @@ -404,7 +404,7 @@ static void daemonInitialize(void)
>  # ifdef WITH_NETWORK
>      networkRegister();
>  # endif
> -# ifdef WITH_NETCF
> +# ifdef WITH_INTERFACE
>      interfaceRegister();
>  # endif
>  # ifdef WITH_STORAGE
> diff --git a/libvirt.spec.in b/libvirt.spec.in
> index 8c4c08d..853cef7 100644
> --- a/libvirt.spec.in
> +++ b/libvirt.spec.in
> @@ -92,6 +92,7 @@
>  # A few optional bits off by default, we enable later
>  %define with_polkit        0%{!?_without_polkit:0}
>  %define with_capng         0%{!?_without_capng:0}
> +%define with_interface     0%{!?_without_interface:0}
>  %define with_netcf         0%{!?_without_netcf:0}
>  %define with_udev          0%{!?_without_udev:0}
>  %define with_hal           0%{!?_without_hal:0}
> @@ -200,6 +201,12 @@
>  %define with_netcf     0%{!?_without_netcf:%{server_drivers}}
>  %endif
>  
> +# interface is the driver that wraps netcf or udev interface management
> +# backends in Fedora 18 / RHEL-7 or newer
> +%if 0%{?fedora} >= 18 || 0%{?rhel} >= 7
> +%define with_interface     0%{!?_without_interface:%{server_drivers}}
> +%endif
> +
>  # udev is used to manage host devices in Fedora 12 / RHEL-6 or newer
>  %if 0%{?fedora} >= 12 || 0%{?rhel} >= 6
>  %define with_udev     0%{!?_without_udev:%{server_drivers}}
> @@ -281,12 +288,6 @@
>  %define with_nodedev 0
>  %endif
>  
> -%if %{with_netcf}
> -%define with_interface 1
> -%else
> -%define with_interface 0
> -%endif
> -
>  %if %{with_storage_fs} || %{with_storage_mpath} || %{with_storage_iscsi} || %{with_storage_lvm} || %{with_storage_disk}
>  %define with_storage 1
>  %else
> diff --git a/src/Makefile.am b/src/Makefile.am
> index 9f27fcf..4ae741b 100644
> --- a/src/Makefile.am
> +++ b/src/Makefile.am
> @@ -552,8 +552,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
> @@ -1021,7 +1030,7 @@ endif
>  EXTRA_DIST += network/default.xml
>  
>  
> -if WITH_NETCF
> +if WITH_INTERFACE
>  if WITH_DRIVER_MODULES
>  mod_LTLIBRARIES += libvirt_driver_interface.la
>  else
> @@ -1029,10 +1038,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 242f789..7a175ed 100644
> --- a/tools/virsh.c
> +++ b/tools/virsh.c
> @@ -2705,8 +2705,11 @@ vshShowVersion(vshControl *ctl ATTRIBUTE_UNUSED)
>  #ifdef WITH_BRIDGE
>      vshPrint(ctl, " Bridging");
>  #endif
> -#ifdef WITH_NETCF
> +#if defined(WITH_INTERFACE)
>      vshPrint(ctl, " Interface");
> +#if defined(WITH_NETCF)
> +    vshPrint(ctl, " netcf");
> +#endif
>  #endif
>  #ifdef WITH_NWFILTER
>      vshPrint(ctl, " Nwfilter");




More information about the libvir-list mailing list