X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/2e437823d2d19edf5c6be392f3604a499308cd6e..b9fd7e3f374248a61159e4750a84e38d1c48d5dd:/build/rails-package-scripts/postinst.sh diff --git a/build/rails-package-scripts/postinst.sh b/build/rails-package-scripts/postinst.sh index 6fac26be8e..7ea21848b2 100644 --- a/build/rails-package-scripts/postinst.sh +++ b/build/rails-package-scripts/postinst.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 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