#! /bin/bash
# postinst script
#
# 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
#

PATH="/sbin:/bin:/usr/sbin:/usr/bin"
KERNEL_IMG_CONF="/etc/kernel-img.conf"
RELEASE="9.0-RELEASE"
ARCH="$(dpkg --print-architecture | sed -e "s/^kfreebsd-//")"
MANIFEST="/usr/share/kfreebsd-downloader/MANIFEST.${ARCH}"

case "$1" in
    configure)
	cachedir="/var/cache/kfreebsd-downloader/${RELEASE}"
	moduledir="/lib/modules/${RELEASE}"

	# Download
	mkdir -p ${cachedir}
	wget http://ftp.freebsd.org/pub/FreeBSD/releases/${ARCH}/${ARCH}/${RELEASE}/kernel.txz \
		-c -O ${cachedir}/kernel.txz

	# Verify
	grep "^kernel\.txz\s" ${MANIFEST} | (read file sum dummy; sha256sum ${cachedir}/kernel.txz | grep "^${sum}\s")

	# Unpack
	rm -rf ${moduledir}
	mkdir -p ${moduledir}
	echo "Unpacking kFreeBSD ${RELEASE} ..." >&2
	tar --strip-components=3 -C ${moduledir} -xJf ${cachedir}/kernel.txz

	# Install kernel image
	gzip -9 < ${moduledir}/kernel > /boot/kfreebsd-${RELEASE}.gz
	rm -f ${moduledir}/${RELEASE}/kernel

	########################################################################

        # Sanitize and quote maintainer script parameters
        for p in "$@"; do
            q="$(echo "$p" | sed -e "s/'/'\\''/g")"
            DEB_MAINT_PARAMS="$DEB_MAINT_PARAMS '$q'"
        done
        export DEB_MAINT_PARAMS

        # Run /etc/kernel-img.conf postinst hook if defined
        postinst_hook=$(sed '/^\s*postinst_hook/!d;s/.*=\s*//' $KERNEL_IMG_CONF 2>/dev/null || true)
        if [ -n "$postinst_hook" ] ; then
            echo "Running postinst hook script $postinst_hook." 1>&2
            $postinst_hook "$RELEASE" "/boot/kfreebsd-$RELEASE.gz"
        fi

        # Run /etc/kernel/postinst.d/ hooks if they exist
        if [ -d "/etc/kernel/postinst.d" ] ; then
            run-parts --verbose --exit-on-error \
                --arg=$RELEASE \
                --arg=/boot/kfreebsd-$RELEASE.gz \
                /etc/kernel/postinst.d
        fi
    ;;

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

    *)
        echo "postinst 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
