#! /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"
MANIFEST="/usr/share/kfreebsd-downloader/9.1/MANIFEST.amd64"

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

	# Download
	mkdir -p ${cachedir}
	found=false
	for base_url in \
		http://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/9.1-RELEASE \
		http://ftp-archive.freebsd.org/pub/FreeBSD-Archive/old-releases/amd64/amd64/9.1-RELEASE \
		http://people.debian.org/~rmh/kfreebsd-downloader/amd64/9.1-RELEASE \
	; do
		if wget ${base_url}/kernel.txz -c -O ${cachedir}/kernel.txz ; then
			found=true
			break
		fi
	done
	${found}

	# 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 9.1-RELEASE ..." >&2
	tar --strip-components=3 -C ${moduledir} -xJf ${cachedir}/kernel.txz

	# Install kernel image
	gzip -9 < ${moduledir}/kernel > /boot/kfreebsd-9.1-RELEASE.gz
	rm -f ${moduledir}/9.1-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.



exit 0
