From 59f3e8bef545762113c041a1ef5868e08b353045 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 31 Aug 2006 17:17:18 +0000 Subject: autoconf love: * 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 | 21 +++++++++++---- avahi-daemon/dbus-protocol.c | 8 +++--- configure.ac | 64 ++++++++++++++++++++++++++++++-------------- 3 files changed, 64 insertions(+), 29 deletions(-) diff --git a/avahi-client/client.c b/avahi-client/client.c index 825e88f..f665613 100644 --- a/avahi-client/client.c +++ b/avahi-client/client.c @@ -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); diff --git a/avahi-daemon/dbus-protocol.c b/avahi-daemon/dbus-protocol.c index 4fb58d2..e74caa3 100644 --- a/avahi-daemon/dbus-protocol.c +++ b/avahi-daemon/dbus-protocol.c @@ -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); diff --git a/configure.ac b/configure.ac index 8c2b1b5..7cf15b2 100644 --- a/configure.ac +++ b/configure.ac @@ -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=], [where D-BUS system.d directory is])) -AC_ARG_WITH(dbus-system-socket, AS_HELP_STRING([--with-dbus-system-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=], [Path to D-Bus system.d directory])) +AC_ARG_WITH(dbus-system-socket, AS_HELP_STRING([--with-dbus-system-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 for running the Avahi daemon (avahi)])) +AC_ARG_WITH(avahi_user, AS_HELP_STRING([--with-avahi-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 for Avahi (avahi)])) +AC_ARG_WITH(avahi_group,AS_HELP_STRING([--with-avahi-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 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 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 -- cgit