TASKPM/debian/navalplan.preinst
Nacho Barrientos 215e0e9e82 Add a transitional package
Add a transitional package to help migrating the existing database.

FEA: ItEr75S03CommunityMaterial
2011-11-30 16:49:48 +01:00

106 lines
2.9 KiB
Bash
Executable file

#! /bin/bash
base_dbconfig_data_dir="/usr/share/dbconfig-common/data"
install_upgrade_to() {
upgrade_file="$base_dbconfig_data_dir/libreplan/upgrade/pgsql/$1"
echo "Applying SQL statements to upgrade to version $1..."
psql -U $navalplan_user -h $database_host \
$navalplan_db < $upgrade_file > /dev/null
}
execute_sql_as_admin() {
sql=$1
su - -s /bin/sh $navalplan_admin_user -c "psql -c \"$sql\"" > /dev/null
}
if [[ $1 = upgrade && -r /etc/dbconfig-common/libreplan.conf
&& -r /etc/dbconfig-common/navalplan.conf ]]
then
old_version=$2
. /etc/dbconfig-common/libreplan.conf
libreplan_user=${dbc_dbuser}
libreplan_passwd=${dbc_dbpass}
libreplan_db=${dbc_dbname}
. /etc/dbconfig-common/navalplan.conf
navalplan_user=${dbc_dbuser}
navalplan_passwd=${dbc_dbpass}
navalplan_db=${dbc_dbname}
navalplan_admin_user=${dbc_dbadmin}
if [ -z "${dbc_dbhost}" ] ; then
database_host='localhost'
else
database_host=${dbc_dbhost}
fi
export PGPASSFILE=`mktemp`
# Stop tomcat to flush active connections.
if [ -x /etc/init.d/tomcat6 ] ; then
if [ -x "$(which invoke-rc.d 2> /dev/null)" ] ; then
invoke-rc.d tomcat6 stop
else
/etc/init.d/tomcat6 stop
fi
fi
echo "Dropping newly created empty database...";
execute_sql_as_admin "DROP DATABASE $libreplan_db;"
echo "Trying to apply upgrades to old database..."
echo "*:*:*:*:$navalplan_passwd" > $PGPASSFILE
dpkg --compare-versions $old_version "<<" "1.0.0-1"
if [ $? -eq 0 ]; then
install_upgrade_to "1.0.0"
fi
dpkg --compare-versions $old_version "<<" "1.1.0-1"
if [ $? -eq 0 ]; then
install_upgrade_to "1.1.0"
fi
dpkg --compare-versions $old_version "<<" "1.2.0-1"
if [ $? -eq 0 ]; then
install_upgrade_to "1.2.0"
fi
# Rename old database (navalplan -> libreplan)
echo "Renaming old database..."
execute_sql_as_admin "ALTER DATABASE $navalplan_db RENAME TO $libreplan_db;"
# Grant permissions to libreplan user
echo "Fixing permissions..."
execute_sql_as_admin "GRANT ALL PRIVILEGES ON DATABASE $libreplan_db TO $libreplan_user;"
execute_sql_as_admin "ALTER DATABASE $libreplan_db OWNER TO $libreplan_user;"
su - -s /bin/sh $navalplan_admin_user -c \
"psql $libreplan_db -c \"GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA
public TO $libreplan_user;\"" > /dev/null
rm $PGPASSFILE
# Remove old deployment directory as it's no longer necessary.
if [ -d /var/lib/tomcat6/webapps/navalplan/ ] ; then
rm -rf /var/lib/tomcat6/webapps/navalplan/
fi
# Make sure the driver is there, as it might be removed when
# uninstalling older versions of the package.
if [ ! -L /usr/share/tomcat6/lib/postgresql-jdbc3.jar ] ; then
ln -sf /usr/share/java/postgresql-jdbc3.jar /usr/share/tomcat6/lib/
fi
# Start tomcat again
if [ -x /etc/init.d/tomcat6 ] ; then
if [ -x "$(which invoke-rc.d 2> /dev/null)" ] ; then
invoke-rc.d tomcat6 start
else
/etc/init.d/tomcat6 start
fi
fi
fi
#DEBHELPER#