package/dbus: fix machine-id when using systemd
authorMaxim Mikityanskiy <maxtram95@gmail.com>
Mon, 19 Jan 2015 16:14:03 +0000 (18:14 +0200)
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Sun, 12 Jul 2015 23:47:58 +0000 (01:47 +0200)
When systemd is used, /var/lib/dbus becomes dangling symlink, because
nobody does mkdir /tmp/dbus, so /var/lib/dbus/machine-id could not be
written. On SysVinit systems there is init script that creates
/tmp/dbus.

This patch preserves old behavior for SysVinit systems, and introduces
new one for systemd-booted systems: /var/lib/dbus is a persistent
directory, it holds symlink /var/lib/dbus/machine-id -> /etc/machine-id
as machine-id(5) suggests, and /etc/machine-id is managed by systemd.

Signed-off-by: Maxim Mikityanskiy <maxtram95@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
package/dbus/dbus.mk

index c81080087360c0fe59c45987ebf74d11c4cef813..7deae1188719ecf677a620123379e27e3deee395 100644 (file)
@@ -73,17 +73,18 @@ endef
 
 DBUS_POST_INSTALL_TARGET_HOOKS += DBUS_REMOVE_DEVFILES
 
-define DBUS_INSTALL_TARGET_FIXUP
+define DBUS_INSTALL_INIT_SYSV
+       $(INSTALL) -m 0755 -D package/dbus/S30dbus \
+               $(TARGET_DIR)/etc/init.d/S30dbus
+
        mkdir -p $(TARGET_DIR)/var/lib
        rm -rf $(TARGET_DIR)/var/lib/dbus
        ln -sf /tmp/dbus $(TARGET_DIR)/var/lib/dbus
 endef
 
-DBUS_POST_INSTALL_TARGET_HOOKS += DBUS_INSTALL_TARGET_FIXUP
-
-define DBUS_INSTALL_INIT_SYSV
-       $(INSTALL) -m 0755 -D package/dbus/S30dbus \
-               $(TARGET_DIR)/etc/init.d/S30dbus
+define DBUS_INSTALL_INIT_SYSTEMD
+       mkdir -p $(TARGET_DIR)/var/lib/dbus
+       ln -sf /etc/machine-id $(TARGET_DIR)/var/lib/dbus/machine-id
 endef
 
 HOST_DBUS_DEPENDENCIES = host-pkgconf host-expat