The recent changes to test exported symbols flushed out the fact that we were unconditionally linking against symbols that were only conditionally compiled under HAVE_AVAHI. * src/Makefile.am (libvirt_net_rpc_server_la_SOURCES): Compile virnetservermdns unconditionally. * configure.ac (HAVE_AVAHI): Drop unused automake conditional. * src/rpc/virnetservermdns.c: Add fallbacks when Avahi is not present. --- Definitely more involved than splitting out a separate .syms file, so I'm not sure whether this approach is better than the v1 approach. But I did promise to propose this alternative, so here it is. I tested both with and without avahi development libraries present. configure.ac | 1 - src/Makefile.am | 8 +--- src/rpc/virnetservermdns.c | 98 ++++++++++++++++++++++++++++++++++++++++++---- 3 files changed, 91 insertions(+), 16 deletions(-) diff --git a/configure.ac b/configure.ac index 400ac3b..e93bbb5 100644 --- a/configure.ac +++ b/configure.ac @@ -1248,7 +1248,6 @@ if test "x$with_avahi" = "xyes" || test "x$with_avahi" = "xcheck"; then [whether Avahi is used to broadcast server presense]) fi fi -AM_CONDITIONAL([HAVE_AVAHI], [test "x$with_avahi" = "xyes"]) AC_SUBST([AVAHI_CFLAGS]) AC_SUBST([AVAHI_LIBS]) diff --git a/src/Makefile.am b/src/Makefile.am index b48ce65..8fbbabd 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1529,14 +1529,8 @@ libvirt_net_rpc_server_la_SOURCES = \ rpc/virnetserverprogram.h rpc/virnetserverprogram.c \ rpc/virnetserverservice.h rpc/virnetserverservice.c \ rpc/virnetserverclient.h rpc/virnetserverclient.c \ + rpc/virnetservermdns.h rpc/virnetservermdns.c \ rpc/virnetserver.h rpc/virnetserver.c -if HAVE_AVAHI -libvirt_net_rpc_server_la_SOURCES += \ - rpc/virnetservermdns.h rpc/virnetservermdns.c -else -EXTRA_DIST += \ - rpc/virnetservermdns.h rpc/virnetservermdns.c -endif libvirt_net_rpc_server_la_CFLAGS = \ $(AVAHI_CFLAGS) \ $(XDR_CFLAGS) \ diff --git a/src/rpc/virnetservermdns.c b/src/rpc/virnetservermdns.c index 274be19..7c43c40 100644 --- a/src/rpc/virnetservermdns.c +++ b/src/rpc/virnetservermdns.c @@ -1,7 +1,7 @@ /* * virnetservermdns.c: advertise server sockets * - * Copyright (C) 2011 Red Hat, Inc. + * Copyright (C) 2011-2012 Red Hat, Inc. * Copyright (C) 2007 Daniel P. Berrange * * Derived from Avahi example service provider code. @@ -29,14 +29,16 @@ #include <stdio.h> #include <stdlib.h> -#include <avahi-client/client.h> -#include <avahi-client/publish.h> +#if HAVE_AVAHI +# include <avahi-client/client.h> +# include <avahi-client/publish.h> -#include <avahi-common/alternative.h> -#include <avahi-common/simple-watch.h> -#include <avahi-common/malloc.h> -#include <avahi-common/error.h> -#include <avahi-common/timeval.h> +# include <avahi-common/alternative.h> +# include <avahi-common/simple-watch.h> +# include <avahi-common/malloc.h> +# include <avahi-common/error.h> +# include <avahi-common/timeval.h> +#endif #include "virnetservermdns.h" #include "event.h" @@ -55,18 +57,23 @@ struct _virNetServerMDNSEntry { struct _virNetServerMDNSGroup { virNetServerMDNSPtr mdns; +#if HAVE_AVAHI AvahiEntryGroup *handle; +#endif char *name; virNetServerMDNSEntryPtr entry; virNetServerMDNSGroupPtr next; }; struct _virNetServerMDNS { +#if HAVE_AVAHI AvahiClient *client; AvahiPoll *poller; +#endif virNetServerMDNSGroupPtr group; }; +#if HAVE_AVAHI /* Avahi API requires this struct name in the app :-( */ struct AvahiWatch { int watch; @@ -612,3 +619,78 @@ void virNetServerMDNSEntryFree(virNetServerMDNSEntryPtr entry) VIR_FREE(entry->type); VIR_FREE(entry); } + +#else /* ! HAVE_AVAHI */ + +static const char *unsupported = N_("avahi not available at build time"); + +virNetServerMDNS * +virNetServerMDNSNew(void) +{ + VIR_DEBUG("%s", _(unsupported)); + return NULL; +} + +int +virNetServerMDNSStart(virNetServerMDNS *mdns ATTRIBUTE_UNUSED) +{ + VIR_DEBUG("%s", _(unsupported)); + return -1; +} + +virNetServerMDNSGroupPtr +virNetServerMDNSAddGroup(virNetServerMDNS *mdns ATTRIBUTE_UNUSED, + const char *name ATTRIBUTE_UNUSED) +{ + VIR_DEBUG("%s", _(unsupported)); + return NULL; +} + +void +virNetServerMDNSRemoveGroup(virNetServerMDNSPtr mdns ATTRIBUTE_UNUSED, + virNetServerMDNSGroupPtr group ATTRIBUTE_UNUSED) +{ + VIR_DEBUG("%s", _(unsupported)); +} + +virNetServerMDNSEntryPtr +virNetServerMDNSAddEntry(virNetServerMDNSGroupPtr group ATTRIBUTE_UNUSED, + const char *type ATTRIBUTE_UNUSED, + int port ATTRIBUTE_UNUSED) +{ + VIR_DEBUG("%s", _(unsupported)); + return NULL; +} + +void +virNetServerMDNSRemoveEntry(virNetServerMDNSGroupPtr group ATTRIBUTE_UNUSED, + virNetServerMDNSEntryPtr entry ATTRIBUTE_UNUSED) +{ + VIR_DEBUG("%s", _(unsupported)); +} + +void +virNetServerMDNSStop(virNetServerMDNSPtr mdns ATTRIBUTE_UNUSED) +{ + VIR_DEBUG("%s", _(unsupported)); +} + +void +virNetServerMDNSFree(virNetServerMDNSPtr mdns ATTRIBUTE_UNUSED) +{ + VIR_DEBUG("%s", _(unsupported)); +} + +void +virNetServerMDNSGroupFree(virNetServerMDNSGroupPtr grp ATTRIBUTE_UNUSED) +{ + VIR_DEBUG("%s", _(unsupported)); +} + +void +virNetServerMDNSEntryFree(virNetServerMDNSEntryPtr entry ATTRIBUTE_UNUSED) +{ + VIR_DEBUG("%s", _(unsupported)); +} + +#endif /* ! HAVE_AVAHI */ -- 1.7.11.2 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list