Author: e2jk-guest Date: 2014-02-18 21:44:16 +0000 (Tue, 18 Feb 2014) New Revision: 16062
Added: trunk/packages/gnuhealth/trunk/debian/gnuhealth-server.preinst Modified: trunk/packages/gnuhealth/trunk/debian/changelog trunk/packages/gnuhealth/trunk/debian/database-scripts/install/pgsql trunk/packages/gnuhealth/trunk/debian/database-scripts/upgrade/pgsql/2.0.0 trunk/packages/gnuhealth/trunk/debian/gnuhealth-server.postinst Log: Overhaul of the upgrade process in preparation of new GNU Health version 2.4.1. Now the database gets backed up by preinst, and updated by postinst. If upstream-provided upgrade scripts need to be run, that is handled by dbconfig-common. Modified: trunk/packages/gnuhealth/trunk/debian/changelog =================================================================== --- trunk/packages/gnuhealth/trunk/debian/changelog 2014-02-18 19:30:59 UTC (rev 16061) +++ trunk/packages/gnuhealth/trunk/debian/changelog 2014-02-18 21:44:16 UTC (rev 16062) @@ -1,3 +1,15 @@ +gnuhealth (2.4.1-1) experimental; urgency=low + + * New upstream release + * Move the dbconfig-common upgrade script to the correct place + (DBTYPE/VERSION instead of just DBTYPE) + * Create gnuhealth-server.preinst, and overhaul of the upgrade process. + Now the database gets backed up by preinst, and updated by postinst. + If upstream-provided upgrade scripts need to be run, that is handled + by dbconfig-common. + + -- Emilien Klein <[email protected]> Tue, 18 Feb 2014 19:10:47 +0100 + gnuhealth (2.4.0-2) unstable; urgency=low * Upload to unstable Modified: trunk/packages/gnuhealth/trunk/debian/database-scripts/install/pgsql =================================================================== --- trunk/packages/gnuhealth/trunk/debian/database-scripts/install/pgsql 2014-02-18 19:30:59 UTC (rev 16061) +++ trunk/packages/gnuhealth/trunk/debian/database-scripts/install/pgsql 2014-02-18 21:44:16 UTC (rev 16062) @@ -8,11 +8,9 @@ GNUHEALTH_USER="gnuhealth" GNUHEALTH_HOMEDIR="/var/lib/gnuhealth" +GNUHEALTH_NODBUPDATEFILE="${GNUHEALTH_HOMEDIR}/no-db-update" GNUHEALTH_CONFFILE="/etc/gnuhealth/gnuhealth-server.conf" -# Start printing output on a new line -echo - # Create system user adduser --home ${GNUHEALTH_HOMEDIR} --quiet --system --group ${GNUHEALTH_USER} @@ -28,5 +26,8 @@ # default authentication is set to peer method) sudo -u postgres psql -U postgres -c 'ALTER DATABASE gnuhealth OWNER TO gnuhealth' +# Create a temporary file that indicates we've just created the database. +# Will be used in postinst to know not to update the database. +touch ${GNUHEALTH_NODBUPDATEFILE} + exit 0 - Modified: trunk/packages/gnuhealth/trunk/debian/database-scripts/upgrade/pgsql/2.0.0 =================================================================== --- trunk/packages/gnuhealth/trunk/debian/database-scripts/upgrade/pgsql/2.0.0 2014-02-18 19:30:59 UTC (rev 16061) +++ trunk/packages/gnuhealth/trunk/debian/database-scripts/upgrade/pgsql/2.0.0 2014-02-18 21:44:16 UTC (rev 16062) @@ -6,18 +6,14 @@ # Source the config file from dbconfig-common . /etc/dbconfig-common/gnuhealth-server.conf -GNUHEALTH_CONFFILE="/etc/gnuhealth/gnuhealth-server.conf" -BACKUP_FILE="/var/lib/gnuhealth/backups/backup_${dbc_dbname}_`date +\%F_\%H-\%M-\%S`.sql" +echo "Applying upgrade script for version 2.0" -# Start printing output on a new line -echo +# A backup of the database was already created by gnuhealth-server.preinst -# Make a backup of the database prior to upgrading -sudo -u ${dbc_dbuser} pg_dump gnuhealth > ${BACKUP_FILE} # Run the pre script provided by upstream sudo -u ${dbc_dbuser} python /usr/share/gnuhealth/scripts/upgrade/2.0/pre.py --pg="dbname=${dbc_dbname}" -# Upgrade the gnuhealth database -sudo -u ${dbc_dbuser} trytond --database=${dbc_dbname} --update=all --config=${GNUHEALTH_CONFFILE} +# Upgrading the database will be done by gnuhealth-server.postinst + exit 0 Modified: trunk/packages/gnuhealth/trunk/debian/gnuhealth-server.postinst =================================================================== --- trunk/packages/gnuhealth/trunk/debian/gnuhealth-server.postinst 2014-02-18 19:30:59 UTC (rev 16061) +++ trunk/packages/gnuhealth/trunk/debian/gnuhealth-server.postinst 2014-02-18 21:44:16 UTC (rev 16062) @@ -29,6 +29,7 @@ GNUHEALTH_USER="gnuhealth" GNUHEALTH_HOMEDIR="/var/lib/gnuhealth" +GNUHEALTH_NODBUPDATEFILE="${GNUHEALTH_HOMEDIR}/no-db-update" GNUHEALTH_LOGDIR="/var/log/gnuhealth" GNUHEALTH_CONFFILE="/etc/gnuhealth/gnuhealth-server.conf" @@ -47,6 +48,22 @@ # Setting ownership and permissions on configuration file chown ${GNUHEALTH_USER}:${GNUHEALTH_USER} ${GNUHEALTH_CONFFILE} chmod 0440 ${GNUHEALTH_CONFFILE} + + # Check if the DB should not be updated + if [ ! -f ${GNUHEALTH_NODBUPDATEFILE} ]; then + # Source the config file from dbconfig-common + . /etc/dbconfig-common/gnuhealth-server.conf + + # Update the gnuhealth database + echo "Updating the '${dbc_dbname}' database" + sudo -u ${dbc_dbuser} trytond --database=${dbc_dbname} --update=all \ + --config=${GNUHEALTH_CONFFILE} + else + # Do not update the database, as it's just been created. + # Just remove the temporary file, so that the database will be updated next time. + echo "The database was just created, no need to update it now." + rm ${GNUHEALTH_NODBUPDATEFILE} + fi ;; abort-upgrade|abort-remove|abort-deconfigure) Added: trunk/packages/gnuhealth/trunk/debian/gnuhealth-server.preinst =================================================================== --- trunk/packages/gnuhealth/trunk/debian/gnuhealth-server.preinst (rev 0) +++ trunk/packages/gnuhealth/trunk/debian/gnuhealth-server.preinst 2014-02-18 21:44:16 UTC (rev 16062) @@ -0,0 +1,50 @@ +#!/bin/sh +# preinst script for gnuhealth-server +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * <new-preinst> `install' +# * <new-preinst> `install' <old-version> +# * <new-preinst> `upgrade' <old-version> +# * <old-preinst> `abort-upgrade' <new-version> +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + upgrade) + # Make a backup and upgrade the database when upgrading from a previous version + # Source the config file from dbconfig-common + . /etc/dbconfig-common/gnuhealth-server.conf + + BACKUP_FOLDER="/var/lib/gnuhealth/backups" + BACKUP_FILE="${BACKUP_FOLDER}/backup_${dbc_dbname}_v$2_`date +\%F_\%H-\%M-\%S`.sql" + + #Create the backup directory if it doesn't already exist + mkdir -p ${BACKUP_FOLDER} + chown ${dbc_dbuser}:${dbc_dbuser} ${BACKUP_FOLDER} + + # Make a backup of the database prior to upgrading from a previous version + echo "Backing up database '${dbc_dbname}' to ${BACKUP_FILE}" + sudo -u ${dbc_dbuser} pg_dump gnuhealth > ${BACKUP_FILE} + chown ${dbc_dbuser}:${dbc_dbuser} ${BACKUP_FILE} + ;; + + install|abort-upgrade) + ;; + + *) + echo "preinst 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 _______________________________________________ debian-med-commit mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/debian-med-commit
