package/gpsd: Fix systemd service installation and paths
authorRobert Hancock <hancock@sedsystems.ca>
Wed, 29 May 2019 23:02:41 +0000 (17:02 -0600)
committerArnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Sun, 27 Oct 2019 19:27:03 +0000 (20:27 +0100)
Fix several issues with systemd service file installation for gpsd:

- systemd support in the gpsd build was defaulting to enabled or not
based on whether the host system had systemd directories present. Set
this explicitly based on whether BR2_INIT_SYSTEMD is set.

- The installed systemd service files referenced paths in /usr/local when
the actual binaries are installed in /usr. Replace /usr/local with /usr
in the installed service files.

- When BR2_PACKAGE_HAS_UDEV was enabled, all of the binaries were
re-installed again, along with the udev rules, as part of the
post-install hooks. This overwrites the service files that were just
fixed up. Since udev-install implies install, we can just call
udev-install.

Signed-off-by: Robert Hancock <hancock@sedsystems.ca>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
package/gpsd/gpsd.mk

index 79d2ccfeaaa414f59f98ab716b02bf724b695e62..9268b2fe6bcc64572b09a3b97c443043a4530eca 100644 (file)
@@ -25,7 +25,8 @@ GPSD_SCONS_OPTS = \
        strip=no \
        python=no \
        qt=no \
-       ntpshm=yes
+       ntpshm=yes \
+       systemd=$(if $(BR2_INIT_SYSTEMD),yes,no)
 
 ifeq ($(BR2_PACKAGE_NCURSES),y)
 GPSD_DEPENDENCIES += ncurses
@@ -214,7 +215,7 @@ define GPSD_INSTALL_TARGET_CMDS
                DESTDIR=$(TARGET_DIR) \
                $(HOST_DIR)/bin/python2 $(SCONS) \
                $(GPSD_SCONS_OPTS) \
-               install)
+               $(if $(BR2_PACKAGE_HAS_UDEV),udev-install,install))
 endef
 
 define GPSD_INSTALL_INIT_SYSV
@@ -222,6 +223,14 @@ define GPSD_INSTALL_INIT_SYSV
        $(SED) 's,^DEVICES=.*,DEVICES=$(BR2_PACKAGE_GPSD_DEVICES),' $(TARGET_DIR)/etc/init.d/S50gpsd
 endef
 
+# systemd unit files are installed automatically, but need to update the
+# /usr/local path references in the provided files to /usr.
+define GPSD_INSTALL_INIT_SYSTEMD
+       $(SED) 's%/usr/local%/usr%' \
+               $(TARGET_DIR)/usr/lib/systemd/system/gpsd.service \
+               $(TARGET_DIR)/usr/lib/systemd/system/gpsdctl@.service
+endef
+
 define GPSD_INSTALL_STAGING_CMDS
        (cd $(@D); \
                $(GPSD_SCONS_ENV) \
@@ -231,16 +240,10 @@ define GPSD_INSTALL_STAGING_CMDS
                install)
 endef
 
-# After installing the udev rule, make it writable so that this
+# After the udev rule is installed, make it writable so that this
 # package can be re-built/re-installed.
 ifeq ($(BR2_PACKAGE_HAS_UDEV),y)
 define GPSD_INSTALL_UDEV_RULES
-       (cd $(@D); \
-               $(GPSD_SCONS_ENV) \
-               DESTDIR=$(TARGET_DIR) \
-               $(HOST_DIR)/bin/python2 $(SCONS) \
-               $(GPSD_SCONS_OPTS) \
-               udev-install)
        chmod u+w $(TARGET_DIR)/lib/udev/rules.d/25-gpsd.rules
 endef