Below is the file 'debian/monotone-server.postinst' from this revision. You can also download the file.
#! /bin/sh
# postinst script for monotone-server
#
# This script attempts to perform any db migrations neccessary during an
# upgrade.
#
# see: dh_installdeb(1)
set -e
# summary of how this script can be called:
# * <postinst> `configure' <most-recently-configured-version>
# * <old-postinst> `abort-upgrade' <new version>
# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
# <new-version>
# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
# <failed-install-package> <version> `removing'
# <conflicting-package> <version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
#
# source debconf stuff
. /usr/share/debconf/confmodule
MTN=/usr/bin/mtn
monotone_check_minimum_previous_version ()
{
if dpkg --compare-versions "$MTN_VERSION" lt "0.17"; then
# monotone version to old to automatically upgrade
echo "Cannot automatically upgrade from monotone version $2." >&2
echo "Please see UPGRADE and README.changesets in /usr/share/doc/monotone for" >&2
echo "information on manually upgrading your database." >&2
/bin/false
else
/bin/true
fi
}
monotone_migrate ()
{
if dpkg --compare-versions "$MTN_VERSION" lt "0.39-90"; then
# upgradable version of monotone
echo "Attempting to migrate monotone database. This may take a while..." >&2
echo "A backup named '`basename $MTN_DB~`' will be created in $MTN_HOME." >&2
cp $MTN_DB $MTN_DB~
if $MTN --db=$MTN_DB db migrate --rcfile=$MTN_CONFDIR/hooks.lua \
--norc --keydir=$MTN_KEYDIR --confdir=$MTN_CONFDIR >&2; then
echo "Database successfully migrated." >&2
/bin/true
else
echo "*** Error migrating database. ***" >&2
echo "Please see UPGRADE and README.changesets in /usr/share/doc/monotone for" >&2
echo "information on manually upgrading your database." >&2
/bin/false
fi
else
/bin/true
fi
}
monotone_rosterify ()
{
if dpkg --compare-versions "$MTN_VERSION" lt "0.26"; then
# now we need to rosterify
echo "Attempting to rosterify monotone database..." >&2
if $MTN --db=$MTN_DB db rosterify --rcfile=$MTN_CONFDIR/hooks.lua \
--norc --keydir=$MTN_KEYDIR --confdir=$MTN_CONFDIR >&2; then
echo "Database successfully rosterified." >&2
/bin/true
else
echo "*** Error rosterifying database. ***" >&2
echo "Please see UPGRADE and README.changesets in /usr/share/doc/monotone for" >&2
echo "information on manually upgrading your database." >&2
/bin/false
fi
else
/bin/true
fi
}
monotone_regenerate_caches ()
{
if dpkg --compare-versions "$MTN_VERSION" lt "0.31-90.1"; then
# now we need to regenerate caches
echo "Attempting to regenerate caches..." >&2
if $MTN --db=$MTN_DB db regenerate_caches --rcfile=$MTN_CONFDIR/hooks.lua \
--norc --keydir=$MTN_KEYDIR --confdir=$MTN_CONFDIR >&2; then
echo "Caches successfully regenerated." >&2
/bin/true
else
echo "*** Error regenerating roster. ***" >&2
echo "Please see UPGRADE and README.changesets in /usr/share/doc/monotone for" >&2
echo "information on manually upgrading your database." >&2
/bin/false
fi
else
/bin/true
fi
}
case "$1" in
configure)
# directory turned into symlink; give dpkg a hand
if [ ! -L /usr/share/doc/monotone-server ] && \
[ -e /usr/share/doc/monotone-server ]; then
rmdir /usr/share/doc/monotone-server
ln -sf monotone /usr/share/doc/monotone-server
fi
MTN_HOME=/var/lib/monotone
MTN_DB=$MTN_HOME/default.mtn
MTN_CONFDIR=/etc/monotone
MTN_KEYDIR=$MTN_HOME/keys
ucf --debconf-ok /usr/share/monotone/write-permissions.base /etc/monotone/write-permissions
ucf --debconf-ok /usr/share/monotone/read-permissions.base /etc/monotone/read-permissions
ucf --debconf-ok /usr/share/monotone/hooks.lua.base /etc/monotone/hooks.lua
ucfr monotone-server /etc/monotone/write-permissions
ucfr monotone-server /etc/monotone/read-permissions
ucfr monotone-server /etc/monotone/hooks.lua
# if this is our first install give config files correct permissions
if [ -z "$2" ]; then
# create monotone user and fix permissions of files
if [ -z "`id -u monotone 2>/dev/null`" ]; then
adduser --system --group --home $MTN_HOME \
--no-create-home --disabled-password --quiet \
--gecos "Monotone" monotone
fi
chown monotone:monotone $MTN_HOME
chown monotone:monotone $MTN_CONFDIR
chown monotone:monotone $MTN_KEYDIR
chown monotone:monotone /var/log/monotone
chown monotone:monotone /var/run/monotone
chmod 0750 $MTN_HOME
chmod 0750 $MTN_CONFDIR
chmod 0750 $MTN_KEYDIR
chown monotone:monotone /etc/monotone/write-permissions
chown monotone:monotone /etc/monotone/read-permissions
chown monotone:monotone /etc/monotone/hooks.lua
chmod 0640 /etc/monotone/write-permissions
chmod 0640 /etc/monotone/read-permissions
chmod 0640 /etc/monotone/hooks.lua
fi
db_get monotone-server/manage-db
if [ "$RET" = "true" ]; then
db_get monotone-server/key
MTN_KEY=$RET
# read our passphrase from a file
if [ -e "$MTN_CONFDIR/passphrases" ]; then
db_set monotone-server/passphrase "`grep "$MTN_KEY" $MTN_CONFDIR/passphrases | awk -F ' "|" "|" |"' '{print $2}'`"
fi
db_get monotone-server/passphrase
MTN_KEY_PASSWD=$RET
MTN_VERSION="$2"
# Since we are configuring, we should check if we are upgrading. If we are
# upgrading, we should run the proper db migrate commands if necessary.
if [ -z "$2" ]; then
# not upgrading, fresh install
# if there is no database, create one
if [ ! -e $MTN_DB ]; then
echo "Creating Monotone database..." >&2
$MTN --db=$MTN_DB db init \
--norc --keydir=$MTN_KEYDIR --confdir=$MTN_CONFDIR
chmod 0600 $MTN_DB
chown monotone:monotone $MTN_DB
echo "Creating Monotone server keypair..." >&2
yes "$MTN_KEY_PASSWD" |
$MTN --db=$MTN_DB genkey $MTN_KEY --quiet \
--norc --keydir=$MTN_KEYDIR --confdir=$MTN_CONFDIR
chown monotone:monotone $MTN_HOME/keys/*
echo "Monotone database created successfully." >&2
fi
else
set +e
monotone_check_minimum_previous_version && \
monotone_migrate && \
monotone_rosterify && \
monotone_regenerate_caches
set -e
fi
echo "$MTN_KEY \"$MTN_KEY_PASSWD\"" > $MTN_CONFDIR/passphrases
chown monotone:monotone $MTN_CONFDIR/passphrases
chmod 0400 $MTN_CONFDIR/passphrases
db_set monotone-server/passphrase ""
fi
;;
abort-upgrade|abort-remove|abort-deconfigure)
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
# stop debconf
db_stop
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
#DEBHELPER#
exit 0