[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[libvirt] [PATCHv2] build: add stubs so mdns code can be unconditionally compiled



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


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]