summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am5
-rw-r--r--bus/.gitignore2
-rw-r--r--bus/Makefile.am23
-rw-r--r--bus/dbus.service.in13
-rw-r--r--bus/dbus.socket.in5
-rw-r--r--configure.in115
6 files changed, 106 insertions, 57 deletions
diff --git a/Makefile.am b/Makefile.am
index 733abab2..d937dcf9 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -2,7 +2,7 @@ SUBDIRS=dbus bus doc tools test
DIST_SUBDIRS=dbus bus doc tools test
pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = dbus-1.pc
+pkgconfig_DATA = dbus-1.pc
DISTCLEANFILES = \
dbus-1.pc
@@ -61,3 +61,6 @@ endif
update-authors:
git shortlog -s -e | cut -c 8- | sort > AUTHORS
+
+DISTCHECK_CONFIGURE_FLAGS = \
+ --with-systemdsystemunitdir=$$dc_install_base/$(systemdsystemunitdir)
diff --git a/bus/.gitignore b/bus/.gitignore
index 0b67447d..ff8d3038 100644
--- a/bus/.gitignore
+++ b/bus/.gitignore
@@ -21,3 +21,5 @@ system.conf
dbus-daemon.1
bus-test-launch-helper
bus-test-system
+dbus.service
+dbus.socket
diff --git a/bus/Makefile.am b/bus/Makefile.am
index 5a8d04d4..af1878ea 100644
--- a/bus/Makefile.am
+++ b/bus/Makefile.am
@@ -74,7 +74,7 @@ BUS_SOURCES= \
dbus_daemon_SOURCES= \
$(BUS_SOURCES) \
- main.c
+ main.c
dbus_daemon_CPPFLAGS = -DDBUS_STATIC_BUILD
dbus_daemon_LDADD= \
@@ -151,7 +151,7 @@ extra_inst_programs+=dbus-daemon
endif
## note that TESTS has special meaning (stuff to use in make check)
-## so if adding tests not to be run in make check, don't add them to
+## so if adding tests not to be run in make check, don't add them to
## TESTS
if DBUS_BUILD_TESTS
TESTS_ENVIRONMENT=DBUS_TEST_DATA=$(top_builddir)/test/data DBUS_TEST_HOMEDIR=$(top_builddir)/dbus DBUS_FATAL_WARNINGS=1 DBUS_BLOCK_ON_ABORT=1
@@ -160,7 +160,7 @@ else
TESTS=
endif
-## we use noinst_PROGRAMS not check_PROGRAMS so that we build
+## we use noinst_PROGRAMS not check_PROGRAMS so that we build
## even when not doing "make check"
noinst_PROGRAMS=$(TESTS) $(extra_noinst_programs)
bin_PROGRAMS=$(extra_inst_programs)
@@ -219,6 +219,11 @@ if DBUS_UNIX
fi \
fi
endif
+if HAVE_SYSTEMD
+# Install dbus.socket as default implementation of a D-Bus stack
+ $(mkinstalldirs) $(DESTDIR)$(systemdsystemunitdir)/dbus.target.wants
+ $(LN_S) ../dbus.socket $(DESTDIR)$(systemdsystemunitdir)/dbus.target.wants/dbus.socket
+endif
#### Init scripts fun
SCRIPT_IN_FILES=messagebus.in \
@@ -246,9 +251,19 @@ initd_SCRIPTS= \
endif
## Slackware end
+if HAVE_SYSTEMD
+SCRIPT_IN_FILES += \
+ dbus.service.in \
+ dbus.socket.in
+
+systemdsystemunit_DATA = \
+ dbus.service \
+ dbus.socket
+endif
+
MAN_IN_FILES=dbus-daemon.1.in
man_MANS = dbus-daemon.1
-#### Extra dist
+#### Extra dist
EXTRA_DIST=$(CONFIG_IN_FILES) $(SCRIPT_IN_FILES) $(man_MANS) $(MAN_IN_FILES)
diff --git a/bus/dbus.service.in b/bus/dbus.service.in
new file mode 100644
index 00000000..8d70756f
--- /dev/null
+++ b/bus/dbus.service.in
@@ -0,0 +1,13 @@
+[Unit]
+Description=D-Bus System Message Bus
+Requires=dbus.socket
+After=syslog.target
+
+[Service]
+ExecStartPre=@EXPANDED_BINDIR@/dbus-uuidgen --ensure
+ExecStart=@EXPANDED_BINDIR@/dbus-daemon --system --address=systemd: --nofork --systemd-activation
+ExecReload=@EXPANDED_BINDIR@/dbus-send --print-reply --system --type=method_call --dest=org.freedesktop.DBus / org.freedesktop.DBus.ReloadConfig
+
+[Install]
+WantedBy=multi-user.target
+Also=dbus.socket
diff --git a/bus/dbus.socket.in b/bus/dbus.socket.in
new file mode 100644
index 00000000..5eac60f7
--- /dev/null
+++ b/bus/dbus.socket.in
@@ -0,0 +1,5 @@
+[Socket]
+ListenStream=@DBUS_SYSTEM_SOCKET@
+
+[Install]
+WantedBy=sockets.target
diff --git a/configure.in b/configure.in
index 497bdf33..648b1155 100644
--- a/configure.in
+++ b/configure.in
@@ -138,7 +138,7 @@ AC_ARG_WITH(console-owner-file, AS_HELP_STRING([--with-console-owner-file=[filen
AC_ARG_WITH(dbus_user, AS_HELP_STRING([--with-dbus-user=<user>],[User for running the DBUS daemon (messagebus)]))
AC_ARG_WITH(dbus_daemondir, AS_HELP_STRING([--with-dbus-daemondir=[dirname]],[Directory for installing the DBUS daemon]))
-dnl DBUS_BUILD_TESTS controls unit tests built in to .c files
+dnl DBUS_BUILD_TESTS controls unit tests built in to .c files
dnl and also some stuff in the test/ subdir
AM_CONDITIONAL(DBUS_BUILD_TESTS, test x$enable_tests = xyes)
if test x$enable_tests = xyes; then
@@ -155,7 +155,7 @@ if test x$enable_asserts = xno; then
R_DYNAMIC_LDFLAG=""
else
# -rdynamic is needed for glibc's backtrace_symbols to work.
- # No clue how much overhead this adds, but it's useful
+ # No clue how much overhead this adds, but it's useful
# to do this on any assertion failure,
# so for now it's enabled anytime asserts are (currently not
# in production builds).
@@ -181,7 +181,7 @@ if test x$enable_gcov = xyes; then
AC_MSG_CHECKING([for gcc 3.3 version of gcov file format])
have_gcc33_gcov=no
- AC_RUN_IFELSE( [AC_LANG_PROGRAM( , [[ if (__GNUC__ >=3 && __GNUC_MINOR__ >= 3) exit (0); else exit (1); ]])],
+ AC_RUN_IFELSE( [AC_LANG_PROGRAM( , [[ if (__GNUC__ >=3 && __GNUC_MINOR__ >= 3) exit (0); else exit (1); ]])],
have_gcc33_gcov=yes)
if test x$have_gcc33_gcov = xyes ; then
AC_DEFINE_UNQUOTED(DBUS_HAVE_GCC33_GCOV, 1, [Defined if we have gcc 3.3 and thus the new gcov format])
@@ -215,7 +215,7 @@ AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer,
]
)
-#### Integer sizes
+#### Integer sizes
AC_CHECK_SIZEOF(char)
AC_CHECK_SIZEOF(short)
@@ -495,13 +495,13 @@ DIR *dirp;
dirp = opendir(".");
dirfd(dirp);
closedir(dirp);
-],
+],
dbus_have_dirfd=yes, dbus_have_dirfd=no)
AC_MSG_RESULT($dbus_have_dirfd)
if test "$dbus_have_dirfd" = yes; then
AC_DEFINE(HAVE_DIRFD,1,[Have dirfd function])
else
- AC_MSG_CHECKING(for DIR *dirp->dd_fd)
+ AC_MSG_CHECKING(for DIR *dirp->dd_fd)
AC_TRY_LINK([
#include <sys/types.h>
#include <dirent.h>
@@ -543,7 +543,7 @@ case $host_os in
solaris*)
CFLAGS="$CFLAGS -D_POSIX_PTHREAD_SEMANTICS" ;;
esac
-
+
# checking for a posix version of getpwnam_r
# if we are cross compiling and can not run the test
# assume getpwnam_r is the posix version
@@ -562,10 +562,10 @@ AC_CACHE_CHECK([for posix getpwnam_r],
struct passwd pwd, *pwptr = &pwd;
int error;
errno = 0;
- error = getpwnam_r ("", &pwd, buffer,
+ error = getpwnam_r ("", &pwd, buffer,
sizeof (buffer), &pwptr);
- return (error < 0 && errno == ENOSYS)
- || error == ENOSYS;
+ return (error < 0 && errno == ENOSYS)
+ || error == ENOSYS;
]])],
[ac_cv_func_posix_getpwnam_r=yes],
[ac_cv_func_posix_getpwnam_r=no],
@@ -574,22 +574,22 @@ AC_CACHE_CHECK([for posix getpwnam_r],
AC_LANG_POP(C)
if test "$ac_cv_func_posix_getpwnam_r" = yes; then
- AC_DEFINE(HAVE_POSIX_GETPWNAM_R,1,
- [Have POSIX function getpwnam_r])
+ AC_DEFINE(HAVE_POSIX_GETPWNAM_R,1,
+ [Have POSIX function getpwnam_r])
else
- AC_CACHE_CHECK([for nonposix getpwnam_r],
- ac_cv_func_nonposix_getpwnam_r,
- [AC_TRY_LINK([#include <pwd.h>],
- [char buffer[10000];
- struct passwd pwd;
- getpwnam_r ("", &pwd, buffer,
- sizeof (buffer));],
- [ac_cv_func_nonposix_getpwnam_r=yes],
- [ac_cv_func_nonposix_getpwnam_r=no])])
- if test "$ac_cv_func_nonposix_getpwnam_r" = yes; then
- AC_DEFINE(HAVE_NONPOSIX_GETPWNAM_R,1,
- [Have non-POSIX function getpwnam_r])
- fi
+ AC_CACHE_CHECK([for nonposix getpwnam_r],
+ ac_cv_func_nonposix_getpwnam_r,
+ [AC_TRY_LINK([#include <pwd.h>],
+ [char buffer[10000];
+ struct passwd pwd;
+ getpwnam_r ("", &pwd, buffer,
+ sizeof (buffer));],
+ [ac_cv_func_nonposix_getpwnam_r=yes],
+ [ac_cv_func_nonposix_getpwnam_r=no])])
+ if test "$ac_cv_func_nonposix_getpwnam_r" = yes; then
+ AC_DEFINE(HAVE_NONPOSIX_GETPWNAM_R,1,
+ [Have non-POSIX function getpwnam_r])
+ fi
fi
dnl check for socklen_t
@@ -608,7 +608,7 @@ if test "x$dbus_have_socklen_t" = "xyes"; then
AC_DEFINE(HAVE_SOCKLEN_T,1,[Have socklen_t type])
fi
-dnl check for writev header and writev function so we're
+dnl check for writev header and writev function so we're
dnl good to go if HAVE_WRITEV gets defined.
AC_CHECK_HEADERS(sys/uio.h, [AC_CHECK_FUNCS(writev)])
@@ -683,9 +683,9 @@ AC_CACHE_CHECK([abstract socket namespace],
[[
int listen_fd;
struct sockaddr_un addr;
-
+
listen_fd = socket (PF_UNIX, SOCK_STREAM, 0);
-
+
if (listen_fd < 0)
{
fprintf (stderr, "socket() failed: %s\n", strerror (errno));
@@ -696,14 +696,14 @@ AC_CACHE_CHECK([abstract socket namespace],
addr.sun_family = AF_UNIX;
strcpy (addr.sun_path, "X/tmp/dbus-fake-socket-path-used-in-configure-test");
addr.sun_path[0] = '\0'; /* this is what makes it abstract */
-
+
if (bind (listen_fd, (struct sockaddr*) &addr, SUN_LEN (&addr)) < 0)
{
- fprintf (stderr, "Abstract socket namespace bind() failed: %s\n",
+ fprintf (stderr, "Abstract socket namespace bind() failed: %s\n",
strerror (errno));
exit (1);
}
- else
+ else
exit (0);
]])],
[ac_cv_have_abstract_sockets=yes],
@@ -736,10 +736,12 @@ else
DBUS_PATH_OR_ABSTRACT=path
fi
-# this is used in addresses to prefer abstract, e.g.
-# unix:path=/foo or unix:abstract=/foo
+# this is used in addresses to prefer abstract, e.g.
+# unix:path=/foo or unix:abstract=/foo
AC_SUBST(DBUS_PATH_OR_ABSTRACT)
+PKG_PROG_PKG_CONFIG
+
#### Sort out XML library
# see what we have
@@ -762,7 +764,7 @@ elif test x$with_xml = xlibxml; then
fi
dbus_use_libxml=true
else
- ### expat is the default because libxml can't currently survive
+ ### expat is the default because libxml can't currently survive
### our brutal OOM-handling unit test setup.
### http://bugzilla.gnome.org/show_bug.cgi?id=109368
if test x$have_expat = xfalse; then
@@ -818,7 +820,7 @@ if test x$enable_selinux = xno ; then
have_selinux=no;
else
# See if we have SELinux library
- AC_CHECK_LIB(selinux, is_selinux_enabled,
+ AC_CHECK_LIB(selinux, is_selinux_enabled,
have_selinux=yes, have_selinux=no)
# see if we have the SELinux header with the new D-Bus stuff in it
@@ -837,7 +839,7 @@ else
if test x$have_selinux = xno ; then
AC_MSG_WARN([Sufficiently new SELinux library not found])
fi
- else
+ else
if test x$have_selinux = xno ; then
AC_MSG_ERROR([SElinux explicitly required, and SELinux library not found])
fi
@@ -878,7 +880,7 @@ if test x$enable_dnotify = xno ; then
have_dnotify=no;
else
if test x$have_inotify = xno -a x$host_os = xlinux-gnu -o x$host_os = xlinux; then
- have_dnotify=yes;
+ have_dnotify=yes;
else
have_dnotify=no;
fi
@@ -909,7 +911,7 @@ if test x$have_kqueue = xyes; then
AC_DEFINE(DBUS_BUS_ENABLE_KQUEUE,1,[Use kqueue])
fi
-AM_CONDITIONAL(DBUS_BUS_ENABLE_KQUEUE, test x$have_kqueue = xyes)
+AM_CONDITIONAL(DBUS_BUS_ENABLE_KQUEUE, test x$have_kqueue = xyes)
dnl console owner file
if test x$enable_console_owner_file = xno ; then
@@ -932,7 +934,7 @@ if test x$enable_libaudit = xno ; then
have_libaudit=no;
else
# See if we have audit daemon & capabilities library
- AC_CHECK_LIB(audit, audit_log_user_avc_message,
+ AC_CHECK_LIB(audit, audit_log_user_avc_message,
have_libaudit=yes, have_libaudit=no)
if test x$have_libaudit = xyes ; then
AC_CHECK_LIB(cap-ng, capng_clear,
@@ -1011,7 +1013,7 @@ if test x$dbus_win = xyes ; then
else
AC_PATH_XTRA
-## for now enable_x11 just tracks have_x11,
+## for now enable_x11 just tracks have_x11,
## there's no --enable-x11
if test x$no_x = xyes ; then
have_x11=no
@@ -1128,7 +1130,7 @@ if test "x$GCC" = "xyes"; then
case " $CFLAGS " in
*[\ \ ]-Wfloat-equal[\ \ ]*) ;;
*) if cc_supports_flag -Wfloat-equals; then
- CFLAGS="$CFLAGS -Wfloat-equal"
+ CFLAGS="$CFLAGS -Wfloat-equal"
fi
;;
esac
@@ -1172,18 +1174,18 @@ if test "x$GCC" = "xyes"; then
fi
;;
esac
-
+
### Disabled warnings, and compiler flag overrides
-
+
# Let's just ignore unused for now
case " $CFLAGS " in
*[\ \ ]-Wno-unused[\ \ ]*) ;;
*) CFLAGS="$CFLAGS -Wno-unused" ;;
- esac
-
+ esac
+
# This group is for warnings we currently don't pass.
# We would like to, however. Please fix.
-
+
# http://bugs.freedesktop.org/show_bug.cgi?id=17433
case " $CFLAGS " in
*[\ \ ]-Wno-sign-compare[\ \ ]*) ;;
@@ -1196,7 +1198,7 @@ if test "x$GCC" = "xyes"; then
fi
;;
esac
-
+
# This one is special - it's not a warning override.
# http://bugs.freedesktop.org/show_bug.cgi?id=10599
case " $CFLAGS " in
@@ -1224,7 +1226,7 @@ if test "x$GCC" = "xyes"; then
case " $CFLAGS " in
*[\ \ ]-pedantic[\ \ ]*) ;;
*) CFLAGS="$CFLAGS -pedantic" ;;
- esac
+ esac
fi
if test x$enable_gcov = xyes; then
case " $CFLAGS " in
@@ -1247,9 +1249,9 @@ else
fi
AC_SUBST(PIC_CFLAGS)
-AC_SUBST(PIC_LDFLAGS)
+AC_SUBST(PIC_LDFLAGS)
AC_SUBST(PIE_CFLAGS)
-AC_SUBST(PIE_LDFLAGS)
+AC_SUBST(PIE_LDFLAGS)
if ld_supports_flag --gc-sections; then
SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS"
@@ -1265,7 +1267,7 @@ case $host_os in
solaris*)
CFLAGS="$CFLAGS -D_POSIX_PTHREAD_SEMANTICS" ;;
esac
-
+
changequote(,)dnl
# compress spaces in flags
CFLAGS=`echo "$CFLAGS" | sed -e 's/ +/ /g'`
@@ -1372,6 +1374,13 @@ AM_CONDITIONAL(DBUS_INIT_SCRIPTS_RED_HAT, test x$with_init_scripts = xredhat)
AM_CONDITIONAL(DBUS_INIT_SCRIPTS_SLACKWARE, test x$with_init_scripts = xslackware)
+##### systemd unit files
+AC_ARG_WITH([systemdsystemunitdir],
+AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files]),
+ [], [with_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)])
+AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])
+AM_CONDITIONAL(HAVE_SYSTEMD, [test -n "$with_systemdsystemunitdir"])
+
##### Set up location for system bus socket
if ! test -z "$with_system_socket"; then
DBUS_SYSTEM_SOCKET=$with_system_socket
@@ -1382,7 +1391,7 @@ fi
AC_SUBST(DBUS_SYSTEM_SOCKET)
AC_DEFINE_UNQUOTED(DBUS_SYSTEM_SOCKET,"$DBUS_SYSTEM_SOCKET",[The name of the socket the system bus listens on by default])
-## system bus only listens on local domain sockets, and never
+## system bus only listens on local domain sockets, and never
## on an abstract socket (so only root can create the socket)
DBUS_SYSTEM_BUS_DEFAULT_ADDRESS="unix:path=$DBUS_SYSTEM_SOCKET"
AC_SUBST(DBUS_SYSTEM_BUS_DEFAULT_ADDRESS)
@@ -1556,6 +1565,8 @@ bus/session.conf
bus/messagebus
bus/rc.messagebus
bus/dbus-daemon.1
+bus/dbus.service
+bus/dbus.socket
Makefile
dbus/Makefile
bus/Makefile