]> git.meshlink.io Git - catta/commitdiff
autoconf love:
authorLennart Poettering <lennart@poettering.net>
Thu, 31 Aug 2006 17:17:18 +0000 (17:17 +0000)
committerLennart Poettering <lennart@poettering.net>
Thu, 31 Aug 2006 17:17:18 +0000 (17:17 +0000)
* use autoconf to check whether dbus_connection_close() is available and use it
  if it is, don't do those checks based on the D-Bus version.

* Make use of dbus_bus_get_private() if it is available.

* Since D-Bus agreeed on a cononical way to write their name, use that way in
  configure.ac.

* Add configure options to define the UNIX user/group for avahi-autoipd

git-svn-id: file:///home/lennart/svn/public/avahi/trunk@1295 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe

avahi-client/client.c
avahi-daemon/dbus-protocol.c
configure.ac

index 825e88f301e53fd82b2f8b8d849d46bfffa68ed3..f665613c0598e09dc3199620a38bbab0bcdc92b3 100644 (file)
@@ -67,7 +67,7 @@ static void client_set_state (AvahiClient *client, AvahiServerState state) {
     switch (client->state) {
         case AVAHI_CLIENT_FAILURE:
             if (client->bus) {
-#if (DBUS_VERSION_MAJOR == 0) && (DBUS_VERSION_MINOR >= 62)
+#ifdef HAVE_DBUS_CONNECTION_CLOSE
                 dbus_connection_close(client->bus);
 #else
                 dbus_connection_disconnect(client->bus);
@@ -441,12 +441,18 @@ static int init_server(AvahiClient *client, int *ret_error) {
 }
 
 /* This function acts like dbus_bus_get but creates a private
- * connection instead. Eventually this should be replaced by a DBUS
- * provided version. */
+ * connection instead.  */
 static DBusConnection* avahi_dbus_bus_get(DBusError *error) {
     DBusConnection *c;
-    const char *a;
 
+#ifdef HAVE_DBUS_BUS_GET_PRIVATE
+    if (!(c = dbus_bus_get_private(DBUS_BUS_SYSTEM, error)))
+        return NULL;
+    
+    dbus_connection_set_exit_on_disconnect(c, FALSE);
+#else
+    const char *a;
+    
     if (!(a = getenv("DBUS_SYSTEM_BUS_ADDRESS")) || !*a)
         a = DBUS_SYSTEM_BUS_DEFAULT_ADDRESS;
     
@@ -456,10 +462,15 @@ static DBusConnection* avahi_dbus_bus_get(DBusError *error) {
     dbus_connection_set_exit_on_disconnect(c, FALSE);
 
     if (!dbus_bus_register(c, error)) {
+#ifdef HAVE_DBUS_CONNECTION_CLOSE
         dbus_connection_close(c);
+#else
+        dbus_connection_disconnect(c);
+#endif
         dbus_connection_unref(c);
         return NULL;
     }
+#endif
 
     return c;
 }
@@ -602,7 +613,7 @@ void avahi_client_free(AvahiClient *client) {
     if (client->bus)
         /* Disconnect in advance, so that the free() functions won't
          * issue needless server calls */
-#if (DBUS_VERSION_MAJOR == 0) && (DBUS_VERSION_MINOR >= 62)
+#ifdef HAVE_DBUS_CONNECTION_CLOSE
         dbus_connection_close(client->bus);
 #else
         dbus_connection_disconnect(client->bus);
index 4fb58d25e64d08b42ba2a749e19db99cbd2a615b..e74caa328ec7213c056b76de994d168351550dd2 100644 (file)
@@ -1130,7 +1130,7 @@ fail:
         dbus_error_free(&error);
 
     if (server->bus) {
-#if (DBUS_VERSION_MAJOR == 0) && (DBUS_VERSION_MINOR >= 62)
+#ifdef HAVE_DBUS_CONNECTION_CLOSE
         dbus_connection_close(server->bus);
 #else
         dbus_connection_disconnect(server->bus);
@@ -1151,7 +1151,7 @@ static void dbus_disconnect(void) {
     assert(server->n_clients == 0);
 
     if (server->bus) {
-#if (DBUS_VERSION_MAJOR == 0) && (DBUS_VERSION_MINOR >= 62)
+#ifdef HAVE_DBUS_CONNECTION_CLOSE
         dbus_connection_close(server->bus);
 #else
         dbus_connection_disconnect(server->bus);
@@ -1180,7 +1180,7 @@ int dbus_protocol_setup(const AvahiPoll *poll_api, int _disable_user_service_pub
         if (!force)
             goto fail;
 
-        avahi_log_warn("WARNING: Failed to contact D-BUS daemon, retrying in %ims.", RECONNECT_MSEC);
+        avahi_log_warn("WARNING: Failed to contact D-Bus daemon, retrying in %ims.", RECONNECT_MSEC);
         
         avahi_elapse_time(&tv, RECONNECT_MSEC, 0);
         server->reconnect_timeout = server->poll_api->timeout_new(server->poll_api, &tv, reconnect_callback, NULL);
@@ -1190,7 +1190,7 @@ int dbus_protocol_setup(const AvahiPoll *poll_api, int _disable_user_service_pub
 
 fail:
     if (server->bus) {
-#if (DBUS_VERSION_MAJOR == 0) && (DBUS_VERSION_MINOR >= 62)
+#ifdef HAVE_DBUS_CONNECTION_CLOSE
         dbus_connection_close(server->bus);
 #else
         dbus_connection_disconnect(server->bus);
index 8c2b1b525e436509753cbc9118f0e861e11013af..7cf15b29c6c78a201861703bd0626306ebfd8633 100644 (file)
@@ -164,7 +164,7 @@ case $with_distro in
      AC_MSG_ERROR([Linux distribution autodetection failed, you must specify the distribution to target using --with-distro=DISTRO, set DISTRO to none if your distribution is not supported.])
      ;;
     *)
-     AC_MSG_ERROR([Your distribution (${with_distro}) is not yet supported, init scripts and dbus configuration will not be installed! (patches welcome), you can specify --with-distro=none to skip this check])
+     AC_MSG_ERROR([Your distribution (${with_distro}) is not yet supported, init scripts and D-Bus configuration will not be installed! (patches welcome), you can specify --with-distro=none to skip this check])
      ;;
 esac
 
@@ -372,10 +372,10 @@ fi
 AM_CONDITIONAL(HAVE_GTK, test "x$HAVE_GTK" = "xyes")
 
 #
-# D-BUS
+# D-Bus
 #
 AC_ARG_ENABLE(dbus,
-        AS_HELP_STRING([--disable-dbus],[Disable use of D-BUS]),
+        AS_HELP_STRING([--disable-dbus],[Disable use of D-Bus]),
         [case "${enableval}" in
                 yes) HAVE_DBUS=yes ;;
                 no)  HAVE_DBUS=no ;;
@@ -383,8 +383,8 @@ AC_ARG_ENABLE(dbus,
         esac],
         [HAVE_DBUS=yes]) 
 
-AC_ARG_WITH(dbus-sys, AS_HELP_STRING([--with-dbus-sys=<dir>], [where D-BUS system.d directory is]))
-AC_ARG_WITH(dbus-system-socket, AS_HELP_STRING([--with-dbus-system-address=<address>], [where the dbus system socket is, you probably want to put unix:path= at the start]))
+AC_ARG_WITH(dbus-sys, AS_HELP_STRING([--with-dbus-sys=<dir>], [Path to D-Bus system.d directory]))
+AC_ARG_WITH(dbus-system-socket, AS_HELP_STRING([--with-dbus-system-address=<address>], [Path to the D-Bus system socket, you probably want to put unix:path= at the start. Only needed for very old D-Bus releases]))
 
 DBUS_VERSION="Disabled"
 DBUS_SYS_DIR="Disabled"
@@ -392,7 +392,7 @@ DBUS_SYSTEM_BUS_DEFAULT_ADDRESS="Disabled"
 if test "x$HAVE_DBUS" = "xyes" ; then
     PKG_CHECK_MODULES(DBUS, [ dbus-1 >= 0.34 ])
 
-    AC_DEFINE(HAVE_DBUS, 1, [Whether we have D-BUS or not])
+    AC_DEFINE(HAVE_DBUS, 1, [Whether we have D-Bus or not])
 
     DBUS_VERSION=`$PKG_CONFIG dbus-1 --modversion`
     DBUS_VERSION_MAJOR=`echo $DBUS_VERSION | awk -F. '{print $1}'`
@@ -409,16 +409,16 @@ if test "x$HAVE_DBUS" = "xyes" ; then
     fi
 
     if test "z$DBUS_VERSION_MAJOR" = "z0" -a "z$DBUS_VERSION_MINOR" = "z0" -a "z$DBUS_VERSION_MICRO" = "z0"; then
-        echo "Error: Couldn't determine the version of your DBUS package."
+        echo "Error: Couldn't determine the version of your D-Bus package."
         echo "  This is probably an error in this script, please report it"
         echo "  along with the following information:"
-        echo "      Base DBUS version ='$DBUS_VERSION'"
+        echo "      Base D-Buss version ='$DBUS_VERSION'"
         echo "      DBUS_VERSION_MAJOR='$DBUS_VERSION_MAJOR'"
         echo "      DBUS_VERSION_MINOR='$DBUS_VERSION_MINOR'"
         echo "      DBUS_VERSION_MICRO='$DBUS_VERSION_MICRO'"
         exit 1
     else
-        echo "Your dbus version is $DBUS_VERSION_MAJOR,$DBUS_VERSION_MINOR,$DBUS_VERSION_MICRO."
+        echo "Your D-Bus version is $DBUS_VERSION_MAJOR,$DBUS_VERSION_MINOR,$DBUS_VERSION_MICRO."
         DBUS_CFLAGS="$DBUS_CFLAGS -DDBUS_VERSION_MAJOR=$DBUS_VERSION_MAJOR"
         DBUS_CFLAGS="$DBUS_CFLAGS -DDBUS_VERSION_MINOR=$DBUS_VERSION_MINOR"
         DBUS_CFLAGS="$DBUS_CFLAGS -DDBUS_VERSION_MICRO=$DBUS_VERSION_MICRO"
@@ -438,11 +438,11 @@ if test "x$HAVE_DBUS" = "xyes" ; then
     if ! test -z "$with_dbus_system_address" ; then
         DBUS_SYSTEM_BUS_DEFAULT_ADDRESS="$with_dbus_system_address"
     else
-        # This is ugly, but D-BUS doesn't export this address for us
+        # This is ugly, but D-Bus doesn't export this address for us
         # so we have to guess, pretty much all setups i've seen have 
         # it in /var/lib/dbus or /var/run/dbus, and its defaulted to
         # /var/run upstream so we will try guess first then default
-        # to /var/run/dbus
+        # to /var/run/dbus.
 
         DBUS_SYSTEM_BUS_DEFAULT_ADDRESS="unix:path=/var/run/dbus/system_bus_socket"
         TRY_SOCKETS="/var/lib/dbus/system_bus_socket /var/run/dbus/system_bus_socket ${localstatedir}/run/dbus/system_bus_socket ${prefix}/var/run/dbus/system_bus_socket"
@@ -454,6 +454,10 @@ if test "x$HAVE_DBUS" = "xyes" ; then
     fi
     AC_SUBST(DBUS_SYSTEM_BUS_DEFAULT_ADDRESS)
     
+    SAVED_LIBS="$LIBS"
+    LIBS="$LIBS $DBUS_LIBS"
+    AC_CHECK_FUNCS([dbus_connection_close dbus_bus_get_private])
+    LIBS="$SAVED_LIBS"
 fi
 AM_CONDITIONAL(HAVE_DBUS, test "x$HAVE_DBUS" = "xyes")
 
@@ -577,7 +581,7 @@ if test "x$HAVE_PYTHON" = "xyes" ; then
 
     if test "x$HAVE_DBUS" = "xyes" ; then
         AC_ARG_ENABLE(python-dbus,
-           AS_HELP_STRING([--disable-python-dbus],[Disable use of D-BUS in Python]),
+           AS_HELP_STRING([--disable-python-dbus],[Disable use of D-Bus in Python]),
             [case "${enableval}" in
                    yes) HAVE_PYTHON_DBUS=yes ;;
                    no)  HAVE_PYTHON_DBUS=no ;;
@@ -674,9 +678,9 @@ AC_ARG_ENABLE(autoipd,
 AM_CONDITIONAL(ENABLE_AUTOIPD, test "x$ENABLE_AUTOIPD" = "xyes")
 
 #
-# Defining Avahi User and Group.
+# Defining users and groups
 #
-AC_ARG_WITH(avahi_user, AS_HELP_STRING([--with-avahi-user=<user>],[User for running the Avahi daemon (avahi)]))
+AC_ARG_WITH(avahi_user, AS_HELP_STRING([--with-avahi-user=<user>],[User for running avahi-daemon (avahi)]))
 if test -z "$with_avahi_user" ; then
     AVAHI_USER=avahi
 else
@@ -685,7 +689,7 @@ fi
 AC_SUBST(AVAHI_USER)
 AC_DEFINE_UNQUOTED(AVAHI_USER,"$AVAHI_USER", [User for running the Avahi daemon])
 
-AC_ARG_WITH(avahi_group,AS_HELP_STRING([--with-avahi-group=<group>],[Group for Avahi (avahi)]))
+AC_ARG_WITH(avahi_group,AS_HELP_STRING([--with-avahi-group=<group>],[Group for running avahi-daemon (avahi)]))
 if test -z "$with_avahi_group" ; then
     AVAHI_GROUP=avahi
 else
@@ -703,6 +707,24 @@ fi
 AC_SUBST(AVAHI_PRIV_ACCESS_GROUP)
 AC_DEFINE_UNQUOTED(AVAHI_PRIV_ACCESS_GROUP,"$AVAHI_PRIV_ACCESS_GROUP", [Privileged access group for Avahi clients])
 
+AC_ARG_WITH(autoipd_user, AS_HELP_STRING([--with-autipd-user=<user>],[User for running the avahi-autoipd daemon (avahi-autoipd)]))
+if test -z "$with_autoipd_user" ; then
+    AVAHI_AUTOIPD_USER=avahi-autoipd
+else
+    AVAHI_AUTOIPD_USER=$with_autoipd_user
+fi
+AC_SUBST(AVAHI_AUTOIPD_USER)
+AC_DEFINE_UNQUOTED(AVAHI_AUTOIPD_USER,"$AVAHI_AUTOIPD_USER", [User for running the avahi-autoipd daemon])
+
+AC_ARG_WITH(autoipd_group,AS_HELP_STRING([--with-autoipd-group=<group>],[Group for running the avahi-autoipd daemon (avahi-autoipd)]))
+if test -z "$with_autoipd_group" ; then
+    AVAHI_AUTOIPD_GROUP=avahi-autoipd
+else
+    AVAHI_AUTOIPD_GROUP=$with_autoipd_group
+fi
+AC_SUBST(AVAHI_AUTOIPD_GROUP)
+AC_DEFINE_UNQUOTED(AVAHI_AUTOIPD_GROUP,"$AVAHI_AUTOIPD_GROUP", [Group for running the avahi-autoipd daemon])
+
 #
 # Avahi runtime dir
 #
@@ -877,7 +899,7 @@ echo "
     CFLAGS:                                    ${CFLAGS}
     Enable GLIB:                               ${HAVE_GLIB}
     Enable GTK:                                ${HAVE_GTK}
-    Enable D-BUS:                              ${HAVE_DBUS}
+    Enable D-Bus:                              ${HAVE_DBUS}
     Enable Expat:                              ${HAVE_EXPAT}
     Enable GDBM:                               ${HAVE_GDBM}
     Enable DBM:                                ${HAVE_DBM}
@@ -890,9 +912,11 @@ echo "
     Enable Mono:                               ${HAVE_MONO}
     Enable Monodoc:                            ${HAVE_MONODOC}
     Distribution/OS:                           ${with_distro}
-    User for Avahi daemon:                     ${AVAHI_USER}
-    Group for Avahi daemon:                    ${AVAHI_GROUP}
-    Priviliged Access Group for Avahi Clients: ${AVAHI_PRIV_ACCESS_GROUP}
+    User for avahi-daemon:                     ${AVAHI_USER}
+    Group for avahi-daemon:                    ${AVAHI_GROUP}
+    Priviliged access group for Avahi clients: ${AVAHI_PRIV_ACCESS_GROUP}
+    User for avahi-autopid:                    ${AVAHI_AUTOIPD_USER}
+    Group for avahi-autoipd:                   ${AVAHI_AUTOIPD_GROUP}
     Enable chroot():                           ${enable_chroot}
 "
 
@@ -908,7 +932,7 @@ if test "x$BUILD_DAEMON" = "xyes" -a "x$HAVE_DBUS" = "xyes" -a "x$HAVE_PYTHON" =
     BUILD_PYTHON=yes
 fi
 
-BUILD_CLIENT="no   (You need avahi-daemon and dbus!)"
+BUILD_CLIENT="no   (You need avahi-daemon and D-Bus!)"
 
 if test "x$BUILD_DAEMON" = "xyes" -a "x$HAVE_DBUS" = "xyes" ; then
     BUILD_CLIENT=yes