#! /bin/sh
# postinst script for foo
#
# 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 /usr/share/doc/packaging-manual/
#
# quoting from the policy:
#     Any necessary prompting should almost always be confined to the
#     post-installation script, and should be protected with a conditional
#     so that unnecessary prompting doesn't happen if a package's
#     installation fails and the `postinst' is called with `abort-upgrade',
#     `abort-remove' or `abort-deconfigure'.

case "$1" in
    configure)
	# Adjust the current ICU link in /usr/lib/icu

	if [ -d /usr/lib/icu ]
	then

	icucurrent=`2>/dev/null ls -dp /usr/lib/icu/* | sed -n 's,.*/\([^/]*\)/$,\1,p'| sort -rn | head -1`
	cd /usr/lib/icu
	rm -f current
	if test x"$icucurrent" != x
	then
	    ln -s "$icucurrent" current
	fi

	prefix=@prefix@
	exec_prefix=@exec_prefix@

	# Set ICU_DATA for ease of testing files. It is not necessary to
	# export it as we are guaranteed that the binaries we invoke will
	# use the right directory. But we're not taking chances with the
	# future :)

	ICU_DATA=@libdir@/@PACKAGE@/@VERSION@
	export ICU_DATA

	if test ! -f $ICU_DATA/cnvalias.dat -o @sysconfdir@/icu/convrtrs.txt -nt $ICU_DATA/cnvalias.dat
	then
	    echo Compiling converters and aliases list from @sysconfdir@/icu/convrtrs.txt
	    /usr/sbin/gencnval @sysconfdir@/icu/convrtrs.txt
	fi

	fi
    ;;

    abort-upgrade|abort-remove|abort-deconfigure)

    ;;

    *)
        echo "postinst called with unknown argument \`$1'" >&2
        exit 0
    ;;
esac

# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.

#DEBHELPER#

exit 0


