X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/d6e43568d82b1d3adaf7a120b9178ba75cf989e7..9e806b0c387cf7146e0d0cf3169fd227963c19b9:/build/rails-package-scripts/step2.sh diff --git a/build/rails-package-scripts/step2.sh b/build/rails-package-scripts/step2.sh index 816b906392..482d27a6a0 100644 --- a/build/rails-package-scripts/step2.sh +++ b/build/rails-package-scripts/step2.sh @@ -1,4 +1,8 @@ #!/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. @@ -26,3 +30,53 @@ 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