1
0
mirror of https://github.com/systemd/systemd.git synced 2024-12-22 17:35:35 +03:00

bus: do kdbus only if this is enabled on the configure switch

Since we want to retain the ability to break kernel ←→ userspace ABI
after the next release, let's not make use by default of kdbus, so that
people with future kernels will not suddenly break with current systemd
versions.

kdbus support is left in all builds but must now be explicitly requested
at runtime (for example via setting $DBUS_SESSION_BUS). Via a configure
switch the old behaviour can be restored. In fact, we change autogen.sh
to do this, so that git builds (which run autogen.sh) get kdbus by
default, but tarball builds (which ue the configure defaults) do not get
it, and hence this stays out of the distros by default.
This commit is contained in:
Lennart Poettering 2013-11-30 20:18:48 +01:00
parent 4734b89564
commit 626851be97
5 changed files with 32 additions and 6 deletions

2
TODO
View File

@ -129,7 +129,7 @@ Features:
- support "const" properties as flag - support "const" properties as flag
- add API to clone sd_bus_message objects - add API to clone sd_bus_message objects
- SD_BUS_COMMENT() macro for inclusion in vtables, syntax inspired by gdbus - SD_BUS_COMMENT() macro for inclusion in vtables, syntax inspired by gdbus
- unelss configure option is specified refuse connecting and creating kdbus, so that we can break compat - make sd_bus_open_system_container() kdbus aware
- longer term: - longer term:
* priority queues * priority queues
* priority inheritance * priority inheritance

View File

@ -54,10 +54,10 @@ args="$args \
fi fi
if [ "x$1" = "xc" ]; then if [ "x$1" = "xc" ]; then
./configure CFLAGS='-g -O0' $args ./configure CFLAGS='-g -O0' --enable-kdbus $args
make clean make clean
elif [ "x$1" = "xg" ]; then elif [ "x$1" = "xg" ]; then
./configure CFLAGS='-g -Og' $args ./configure CFLAGS='-g -Og' --enable-kdbus $args
make clean make clean
else else
echo echo
@ -65,6 +65,6 @@ else
echo "Initialized build system. For a common configuration please run:" echo "Initialized build system. For a common configuration please run:"
echo "----------------------------------------------------------------" echo "----------------------------------------------------------------"
echo echo
echo "./configure CFLAGS='-g -O0' $args" echo "./configure CFLAGS='-g -O0' --enable-kdbus $args"
echo echo
fi fi

View File

@ -799,6 +799,15 @@ if test "x$enable_multi_seat_x" != "xno"; then
fi fi
AM_CONDITIONAL(ENABLE_MULTI_SEAT_X, [test "$have_multi_seat_x" = "yes"]) AM_CONDITIONAL(ENABLE_MULTI_SEAT_X, [test "$have_multi_seat_x" = "yes"])
# ------------------------------------------------------------------------------
have_kdbus=no
AC_ARG_ENABLE(kdbus, AS_HELP_STRING([--enable-kdbus], [do not connect to kdbus by default]))
if test "x$enable_kdbus" == "xyes"; then
AC_DEFINE(ENABLE_KDBUS, 1, [Define if kdbus support is to be enabled])
have_kdbus=yes
fi
AM_CONDITIONAL(ENABLE_KDBUS, [test "$have_kdbus" = "yes"])
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
AC_ARG_WITH(rc-local-script-path-start, AC_ARG_WITH(rc-local-script-path-start,
AS_HELP_STRING([--with-rc-local-script-path-start=PATH], AS_HELP_STRING([--with-rc-local-script-path-start=PATH],
@ -1084,6 +1093,7 @@ AC_MSG_RESULT([
gudev: ${enable_gudev} gudev: ${enable_gudev}
gintrospection: ${enable_introspection} gintrospection: ${enable_introspection}
multi-seat-x: ${have_multi_seat_x} multi-seat-x: ${have_multi_seat_x}
kdbus: ${have_kdbus}
Python: ${have_python} Python: ${have_python}
Python Headers: ${have_python_devel} Python Headers: ${have_python_devel}
man pages: ${have_manpages} man pages: ${have_manpages}

View File

@ -414,6 +414,7 @@ static int manager_setup_kdbus(Manager *m) {
assert(m); assert(m);
#ifdef ENABLE_KDBUS
if (m->kdbus_fd >= 0) if (m->kdbus_fd >= 0)
return 0; return 0;
@ -428,6 +429,8 @@ static int manager_setup_kdbus(Manager *m) {
} }
log_info("Successfully set up kdbus on %s", p); log_info("Successfully set up kdbus on %s", p);
#endif
return 0; return 0;
} }

View File

@ -993,7 +993,11 @@ _public_ int sd_bus_open_system(sd_bus **ret) {
if (e) if (e)
r = sd_bus_set_address(b, e); r = sd_bus_set_address(b, e);
else else
#ifdef ENABLE_KDBUS
r = sd_bus_set_address(b, "kernel:path=/dev/kdbus/0-system/bus;unix:path=/run/dbus/system_bus_socket"); r = sd_bus_set_address(b, "kernel:path=/dev/kdbus/0-system/bus;unix:path=/run/dbus/system_bus_socket");
#else
r = sd_bus_set_address(b, "unix:path=/run/dbus/system_bus_socket");
#endif
if (r < 0) if (r < 0)
goto fail; goto fail;
@ -1035,13 +1039,22 @@ _public_ int sd_bus_open_user(sd_bus **ret) {
ee = bus_address_escape(e); ee = bus_address_escape(e);
if (!ee) { if (!ee) {
r = -ENOENT; r = -ENOMEM;
goto fail; goto fail;
} }
#ifdef ENABLE_KDBUS
asprintf(&b->address, "kernel:path=/dev/kdbus/%lu-user/bus;unix:path=%s/bus", (unsigned long) getuid(), ee); asprintf(&b->address, "kernel:path=/dev/kdbus/%lu-user/bus;unix:path=%s/bus", (unsigned long) getuid(), ee);
} else #else
b->address = strjoin("unix:path=", ee, "/bus", NULL);
#endif
} else {
#ifdef ENABLE_KDBUS
asprintf(&b->address, "kernel:path=/dev/kdbus/%lu-user/bus", (unsigned long) getuid()); asprintf(&b->address, "kernel:path=/dev/kdbus/%lu-user/bus", (unsigned long) getuid());
#else
return -ECONNREFUSED;
#endif
}
if (!b->address) { if (!b->address) {
r = -ENOMEM; r = -ENOMEM;