18766: because our Ubuntu 18.04 Python packages now depend on
[arvados.git] / build / rails-package-scripts / step2.sh
index 816b906392ef44e0067a1f7ff6d325736077773c..41c9cd71e366ff5d14973638ad48547bcc98ba3a 100644 (file)
@@ -1,4 +1,8 @@
 #!/bin/sh
 #!/bin/sh
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
+
 # This code runs after package variable definitions, before the actual
 # pre/post package work, to set some variable and function defaults.
 
 # This code runs after package variable definitions, before the actual
 # pre/post package work, to set some variable and function defaults.
 
@@ -7,7 +11,7 @@ if [ -z "$INSTALL_PATH" ]; then
 
 PACKAGE BUILD ERROR: $0 is missing package metadata.
 
 
 PACKAGE BUILD ERROR: $0 is missing package metadata.
 
-This package is buggy.  Please mail <support@curoverse.com> to let
+This package is buggy.  Please mail <packaging@arvados.org> to let
 us know the name and version number of the package you tried to
 install, and we'll get it fixed.
 
 us know the name and version number of the package you tried to
 install, and we'll get it fixed.
 
@@ -19,10 +23,59 @@ RELEASE_PATH=$INSTALL_PATH/current
 RELEASE_CONFIG_PATH=$RELEASE_PATH/config
 SHARED_PATH=$INSTALL_PATH/shared
 
 RELEASE_CONFIG_PATH=$RELEASE_PATH/config
 SHARED_PATH=$INSTALL_PATH/shared
 
-RAILSPKG_SUPPORTS_CONFIG_CHECK=${RAILSPKG_SUPPORTS_CONFIG_CHECK:-1}
 if ! type setup_extra_conffiles >/dev/null 2>&1; then
     setup_extra_conffiles() { return; }
 fi
 if ! type setup_before_nginx_restart >/dev/null 2>&1; then
     setup_before_nginx_restart() { return; }
 fi
 if ! type setup_extra_conffiles >/dev/null 2>&1; then
     setup_extra_conffiles() { return; }
 fi
 if ! type setup_before_nginx_restart >/dev/null 2>&1; then
     setup_before_nginx_restart() { return; }
 fi
+
+if [ -e /run/systemd/system ]; then
+    USING_SYSTEMD=1
+else
+    USING_SYSTEMD=0
+fi
+
+if which service >/dev/null 2>&1; then
+    USING_SERVICE=1
+else
+    USING_SERVICE=0
+fi
+
+guess_service_manager() {
+    if [ 1 = "$USING_SYSTEMD" ]; then
+        echo systemd
+    elif [ 1 = "$USING_SERVICE" ]; then
+        echo service
+    else
+        return 1
+    fi
+}
+
+list_services_systemd() {
+    test 1 = "$USING_SYSTEMD" || return
+    # Print only service names, without the `.service` suffix.
+    systemctl list-unit-files '*.service' \
+        | awk '($1 ~ /\.service/){print substr($1, 1, length($1) - 8)}'
+}
+
+list_services_service() {
+    test 1 = "$USING_SERVICE" || return
+    # Output is completely different across Debian and Red Hat.
+    # We can't really parse it.
+    service --status-all 2>/dev/null
+}
+
+service_command() {
+    local service_manager="$1"; shift
+    local command="$1"; shift
+    local service="$1"; shift
+    case "$service_manager" in
+        systemd) systemctl "$command" "$service" ;;
+        service) service "$service" "$command" ;;
+    esac
+}
+
+if ! guess_service_manager >/dev/null; then
+    echo "WARNING: Unsupported init system. Can't manage web service." >&2
+fi