JDBC driver link creation moved to postinst to circunvent problems introduced by old navalplan packages deleting the link when the package is being removed.
95 lines
2.6 KiB
Bash
Executable file
95 lines
2.6 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..."
|
|
push_sql_from_file_as_user $upgrade_file $navalplan_user $navalplan_db
|
|
}
|
|
|
|
push_sql_from_file_as_user() {
|
|
filepath=$1
|
|
username=$2
|
|
database=$3
|
|
psql -U $username -h $database_host \
|
|
$database < $filepath > /dev/null 2>&1
|
|
}
|
|
|
|
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`
|
|
chmod 600 $PGPASSFILE
|
|
|
|
old_db_dump=`mktemp`
|
|
chown $navalplan_admin_user:root $old_db_dump;
|
|
chmod 660 $old_db_dump;
|
|
|
|
# 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
|
|
|
|
echo "Dumping old database..."
|
|
su - -s /bin/sh $navalplan_admin_user -c "pg_dump $navalplan_db >> $old_db_dump" > /dev/null
|
|
|
|
echo "Creating and populating new database...";
|
|
execute_sql_as_admin "CREATE DATABASE $libreplan_db;"
|
|
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;"
|
|
echo "*:*:*:*:$libreplan_passwd" > $PGPASSFILE
|
|
push_sql_from_file_as_user $old_db_dump $libreplan_user $libreplan_db
|
|
|
|
rm $PGPASSFILE $old_db_dump
|
|
|
|
fi
|
|
#DEBHELPER#
|