diff options
author | Kay Sievers <kay@vrfy.org> | 2015-06-17 16:37:55 +0200 |
---|---|---|
committer | Kay Sievers <kay@vrfy.org> | 2015-06-17 18:01:49 +0200 |
commit | 1b09f548c7f303b486b5b1321c06336bff72ada4 (patch) | |
tree | 0fda8c2849b2226ba773dcdc7d7d15132dbac5f6 | |
parent | a54941f1b47507e1609f0d8eb224f5a5a5732c0e (diff) | |
download | systemd-1b09f548c7f303b486b5b1321c06336bff72ada4.tar.gz |
turn kdbus support into a runtime option
./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.
-rw-r--r-- | Makefile-man.am | 3 | ||||
-rw-r--r-- | Makefile.am | 24 | ||||
-rw-r--r-- | configure.ac | 6 | ||||
-rw-r--r-- | man/systemd-bus-proxyd.xml | 2 | ||||
-rw-r--r-- | man/systemd-bus-proxyd@.service.xml | 2 | ||||
-rw-r--r-- | src/basic/def.h | 8 | ||||
-rw-r--r-- | src/bus-proxyd/bus-proxyd.c | 4 | ||||
-rw-r--r-- | src/bus-proxyd/stdio-bridge.c | 4 | ||||
-rw-r--r-- | src/core/execute.c | 2 | ||||
-rw-r--r-- | src/core/kmod-setup.c | 2 | ||||
-rw-r--r-- | src/core/load-fragment-gperf.gperf.m4 | 4 | ||||
-rw-r--r-- | src/core/manager.c | 2 | ||||
-rw-r--r-- | src/core/mount-setup.c | 2 | ||||
-rw-r--r-- | src/core/service.c | 4 | ||||
-rw-r--r-- | src/libsystemd/sd-bus/sd-bus.c | 15 | ||||
-rw-r--r-- | src/login/pam_systemd.c | 3 | ||||
-rw-r--r-- | src/machine/machine-dbus.c | 4 | ||||
-rw-r--r-- | src/shared/bus-util.c | 23 | ||||
-rw-r--r-- | sysusers.d/systemd.conf.m4 | 2 | ||||
-rw-r--r-- | units/systemd-networkd.service.m4.in | 2 | ||||
-rw-r--r-- | units/systemd-resolved.service.m4.in | 2 |
21 files changed, 22 insertions, 98 deletions
diff --git a/Makefile-man.am b/Makefile-man.am index 15781ba44a..9e2f4ba2e3 100644 --- a/Makefile-man.am +++ b/Makefile-man.am @@ -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 \ diff --git a/Makefile.am b/Makefile.am index 6594cabdf6..7cc70445cc 100644 --- a/Makefile.am +++ b/Makefile.am @@ -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)" diff --git a/configure.ac b/configure.ac index b94dbd1613..e5d3994439 100644 --- a/configure.ac +++ b/configure.ac @@ -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 diff --git a/man/systemd-bus-proxyd.xml b/man/systemd-bus-proxyd.xml index bbcf3d0981..f7b94cd481 100644 --- a/man/systemd-bus-proxyd.xml +++ b/man/systemd-bus-proxyd.xml @@ -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> diff --git a/man/systemd-bus-proxyd@.service.xml b/man/systemd-bus-proxyd@.service.xml index 9dabc4dd5f..4ac6ba040c 100644 --- a/man/systemd-bus-proxyd@.service.xml +++ b/man/systemd-bus-proxyd@.service.xml @@ -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> diff --git a/src/basic/def.h b/src/basic/def.h index 011c7c667e..5aaba1fe87 100644 --- a/src/basic/def.h +++ b/src/basic/def.h @@ -63,13 +63,7 @@ #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" diff --git a/src/bus-proxyd/bus-proxyd.c b/src/bus-proxyd/bus-proxyd.c index 3e398b53e9..3cc3b33ae7 100644 --- a/src/bus-proxyd/bus-proxyd.c +++ b/src/bus-proxyd/bus-proxyd.c @@ -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(); diff --git a/src/bus-proxyd/stdio-bridge.c b/src/bus-proxyd/stdio-bridge.c index 61bc08ae33..f275f6705f 100644 --- a/src/bus-proxyd/stdio-bridge.c +++ b/src/bus-proxyd/stdio-bridge.c @@ -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(); diff --git a/src/core/execute.c b/src/core/execute.c index a6ff5ac56e..94cc101738 100644 --- a/src/core/execute.c +++ b/src/core/execute.c @@ -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 diff --git a/src/core/kmod-setup.c b/src/core/kmod-setup.c index f5584b6b14..e7a6bdc8c4 100644 --- a/src/core/kmod-setup.c +++ b/src/core/kmod-setup.c @@ -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 */ diff --git a/src/core/load-fragment-gperf.gperf.m4 b/src/core/load-fragment-gperf.gperf.m4 index 66c9145aa6..aae81c80cb 100644 --- a/src/core/load-fragment-gperf.gperf.m4 +++ b/src/core/load-fragment-gperf.gperf.m4 @@ -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 diff --git a/src/core/manager.c b/src/core/manager.c index eb80dd1b46..a1f37bbbb3 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -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; } diff --git a/src/core/mount-setup.c b/src/core/mount-setup.c index c35248eeae..42a6b952b9 100644 --- a/src/core/mount-setup.c +++ b/src/core/mount-setup.c @@ -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, diff --git a/src/core/service.c b/src/core/service.c index 71252e29e2..fa1e80b710 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -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; diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c index 0881b4779a..b559ee9eb8 100644 --- a/src/libsystemd/sd-bus/sd-bus.c +++ b/src/libsystemd/sd-bus/sd-bus.c @@ -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; diff --git a/src/login/pam_systemd.c b/src/login/pam_systemd.c index b5d419000c..0ebdfdf19e 100644 --- a/src/login/pam_systemd.c +++ b/src/login/pam_systemd.c @@ -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; } diff --git a/src/machine/machine-dbus.c b/src/machine/machine-dbus.c index 9f026beb13..7813a0bcc7 100644 --- a/src/machine/machine-dbus.c +++ b/src/machine/machine-dbus.c @@ -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(); diff --git a/src/shared/bus-util.c b/src/shared/bus-util.c index 8fcc289957..11350dad71 100644 --- a/src/shared/bus-util.c +++ b/src/shared/bus-util.c @@ -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) { diff --git a/sysusers.d/systemd.conf.m4 b/sysusers.d/systemd.conf.m4 index 23175de1f5..81b1d79c37 100644 --- a/sysusers.d/systemd.conf.m4 +++ b/sysusers.d/systemd.conf.m4 @@ -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 diff --git a/units/systemd-networkd.service.m4.in b/units/systemd-networkd.service.m4.in index 7f216f331c..64d9130c24 100644 --- a/units/systemd-networkd.service.m4.in +++ b/units/systemd-networkd.service.m4.in @@ -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 diff --git a/units/systemd-resolved.service.m4.in b/units/systemd-resolved.service.m4.in index 98ae564af6..dce5402458 100644 --- a/units/systemd-resolved.service.m4.in +++ b/units/systemd-resolved.service.m4.in @@ -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 |