9706: Go service postinst improvements.
[arvados.git] / build / go-package-scripts / postinst
index 137f8988d39b052c5a4c6e631284964dbe53906c..3adb0fc04882c5c1e6000902f658b50bbda8237a 100755 (executable)
@@ -1,15 +1,29 @@
-#!/bin/bash
+#!/bin/sh
 
 set -e
 
-script="${0##*/}"
+# NOTE: This package name detection will only work on Debian.
+# If this postinst script ever starts doing work on Red Hat,
+# we'll need to adapt this code accordingly.
+script="$(basename "$0")"
 pkg="${script%.postinst}"
+systemd_unit="${pkg}.service"
 
 case "${1}" in
     configure)
-        if which systemctl >/dev/null && [[ -e "/lib/systemd/system/${pkg}.service" ]]; then
-            systemctl enable "${pkg}"
-            systemctl start "${pkg}"
+        if [ -e /run/systemd/system ]; then
+            eval "$(systemctl -p UnitFileState show "$systemd_unit")"
+            case "$UnitFileState" in
+                disabled)
+                    systemctl enable "$systemd_unit"
+                    # Failing to start the service is not a package error,
+                    # so don't let an error here propagate up.
+                    systemctl start "$systemd_unit" || true
+                    ;;
+                enabled)
+                    systemctl reload-or-try-restart "$systemd_unit" || true
+                    ;;
+            esac
         fi
         ;;
 esac