#!/bin/bash # Upgrade ScoDoc installation using GIT # GIT must be properly configured and have read access to ScoDoc repository # This script STOP and RESTART ScoDoc and should be runned as root # # Upgrade also the Linux system using apt. # # Script for ScoDoc 8 (10) # # E. Viennet, sep 2013, mar 2017, jun 2019, aug 2020, dec 2020 A REVOIR : utiliser releases # Le répertoire de ce script: SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" source "$SCRIPT_DIR/config.sh" source "$SCRIPT_DIR/utils.sh" cd "$SCODOC_DIR" || { echo "Invalid directory"; exit 1; } check_uid_root "$0" if [ -z "$SCODOC_UPGRADE_RUNNING" ] then apt-get update && apt-get -y dist-upgrade fi scodocctl stop echo echo "Using git to update $SCODOC_DIR..." (cd "$SCODOC_DIR"; git checkout ScoDoc8; git pull origin master) SVNVERSION=$(cd ..; svnversion) if [ ! -e "${SCODOC_VERSION_DIR}" ]; then mkdir -p "${SCODOC_VERSION_DIR}" chown "$SCODOC_USER"."$SCODOC_GROUP" "${SCODOC_VERSION_DIR}" fi if [ ! -e "${SCODOC_VERSION_DIR}"/scodoc.sn ]; then if [ -e "$SCODOC_DIR"/config/scodoc.sn ]; then # migrate from old scodoc installs mv "$SCODOC_DIR"/config/scodoc.sn "${SCODOC_VERSION_DIR}" fi fi SN=$(cat "$SCODOC_DIR"/config/scodoc.sn 2> /dev/null || cat "${SCODOC_VERSION_DIR}"/scodoc.sn) if [ -e "$SCODOC_DIR"/config/scodoc.sn ] || [ -e "${SCODOC_VERSION_DIR}"/scodoc.sn ] then if [[ ! "${SN}" =~ ^[0-9].* ]] then SN='' # fix for invalid previous replies fi mode=upgrade else mode=install fi CMD="curl --fail --connect-timeout 5 --silent http://scodoc.iutv.univ-paris13.fr/scodoc-installmgr/version?mode=$mode\&svn=${SVNVERSION}\&sn=${SN}" #echo $CMD SVERSION="$(${CMD})" if [ "$?" == 0 ]; then #echo "answer=${SVERSION}" echo "${SVERSION}" > "${SCODOC_VERSION_DIR}"/scodoc.sn else echo 'Warning: cannot connect to scodoc release server' fi # Check that no Zope "access" file has been forgotten in the way: if [ -e "$SCODOC_DIR"/../../access ] then mv "$SCODOC_DIR"/../../access "$SCODOC_DIR"/../../access.bak fi # Fix some permissions which may have been altered in the way: chown -R "$SCODOC_USER"."$SCODOC_GROUP" "${SCODOC_DIR}" chmod -R 775 "${SCODOC_DIR}" # depts dir: if [ ! -e "${SCODOC_VAR_DIR}/config/depts" ] then mkdir "${SCODOC_VAR_DIR}/config/depts" fi # Se recharge car ce fichier peut avoir change durant le svn up ! if [ -z "$SCODOC_UPGRADE_RUNNING" ] then export SCODOC_UPGRADE_RUNNING=1 ./upgrade.sh exit 0 fi # Add some python modules: "$SCODOC_DIR"/config/install_cal_modules.sh /opt/zope213/bin/python -c "import requests" >& /dev/null if [ $? -ne 0 ] then /opt/zope213/bin/pip install requests fi /opt/zope213/bin/python -c "import attrdict" >& /dev/null if [ $? -ne 0 ] then /opt/zope213/bin/pip install attrdict fi # Check that local configuration file is installed LOCAL_CONFIG_FILENAME="/opt/scodoc/var/scodoc/config/scodoc_local.py" if [ ! -e "$LOCAL_CONFIG_FILENAME" ] then cp "$SCODOC_DIR"/config/scodoc_config_tmpl.py "$LOCAL_CONFIG_FILENAME" chmod 600 "$LOCAL_CONFIG_FILENAME" fi # upgrade old dateutil (check version manually to speedup) v=$(/opt/zope213/bin/python -c "import dateutil; print dateutil.__version__") [[ "$v" < "2.8.1" ]] && /opt/zope213/bin/pip install --upgrade python-dateutil # Ensure scodoc can duplicate databases (for dumps) su -c $'psql -c \'alter role "scodoc" with CREATEDB;\'' "$POSTGRES_SUPERUSER" #' # post-upgrade scripts echo "Executing post-upgrade script..." "$SCODOC_DIR"/config/postupgrade.py echo "Executing post-upgrade database script..." su -c "$SCODOC_DIR/config/postupgrade-db.py" "$POSTGRES_USER" # echo scodocctl start