]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
turn kdbus support into a runtime option 263/head
authorKay Sievers <kay@vrfy.org>
Wed, 17 Jun 2015 14:37:55 +0000 (16:37 +0200)
committerKay Sievers <kay@vrfy.org>
Wed, 17 Jun 2015 16:01:49 +0000 (18:01 +0200)
./configure --enable/disable-kdbus can be used to set the default
behavior regarding kdbus.

If no kdbus kernel support is available, dbus-dameon will be used.

With --enable-kdbus, the kernel command line option "kdbus=0" can
be used to disable kdbus.

With --disable-kdbus, the kernel command line option "kdbus=1" is
required to enable kdbus support.

21 files changed:
Makefile-man.am
Makefile.am
configure.ac
man/systemd-bus-proxyd.xml
man/systemd-bus-proxyd@.service.xml
src/basic/def.h
src/bus-proxyd/bus-proxyd.c
src/bus-proxyd/stdio-bridge.c
src/core/execute.c
src/core/kmod-setup.c
src/core/load-fragment-gperf.gperf.m4
src/core/manager.c
src/core/mount-setup.c
src/core/service.c
src/libsystemd/sd-bus/sd-bus.c
src/login/pam_systemd.c
src/machine/machine-dbus.c
src/shared/bus-util.c
sysusers.d/systemd.conf.m4
units/systemd-networkd.service.m4.in
units/systemd-resolved.service.m4.in

index 15781ba44ac2e12950764d21a5df73f75401c6c2..9e2f4ba2e395f7be128a8b48c84f51b367da79ab 100644 (file)
@@ -1052,7 +1052,6 @@ MANPAGES_ALIAS += \
 
 endif
 
-if ENABLE_KDBUS
 MANPAGES += \
        man/sd_bus_creds_get_pid.3 \
        man/sd_bus_creds_new_from_pid.3 \
@@ -1491,8 +1490,6 @@ man/sd_event_unref.html: man/sd_event_new.html
 man/systemd-bus-proxyd.socket.html: man/systemd-bus-proxyd@.service.html
        $(html-alias)
 
-endif
-
 if ENABLE_LOCALED
 MANPAGES += \
        man/localectl.1 \
index 6594cabdf6652ab52ef591fcbb822e4a06364a56..7cc70445cc2ac9f0e099ed8e77175530024e106d 100644 (file)
@@ -338,10 +338,8 @@ INSTALL_EXEC_HOOKS += \
        install-aliases-hook \
        install-touch-usr-hook
 
-if ENABLE_KDBUS
 INSTALL_EXEC_HOOKS += \
        install-busnames-target-wants-hook
-endif
 
 # ------------------------------------------------------------------------------
 AM_V_M4 = $(AM_V_M4_$(V))
@@ -522,10 +520,8 @@ dist_systemunit_DATA = \
        units/initrd-switch-root.target \
        units/machines.target
 
-if ENABLE_KDBUS
 dist_systemunit_DATA += \
        $(dist_systemunit_DATA_busnames)
-endif
 
 dist_systemunit_DATA_busnames += \
        units/busnames.target
@@ -2622,7 +2618,6 @@ systemd_gpt_auto_generator_CFLAGS = \
 endif
 
 # ------------------------------------------------------------------------------
-if ENABLE_KDBUS
 systemgenerator_PROGRAMS +=  \
        systemd-dbus1-generator
 
@@ -2645,7 +2640,6 @@ dist_xinitrc_SCRIPTS = \
 
 INSTALL_EXEC_HOOKS += dbus1-generator-install-hook
 UNINSTALL_EXEC_HOOKS += dbus1-generator-uninstall-hook
-endif
 
 # ------------------------------------------------------------------------------
 systemd_sysv_generator_SOURCES = \
@@ -2793,7 +2787,6 @@ systemd_stdio_bridge_LDADD = \
        libbus-proxy-core.la \
        libshared.la
 
-if ENABLE_KDBUS
 nodist_systemunit_DATA += \
        units/systemd-bus-proxyd.service
 
@@ -2805,7 +2798,6 @@ nodist_userunit_DATA += \
 
 dist_userunit_DATA += \
        units/user/systemd-bus-proxyd.socket
-endif
 
 EXTRA_DIST += \
        units/systemd-bus-proxyd.service.m4.in \
@@ -2971,14 +2963,6 @@ pkginclude_HEADERS += \
        src/systemd/sd-id128.h \
        src/systemd/sd-daemon.h
 
-if ENABLE_KDBUS
-pkginclude_HEADERS += \
-       src/systemd/sd-utf8.h \
-       src/systemd/sd-netlink.h \
-       src/systemd/sd-resolve.h \
-       src/systemd/sd-path.h
-endif
-
 lib_LTLIBRARIES += \
        libsystemd.la
 
@@ -6174,10 +6158,8 @@ USER_UNIT_ALIASES += \
        $(systemunitdir)/sound.target sound.target \
        $(systemunitdir)/smartcard.target smartcard.target
 
-if ENABLE_KDBUS
 USER_UNIT_ALIASES += \
        $(systemunitdir)/busnames.target busnames.target
-endif
 
 GENERAL_ALIASES += \
        $(systemunitdir)/remote-fs.target $(pkgsysconfdir)/system/multi-user.target.wants/remote-fs.target \
@@ -6238,7 +6220,6 @@ DISTCHECK_CONFIGURE_FLAGS = \
        --with-pamlibdir=$$dc_install_base/$(pamlibdir) \
        --with-pamconfdir=$$dc_install_base/$(pamconfdir) \
        --with-rootprefix=$$dc_install_base \
-       --enable-kdbus \
        --enable-compat-libs
 
 if HAVE_SYSV_COMPAT
@@ -6299,11 +6280,6 @@ hwdb-update:
                http://standards.ieee.org/develop/regauth/iab/iab.txt && \
        ./ids-update.pl )
 
-.PHONY: kdbus-update
-kdbus-update:
-       ( cd $(top_srcdir)/src/libsystemd/sd-bus/ && \
-       wget -N https://d-bus.googlecode.com/git/kdbus.h )
-
 .PHONY: git-tag
 git-tag:
        git tag -s "v$(VERSION)" -m "systemd $(VERSION)"
index b94dbd161327344fe0c7a3726e23457392b279d0..e5d3994439aa7e39e49062bb434d8ac4a2da6cb9 100644 (file)
@@ -1203,9 +1203,9 @@ AM_CONDITIONAL(ENABLE_TERMINAL, [test "x$have_terminal" = "xyes" -a "x$have_unif
 
 # ------------------------------------------------------------------------------
 have_kdbus=no
-AC_ARG_ENABLE(kdbus, AS_HELP_STRING([--enable-kdbus], [do 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])
+AC_ARG_ENABLE(kdbus, AS_HELP_STRING([--disable-kdbus], [do not connect to kdbus by default]))
+if test "x$enable_kdbus" != "xno"; then
+        AC_DEFINE(ENABLE_KDBUS, 1, [Define if kdbus is to be connected to by default])
         have_kdbus=yes
         M4_DEFINES="$M4_DEFINES -DENABLE_KDBUS"
 fi
index bbcf3d0981edf7f2459106401b31b88ee3ebcea5..f7b94cd481612694d2951f5ad7b775dcf9d29f0f 100644 (file)
@@ -24,7 +24,7 @@
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 -->
 
-<refentry id="systemd-bus-proxyd" conditional="ENABLE_KDBUS"
+<refentry id="systemd-bus-proxyd"
           xmlns:xi="http://www.w3.org/2001/XInclude">
 
   <refentryinfo>
index 9dabc4dd5f6f3490de1f3a9c872f91abbe78c3ea..4ac6ba040c6a7b62b974e4cf0a88266d1b15ce83 100644 (file)
@@ -24,7 +24,7 @@
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 -->
 
-<refentry id="systemd-bus-proxyd@.service" conditional='ENABLE_KDBUS'>
+<refentry id="systemd-bus-proxyd@.service">
 
   <refentryinfo>
     <title>systemd-bus-proxyd@.service</title>
index 011c7c667e2feeddc8273f4cd80f30941dadb04c..5aaba1fe87264d06b2ca6448eafae0e167a9f07b 100644 (file)
 
 #define UNIX_SYSTEM_BUS_ADDRESS "unix:path=/var/run/dbus/system_bus_socket"
 #define KERNEL_SYSTEM_BUS_ADDRESS "kernel:path=/sys/fs/kdbus/0-system/bus"
-
-#ifdef ENABLE_KDBUS
-#  define DEFAULT_SYSTEM_BUS_ADDRESS KERNEL_SYSTEM_BUS_ADDRESS ";" UNIX_SYSTEM_BUS_ADDRESS
-#else
-#  define DEFAULT_SYSTEM_BUS_ADDRESS UNIX_SYSTEM_BUS_ADDRESS
-#endif
-
+#define DEFAULT_SYSTEM_BUS_ADDRESS KERNEL_SYSTEM_BUS_ADDRESS ";" UNIX_SYSTEM_BUS_ADDRESS
 #define UNIX_USER_BUS_ADDRESS_FMT "unix:path=%s/bus"
 #define KERNEL_USER_BUS_ADDRESS_FMT "kernel:path=/sys/fs/kdbus/"UID_FMT"-user/bus"
 
index 3e398b53e9c803251a9ed27e84a6ee156b39474e..3cc3b33ae70a7322c71afc478bd15fed940c61c3 100644 (file)
@@ -239,11 +239,7 @@ static int parse_argv(int argc, char *argv[]) {
                         if (!e)
                                 return log_oom();
 
-#ifdef ENABLE_KDBUS
                         a = strjoin("x-machine-kernel:machine=", e, ";x-machine-unix:machine=", e, NULL);
-#else
-                        a = strjoin("x-machine-unix:machine=", e, NULL);
-#endif
                         if (!a)
                                 return log_oom();
 
index 61bc08ae33d7744ad3fb26186158ea96d2bf0b89..f275f6705fb6bc5c0eff6045f532a7cd8548da62 100644 (file)
@@ -110,11 +110,7 @@ static int parse_argv(int argc, char *argv[]) {
                         if (!e)
                                 return log_oom();
 
-#ifdef ENABLE_KDBUS
                         a = strjoin("x-machine-kernel:machine=", e, ";x-machine-unix:machine=", e, NULL);
-#else
-                        a = strjoin("x-machine-unix:machine=", e, NULL);
-#endif
                         if (!a)
                                 return log_oom();
 
index a6ff5ac56e59d3542dba0b2d4c41c00b9c45c09c..94cc10173825df7a56101030b162cd9248be438e 100644 (file)
@@ -1514,7 +1514,6 @@ static int exec_child(
                 }
         }
 
-#ifdef ENABLE_KDBUS
         if (params->bus_endpoint_fd >= 0 && context->bus_endpoint) {
                 uid_t ep_uid = (uid == UID_INVALID) ? 0 : uid;
 
@@ -1524,7 +1523,6 @@ static int exec_child(
                         return r;
                 }
         }
-#endif
 
         /* If delegation is enabled we'll pass ownership of the cgroup
          * (but only in systemd's own controller hierarchy!) to the
index f5584b6b14fda98f7c18c5d668b3939ad0477516..e7a6bdc8c4ff6489cdf4ebb1a15672628f35a9cd 100644 (file)
@@ -66,10 +66,8 @@ int kmod_setup(void) {
                 /* this should never be a module */
                 { "unix",      "/proc/net/unix",            true,   true,    NULL      },
 
-#ifdef ENABLE_KDBUS
                 /* IPC is needed before we bring up any other services */
                 { "kdbus",     "/sys/fs/kdbus",             false,  false,   is_kdbus_wanted },
-#endif
 
 #ifdef HAVE_LIBIPTC
                 /* netfilter is needed by networkd, nspawn among others, and cannot be autoloaded */
index 66c9145aa6ab809fd6a79cfcdffd05fdeb1003a1..aae81c80cbc50d55281fff5235fb7d140dfbdcd2 100644 (file)
@@ -229,9 +229,7 @@ Service.BusName,                 config_parse_bus_name,              0,
 Service.FileDescriptorStoreMax,  config_parse_unsigned,              0,                             offsetof(Service, n_fd_store_max)
 Service.NotifyAccess,            config_parse_notify_access,         0,                             offsetof(Service, notify_access)
 Service.Sockets,                 config_parse_service_sockets,       0,                             0
-m4_ifdef(`ENABLE_KDBUS',
-`Service.BusPolicy,              config_parse_bus_endpoint_policy,   0,                             offsetof(Service, exec_context)',
-`Service.BusPolicy,              config_parse_warn_compat,           DISABLED_EXPERIMENTAL,         0')
+Service.BusPolicy,               config_parse_bus_endpoint_policy,   0,                             offsetof(Service, exec_context)
 EXEC_CONTEXT_CONFIG_ITEMS(Service)m4_dnl
 CGROUP_CONTEXT_CONFIG_ITEMS(Service)m4_dnl
 KILL_CONTEXT_CONFIG_ITEMS(Service)m4_dnl
index eb80dd1b46b001b7b107b094a957b805382388bf..a1f37bbbb3058d9e03ad77d5c71c3a11688a412b 100644 (file)
@@ -731,7 +731,6 @@ static int manager_setup_notify(Manager *m) {
 }
 
 static int manager_setup_kdbus(Manager *m) {
-#ifdef ENABLE_KDBUS
         _cleanup_free_ char *p = NULL;
 
         assert(m);
@@ -749,7 +748,6 @@ static int manager_setup_kdbus(Manager *m) {
                 return log_debug_errno(m->kdbus_fd, "Failed to set up kdbus: %m");
 
         log_debug("Successfully set up kdbus on %s", p);
-#endif
 
         return 0;
 }
index c35248eeaed63c9c97dd18e3539add6f62d408ce..42a6b952b967a6b2afb7fa0f4055d96b582dd930 100644 (file)
@@ -104,10 +104,8 @@ static const MountPoint mount_table[] = {
         { "efivarfs",    "/sys/firmware/efi/efivars", "efivarfs",   NULL,                      MS_NOSUID|MS_NOEXEC|MS_NODEV,
           is_efi_boot,   MNT_NONE                   },
 #endif
-#ifdef ENABLE_KDBUS
         { "kdbusfs",    "/sys/fs/kdbus",             "kdbusfs",    NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV,
           NULL,       MNT_IN_CONTAINER },
-#endif
 };
 
 /* These are API file systems that might be mounted by other software,
index 71252e29e2e59c163b2733dcc288204f7d1fb945..fa1e80b7104749dbc295febb1d99a15237079cf2 100644 (file)
@@ -568,14 +568,12 @@ static int service_add_extras(Service *s) {
                 s->notify_access = NOTIFY_MAIN;
 
         if (s->bus_name) {
-#ifdef ENABLE_KDBUS
                 const char *n;
 
                 n = strjoina(s->bus_name, ".busname");
                 r = unit_add_dependency_by_name(UNIT(s), UNIT_AFTER, n, NULL, true);
                 if (r < 0)
                         return r;
-#endif
 
                 r = unit_watch_bus_name(UNIT(s), s->bus_name);
                 if (r < 0)
@@ -1180,7 +1178,6 @@ static int service_spawn(
         } else
                 path = UNIT(s)->cgroup_path;
 
-#ifdef ENABLE_KDBUS
         if (s->exec_context.bus_endpoint) {
                 r = bus_kernel_create_endpoint(UNIT(s)->manager->running_as == MANAGER_SYSTEM ? "system" : "user",
                                                UNIT(s)->id, &bus_endpoint_path);
@@ -1192,7 +1189,6 @@ static int service_spawn(
                  * as the service is running. */
                 exec_params.bus_endpoint_fd = s->bus_endpoint_fd = r;
         }
-#endif
 
         exec_params.argv = argv;
         exec_params.fds = fds;
index 0881b4779ad7199d61bc82e69438867553607501..b559ee9eb8f91db728d1bfbb18395f4b2dc8ad03 100644 (file)
@@ -1239,18 +1239,9 @@ int bus_set_address_user(sd_bus *b) {
                 if (!ee)
                         return -ENOMEM;
 
-#ifdef ENABLE_KDBUS
                 (void) asprintf(&b->address, KERNEL_USER_BUS_ADDRESS_FMT ";" UNIX_USER_BUS_ADDRESS_FMT, getuid(), ee);
-#else
-                (void) asprintf(&b->address, UNIX_USER_BUS_ADDRESS_FMT, ee);
-#endif
-        } else {
-#ifdef ENABLE_KDBUS
+        } else
                 (void) asprintf(&b->address, KERNEL_USER_BUS_ADDRESS_FMT, getuid());
-#else
-                return -ECONNREFUSED;
-#endif
-        }
 
         if (!b->address)
                 return -ENOMEM;
@@ -1372,11 +1363,7 @@ int bus_set_address_system_machine(sd_bus *b, const char *machine) {
         if (!e)
                 return -ENOMEM;
 
-#ifdef ENABLE_KDBUS
         b->address = strjoin("x-machine-kernel:machine=", e, ";x-machine-unix:machine=", e, NULL);
-#else
-        b->address = strjoin("x-machine-unix:machine=", e, NULL);
-#endif
         if (!b->address)
                 return -ENOMEM;
 
index b5d419000c7ae3b354ec75a37abadcfd5cd5d27e..0ebdfdf19e587e394e0185a934814c9ee436a00e 100644 (file)
@@ -177,7 +177,6 @@ static int export_legacy_dbus_address(
                 uid_t uid,
                 const char *runtime) {
 
-#ifdef ENABLE_KDBUS
         _cleanup_free_ char *s = NULL;
         int r;
 
@@ -195,7 +194,7 @@ static int export_legacy_dbus_address(
                 pam_syslog(handle, LOG_ERR, "Failed to set bus variable.");
                 return r;
         }
-#endif
+
         return PAM_SUCCESS;
 }
 
index 9f026beb1325ca99c171fb3465c94b787dffc0bf..7813a0bcc72ac354a2a7523a5f037e22c2690846 100644 (file)
@@ -509,11 +509,7 @@ int bus_machine_method_open_login(sd_bus_message *message, void *userdata, sd_bu
         if (r < 0)
                 return r;
 
-#ifdef ENABLE_KDBUS
 #  define ADDRESS_FMT "x-machine-kernel:pid=%1$" PID_PRI ";x-machine-unix:pid=%1$" PID_PRI
-#else
-#  define ADDRESS_FMT "x-machine-unix:pid=%1$" PID_PRI
-#endif
         if (asprintf(&address, ADDRESS_FMT, m->leader) < 0)
                 return log_oom();
 
index 8fcc289957b648747549f0a0ba678a625626d53b..11350dad71935bf9988bb12912c738477bbfba45 100644 (file)
@@ -545,7 +545,6 @@ int bus_open_system_systemd(sd_bus **_bus) {
          * directly to the system instance, instead of going via the
          * bus */
 
-#ifdef ENABLE_KDBUS
         r = sd_bus_new(&bus);
         if (r < 0)
                 return r;
@@ -564,7 +563,6 @@ int bus_open_system_systemd(sd_bus **_bus) {
         }
 
         bus = sd_bus_unref(bus);
-#endif
 
         r = sd_bus_new(&bus);
         if (r < 0)
@@ -598,7 +596,6 @@ int bus_open_user_systemd(sd_bus **_bus) {
 
         assert(_bus);
 
-#ifdef ENABLE_KDBUS
         r = sd_bus_new(&bus);
         if (r < 0)
                 return r;
@@ -616,7 +613,6 @@ int bus_open_user_systemd(sd_bus **_bus) {
         }
 
         bus = sd_bus_unref(bus);
-#endif
 
         e = secure_getenv("XDG_RUNTIME_DIR");
         if (!e)
@@ -2034,15 +2030,22 @@ int bus_path_decode_unique(const char *path, const char *prefix, char **ret_send
 
 bool is_kdbus_wanted(void) {
         _cleanup_free_ char *value = NULL;
+#ifdef ENABLE_KDBUS
+        const bool configured = true;
+#else
+        const bool configured = false;
+#endif
+
         int r;
 
-        if (get_proc_cmdline_key("kdbus", NULL) <= 0) {
-                r = get_proc_cmdline_key("kdbus=", &value);
-                if (r <= 0 || parse_boolean(value) != 1)
-                        return false;
-        }
+        if (get_proc_cmdline_key("kdbus", NULL) > 0)
+                return true;
+
+        r = get_proc_cmdline_key("kdbus=", &value);
+        if (r <= 0)
+                return configured;
 
-        return true;
+        return parse_boolean(value) == 1;
 }
 
 bool is_kdbus_available(void) {
index 23175de1f5608776251b2fe22b3c14a70680aca0..81b1d79c374a01d1238b1945086adff85f430ae4 100644 (file)
@@ -6,9 +6,7 @@
 #  (at your option) any later version.
 
 g systemd-journal   - -
-m4_ifdef(`ENABLE_KDBUS',
 u systemd-bus-proxy - "systemd Bus Proxy"
-)m4_dnl
 m4_ifdef(`ENABLE_NETWORKD',
 u systemd-network   - "systemd Network Management"
 )m4_dnl
index 7f216f331c2997f4b990190517abaaeef57730c9..64d9130c24e3be64b0e0ca7f0b5b5a305121d3b7 100644 (file)
@@ -17,13 +17,11 @@ Before=network.target multi-user.target shutdown.target
 Conflicts=shutdown.target
 Wants=network.target
 
-m4_ifdef(`ENABLE_KDBUS',
 # On kdbus systems we pull in the busname explicitly, because it
 # carries policy that allows the daemon to acquire its name.
 Wants=org.freedesktop.network1.busname
 After=org.freedesktop.network1.busname
 
-)m4_dnl
 [Service]
 Type=notify
 Restart=on-failure
index 98ae564af62777ed8cf3047ce9b6b46c51f55dfe..dce540245816a264594c0b35824958a4c6c550a6 100644 (file)
@@ -10,13 +10,11 @@ Description=Network Name Resolution
 Documentation=man:systemd-resolved.service(8)
 After=systemd-networkd.service network.target
 
-m4_ifdef(`ENABLE_KDBUS',
 # On kdbus systems we pull in the busname explicitly, because it
 # carries policy that allows the daemon to acquire its name.
 Wants=org.freedesktop.resolve1.busname
 After=org.freedesktop.resolve1.busname
 
-)m4_dnl
 [Service]
 Type=notify
 Restart=always