15954: Merge branch 'master'
[arvados.git] / build / rails-package-scripts / postinst.sh
index 6fac26be8eb34d56d31ccf73df3885501cdfe005..7ea21848b2cf5d4a047e9e5e7d0131584954552c 100644 (file)
@@ -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 and step2.sh.
 
 set -e
@@ -122,14 +126,14 @@ setup_conffile() {
 
 prepare_database() {
   DB_MIGRATE_STATUS=`$COMMAND_PREFIX bundle exec rake db:migrate:status 2>&1 || true`
-  if echo $DB_MIGRATE_STATUS | grep -qF 'Schema migrations table does not exist yet.'; then
+  if echo "$DB_MIGRATE_STATUS" | grep -qF 'Schema migrations table does not exist yet.'; then
       # The database exists, but the migrations table doesn't.
       run_and_report "Setting up database" $COMMAND_PREFIX bundle exec \
                      rake "$RAILSPKG_DATABASE_LOAD_TASK" db:seed
-  elif echo $DB_MIGRATE_STATUS | grep -q '^database: '; then
+  elif echo "$DB_MIGRATE_STATUS" | grep -q '^database: '; then
       run_and_report "Running db:migrate" \
                      $COMMAND_PREFIX bundle exec rake db:migrate
-  elif echo $DB_MIGRATE_STATUS | grep -q 'database .* does not exist'; then
+  elif echo "$DB_MIGRATE_STATUS" | grep -q 'database .* does not exist'; then
       if ! run_and_report "Running db:setup" \
            $COMMAND_PREFIX bundle exec rake db:setup 2>/dev/null; then
           echo "Warning: unable to set up database." >&2
@@ -142,8 +146,15 @@ prepare_database() {
 }
 
 configure_version() {
-  WEB_SERVICE=${WEB_SERVICE:-$(service --status-all 2>/dev/null \
-      | grep -Eo '\bnginx|httpd[^[:space:]]*' || true)}
+  if [ -n "$WEB_SERVICE" ]; then
+      SERVICE_MANAGER=$(guess_service_manager)
+  elif WEB_SERVICE=$(list_services_systemd | grep -E '^(nginx|httpd)'); then
+      SERVICE_MANAGER=systemd
+  elif WEB_SERVICE=$(list_services_service \
+                         | grep -Eo '\b(nginx|httpd)[^[:space:]]*'); then
+      SERVICE_MANAGER=service
+  fi
+
   if [ -z "$WEB_SERVICE" ]; then
     report_web_service_warning "Web service (Nginx or Apache) not found"
   elif [ "$WEB_SERVICE" != "$(echo "$WEB_SERVICE" | head -n 1)" ]; then
@@ -175,10 +186,6 @@ configure_version() {
   setup_confdirs /etc/arvados "$CONFIG_PATH"
   setup_conffile environments/production.rb environments/production.rb.example \
       || true
-  setup_conffile application.yml application.yml.example || APPLICATION_READY=0
-  if [ -n "$RAILSPKG_DATABASE_LOAD_TASK" ]; then
-      setup_conffile database.yml database.yml.example || DATABASE_READY=0
-  fi
   setup_extra_conffiles
   echo "... done."
 
@@ -192,7 +199,7 @@ configure_version() {
   export RAILS_ENV=production
 
   if ! $COMMAND_PREFIX bundle --version >/dev/null; then
-      run_and_report "Installing bundle" $COMMAND_PREFIX gem install bundle
+      run_and_report "Installing bundler" $COMMAND_PREFIX gem install bundler --version 1.17.3
   fi
 
   run_and_report "Running bundle install" \
@@ -203,14 +210,14 @@ configure_version() {
   chown "$WWW_OWNER:" $RELEASE_PATH/config/environment.rb
   chown "$WWW_OWNER:" $RELEASE_PATH/config.ru
   chown "$WWW_OWNER:" $RELEASE_PATH/Gemfile.lock
-  chown -R "$WWW_OWNER:" $RELEASE_PATH/tmp
+  chown -R "$WWW_OWNER:" $RELEASE_PATH/tmp || true
   chown -R "$WWW_OWNER:" $SHARED_PATH/log
   case "$RAILSPKG_DATABASE_LOAD_TASK" in
       db:schema:load) chown "$WWW_OWNER:" $RELEASE_PATH/db/schema.rb ;;
       db:structure:load) chown "$WWW_OWNER:" $RELEASE_PATH/db/structure.sql ;;
   esac
   chmod 644 $SHARED_PATH/log/*
-  chmod -R 2775 $RELEASE_PATH/tmp
+  chmod -R 2775 $RELEASE_PATH/tmp || true
   echo "... done."
 
   if [ -n "$RAILSPKG_DATABASE_LOAD_TASK" ]; then
@@ -218,7 +225,7 @@ configure_version() {
   fi
 
   if [ 11 = "$RAILSPKG_SUPPORTS_CONFIG_CHECK$APPLICATION_READY" ]; then
-      run_and_report "Checking application.yml for completeness" \
+      run_and_report "Checking configuration for completeness" \
           $COMMAND_PREFIX bundle exec rake config:check || APPLICATION_READY=0
   fi
 
@@ -234,8 +241,8 @@ configure_version() {
 
   setup_before_nginx_restart
 
-  if [ ! -z "$WEB_SERVICE" ]; then
-      service "$WEB_SERVICE" restart
+  if [ -n "$SERVICE_MANAGER" ]; then
+      service_command "$SERVICE_MANAGER" restart "$WEB_SERVICE"
   fi
 }
 
@@ -247,5 +254,9 @@ elif [ "$1" = "0" ] || [ "$1" = "1" ] || [ "$1" = "2" ]; then
   configure_version
 fi
 
-report_not_ready "$DATABASE_READY" "$CONFIG_PATH/database.yml"
-report_not_ready "$APPLICATION_READY" "$CONFIG_PATH/application.yml"
+if printf '%s\n' "$CONFIG_PATH" | grep -Fqe "sso"; then
+       report_not_ready "$APPLICATION_READY" "$CONFIG_PATH/application.yml"
+       report_not_ready "$DATABASE_READY" "$CONFIG_PATH/database.yml"
+else
+       report_not_ready "$APPLICATION_READY" "/etc/arvados/config.yml"
+fi