summaryrefslogtreecommitdiffstats
path: root/kernel_postinst.d_dkms.in
diff options
context:
space:
mode:
Diffstat (limited to 'kernel_postinst.d_dkms.in')
-rwxr-xr-xkernel_postinst.d_dkms.in44
1 files changed, 44 insertions, 0 deletions
diff --git a/kernel_postinst.d_dkms.in b/kernel_postinst.d_dkms.in
new file mode 100755
index 0000000..f4ccc95
--- /dev/null
+++ b/kernel_postinst.d_dkms.in
@@ -0,0 +1,44 @@
+#!/bin/sh
+
+# We're passed the version of the kernel being installed
+inst_kern=$1
+
+uname_s=$(uname -s)
+
+_get_kernel_dir() {
+ KVER=$1
+ case ${uname_s} in
+ Linux) DIR="@MODDIR@/$KVER/build" ;;
+ GNU/kFreeBSD) DIR="/usr/src/kfreebsd-headers-$KVER/sys" ;;
+ esac
+ echo "$DIR"
+}
+
+_check_kernel_dir() {
+ DIR=$(_get_kernel_dir "$1")
+ case ${uname_s} in
+ Linux) test -e "$DIR/include" ;;
+ GNU/kFreeBSD) test -e "$DIR/kern" && test -e "$DIR/conf/kmod.mk" ;;
+ *) false ;;
+ esac
+}
+
+case "${uname_s}" in
+ Linux)
+ header_pkg="linux-headers-$inst_kern"
+ kernel="Linux"
+ ;;
+ GNU/kFreeBSD)
+ header_pkg="kfreebsd-headers-$inst_kern"
+ kernel="kFreeBSD"
+ ;;
+esac
+
+if [ -x @LIBDIR@/dkms_autoinstaller ]; then
+ exec @LIBDIR@/dkms_autoinstaller start "$inst_kern"
+fi
+
+if ! _check_kernel_dir "$inst_kern" ; then
+ echo "dkms: WARNING: $kernel headers are missing, which may explain the above failures." >&2
+ echo " please install the $header_pkg package to fix this." >&2
+fi