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:
parent
4734b89564
commit
626851be97
2
TODO
2
TODO
@ -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
|
||||||
|
@ -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
|
||||||
|
10
configure.ac
10
configure.ac
@ -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}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user