bus: use ln -fs to enable dbus in systemd, not $(LN_S)
authorSimon McVittie <simon.mcvittie@collabora.co.uk>
Tue, 7 Jun 2011 13:01:39 +0000 (14:01 +0100)
committerSimon McVittie <simon.mcvittie@collabora.co.uk>
Wed, 8 Jun 2011 10:33:21 +0000 (11:33 +0100)
Using $(LN_S) is inappropriate because it could in theory mean either
ln -s, ln or cp -p depending on autoconf checks.

Not using -f breaks reinstallation directly from source (DESTDIR unset),
because the symlinks will already exist.

Because systemd isn't currently portable to non-Linux, let alone
non-SUS-compliant systems, it seems safe to assume that ln -fs behaves
as specified by SUS if systemd was found.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=37870
Reviewed-by: Colin Walters <walters@verbum.org>
bus/Makefile.am

index bb895e2..9761c27 100644 (file)
@@ -204,14 +204,16 @@ install-data-hook:
        $(mkinstalldirs) $(DESTDIR)$(datadir)/dbus-1/services
        $(mkinstalldirs) $(DESTDIR)$(datadir)/dbus-1/system-services
 if HAVE_SYSTEMD
-# Install dbus.socket as default implementation of a D-Bus stack
+# Install dbus.socket as default implementation of a D-Bus stack.
+# Deliberately not using $(LN_S) here: ln -fs is not universally portable,
+# but neither is systemd, so it's OK to assume here that ln complies with SUS.
        $(mkinstalldirs) $(DESTDIR)$(systemdsystemunitdir)/dbus.target.wants
-       $(LN_S) ../dbus.socket $(DESTDIR)$(systemdsystemunitdir)/dbus.target.wants/dbus.socket
+       ln -fs ../dbus.socket $(DESTDIR)$(systemdsystemunitdir)/dbus.target.wants/dbus.socket
 # Unconditionally enable D-Bus on systemd installations
        $(mkinstalldirs) $(DESTDIR)$(systemdsystemunitdir)/sockets.target.wants
-       $(LN_S) ../dbus.socket $(DESTDIR)$(systemdsystemunitdir)/sockets.target.wants/dbus.socket
+       ln -fs ../dbus.socket $(DESTDIR)$(systemdsystemunitdir)/sockets.target.wants/dbus.socket
        $(mkinstalldirs) $(DESTDIR)$(systemdsystemunitdir)/multi-user.target.wants
-       $(LN_S) ../dbus.service $(DESTDIR)$(systemdsystemunitdir)/multi-user.target.wants/dbus.service
+       ln -fs ../dbus.service $(DESTDIR)$(systemdsystemunitdir)/multi-user.target.wants/dbus.service
 endif
 
 if DBUS_UNIX