[systemd-commits] TODO autogen.sh configure.ac src/core src/libsystemd-bus

Lennart Poettering lennart at kemper.freedesktop.org
Sat Nov 30 11:23:46 PST 2013


 TODO                        |    2 +-
 autogen.sh                  |    6 +++---
 configure.ac                |   10 ++++++++++
 src/core/manager.c          |    3 +++
 src/libsystemd-bus/sd-bus.c |   17 +++++++++++++++--
 5 files changed, 32 insertions(+), 6 deletions(-)

New commits:
commit 626851be97b4332fc0401d754c81ae7bbc0f5dc4
Author: Lennart Poettering <lennart at poettering.net>
Date:   Sat Nov 30 20:18:48 2013 +0100

    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.

diff --git a/TODO b/TODO
index 65b11c7..e4acb15 100644
--- a/TODO
+++ b/TODO
@@ -129,7 +129,7 @@ Features:
   - support "const" properties as flag
   - add API to clone sd_bus_message objects
   - 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:
     * priority queues
     * priority inheritance
diff --git a/autogen.sh b/autogen.sh
index 9869c15..d0a2f3f 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -54,10 +54,10 @@ args="$args \
 fi
 
 if [ "x$1" = "xc" ]; then
-        ./configure CFLAGS='-g -O0' $args
+        ./configure CFLAGS='-g -O0' --enable-kdbus $args
         make clean
 elif [ "x$1" = "xg" ]; then
-        ./configure CFLAGS='-g -Og' $args
+        ./configure CFLAGS='-g -Og' --enable-kdbus $args
         make clean
 else
         echo
@@ -65,6 +65,6 @@ else
         echo "Initialized build system. For a common configuration please run:"
         echo "----------------------------------------------------------------"
         echo
-        echo "./configure CFLAGS='-g -O0' $args"
+        echo "./configure CFLAGS='-g -O0' --enable-kdbus $args"
         echo
 fi
diff --git a/configure.ac b/configure.ac
index 6995e78..6ada38a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -800,6 +800,15 @@ fi
 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,
         AS_HELP_STRING([--with-rc-local-script-path-start=PATH],
                 [Path to /etc/rc.local]),
@@ -1084,6 +1093,7 @@ AC_MSG_RESULT([
         gudev:                   ${enable_gudev}
         gintrospection:          ${enable_introspection}
         multi-seat-x:            ${have_multi_seat_x}
+        kdbus:                   ${have_kdbus}
         Python:                  ${have_python}
         Python Headers:          ${have_python_devel}
         man pages:               ${have_manpages}
diff --git a/src/core/manager.c b/src/core/manager.c
index 7de0b26..badf19e 100644
--- a/src/core/manager.c
+++ b/src/core/manager.c
@@ -414,6 +414,7 @@ static int manager_setup_kdbus(Manager *m) {
 
         assert(m);
 
+#ifdef ENABLE_KDBUS
         if (m->kdbus_fd >= 0)
                 return 0;
 
@@ -428,6 +429,8 @@ static int manager_setup_kdbus(Manager *m) {
         }
 
         log_info("Successfully set up kdbus on %s", p);
+#endif
+
         return 0;
 }
 
diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c
index e224be7..1244ec2 100644
--- a/src/libsystemd-bus/sd-bus.c
+++ b/src/libsystemd-bus/sd-bus.c
@@ -993,7 +993,11 @@ _public_ int sd_bus_open_system(sd_bus **ret) {
         if (e)
                 r = sd_bus_set_address(b, e);
         else
+#ifdef ENABLE_KDBUS
                 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)
                 goto fail;
@@ -1035,13 +1039,22 @@ _public_ int sd_bus_open_user(sd_bus **ret) {
 
                         ee = bus_address_escape(e);
                         if (!ee) {
-                                r = -ENOENT;
+                                r = -ENOMEM;
                                 goto fail;
                         }
 
+#ifdef ENABLE_KDBUS
                         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());
+#else
+                        return -ECONNREFUSED;
+#endif
+                }
 
                 if (!b->address) {
                         r = -ENOMEM;



More information about the systemd-commits mailing list