#!/bin/sh
# Copyright (C) 2002-2005 Flavio Stanchina
# Copyright (C) 2005-2006 Aric Cyr
# Copyright (C) 2007 Mario Limonciello
# Copyright (C) 2009 Alberto Milone
# Copyright (C) 2010 Ricardo Salveti de Araujo

set -e

NAME=gator-module
PACKAGE_NAME=$NAME-dkms
CVERSION=`dpkg-query -W -f='${Version}' $PACKAGE_NAME | awk -F "-" '{print $1}' | cut -d\: -f2`
ARCH=`dpkg --print-architecture`

dkms_configure () {
	for POSTINST in /usr/lib/dkms/common.postinst "/usr/share/$PACKAGE_NAME/postinst"; do
		if [ -f "$POSTINST" ]; then
			"$POSTINST" "$NAME" "$CVERSION" "/usr/share/$PACKAGE_NAME" "$ARCH" "$2"
			return $?
		fi
		echo "WARNING: $POSTINST does not exist." >&2
	done
	echo "ERROR: DKMS version is too old and $PACKAGE_NAME was not" >&2
	echo "built with legacy DKMS support." >&2
	echo "You must either rebuild $PACKAGE_NAME with legacy postinst" >&2
	echo "support or upgrade DKMS to a more current version." >&2
	return 1
}

case "$1" in
	configure)
		dkms_configure
	;;

	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
