X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/2ec2c8ed2c5db174f3a83dc257fa4c4b3190f47b..5646a899f667ee14efc32e9db84c72c0938ac6dc:/build/rails-package-scripts/step2.sh diff --git a/build/rails-package-scripts/step2.sh b/build/rails-package-scripts/step2.sh index 816b906392..98de494e1d 100644 --- a/build/rails-package-scripts/step2.sh +++ b/build/rails-package-scripts/step2.sh @@ -26,3 +26,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