Fix crash when pipeline template is not readable. refs #10003
[arvados.git] / build / go-package-scripts / postinst
index 137f8988d39b052c5a4c6e631284964dbe53906c..0663465523b186a9a2fcb6ebd7cc9b261550a8c2 100755 (executable)
@@ -1,15 +1,31 @@
-#!/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)
+                    # Failing to enable or start the service is not a
+                    # package error, so don't let errors here
+                    # propagate up.
+                    systemctl enable "${systemd_unit}" || true
+                    systemctl start "${systemd_unit}" || true
+                    ;;
+                enabled)
+                    systemctl daemon-reload || true
+                    systemctl reload-or-try-restart "${systemd_unit}" || true
+                    ;;
+            esac
         fi
         ;;
 esac