#!/bin/sh -e # preinst script for perforce-swarm # # see: dh_installdeb(1) # Summary of how this script can be called: # 'install' # 'install' # 'upgrade' # 'abort-upgrade' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package ME="${0##*/}" #echo "###########################" #echo "[$ME] [$*]" THISPKG="helix-swarm" PERFORCE_ROOT="/opt/perforce" PERFORCE_CFGDIR="$PERFORCE_ROOT/etc" SWARM_ROOT="$PERFORCE_ROOT/swarm" SWARM_DATADIR="$SWARM_ROOT/data" SWARM_SBINDIR="$SWARM_ROOT/sbin" SWARM_CONFIG="$SWARM_DATADIR/config.php" APACHE_SITESDIR="/etc/apache2/sites-available" SWARM_VHOST="$APACHE_SITESDIR/perforce-swarm-site.conf" APACHE_USER="www-data" APACHE_GROUP="$APACHE_USER" CRON_DIR="/etc/cron.d" CRON_SCRIPT="$CRON_DIR/helix-swarm" CRON_SCRIPT_OLD="$CRON_DIR/perforce-swarm" CRON_CONFIG="$PERFORCE_CFGDIR/swarm-cron-hosts.conf" PHPINI_DIR="/etc/php5/conf.d" P4PHP_INI="${PHPINI_DIR}/perforce.ini" check_old_cron() { if [ -r $CRON_SCRIPT_OLD ]; then echo "$THISPKG: Removing obsoleted cronfile..." rm $CRON_SCRIPT_OLD fi return 0 } upgrade_20142() { echo "$THISPKG: Handling upgrade exceptions for Swarm 2014.2..." upgrade_good=0 while true; do # HACK: Recreate the cron job in its original 2014.2 form so it can be upgraded without user input cat << __CRON_SCRIPT__ > "$CRON_SCRIPT" # # Regular cron job for the perforce-swarm-rXX.Y package # * * * * * nobody [ -x /usr/bin/wget ] && /usr/bin/wget -qO /dev/null -T5 http://localhost/queue/worker __CRON_SCRIPT__ if [ ! -r "$SWARM_CONFIG" ]; then error_msg="Could not find Swarm config file [$SWARM_CONFIG]" break fi # Obtain the Swarm hostname to create Swarm cron job swarm_hostname="$(\ egrep -v "^\s*(#|//).*" "$SWARM_CONFIG" | tr -d '\n' | sed -rne "s#.*['\"]environment['\"]\s*=>\s*array\s*\(\s*['\"]hostname['\"]\s*=>\s*['\"]([^'\"]*)['\"].*#\1#p" \ )" if [ -z "$swarm_hostname" ]; then error_msg="Could not obtain Swarm hostname from Swarm config file [$SWARM_CONFIG]" break fi echo "$THISPKG: -obtained Swarm hostname from Swarm config file: [$swarm_hostname]" mkdir -p "$(dirname "$CRON_CONFIG")" cat << __CRON_CONFIG__ > "$CRON_CONFIG" # Perforce Swarm cron configuration # # Format (one per line): # [http[s]://][:] # $swarm_hostname __CRON_CONFIG__ echo "$THISPKG: -wrote Swarm cron config [$CRON_CONFIG]" upgrade_good=1 break done if [ $upgrade_good -ne 1 ]; then cat << __UPGRADE_WARNING__ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !! $THISPKG: WARNING: Unable to automatically upgrade from $from_version_major !! Problem: !! $error_msg !! !! This means you will need to reconfigure Swarm after the upgrade of !! the package completes. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! __UPGRADE_WARNING__ fi return 0 } case "$1" in install) check_old_cron ;; upgrade) from_version="$2" from_version_major="${from_version%%-*}" echo "$THISPKG: Upgrading from $from_version" check_old_cron [ "$from_version_major" = "2014.2" ] && upgrade_20142 ;; abort-upgrade) ;; *) echo "$ME called with unknown argument [$1]" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0