summaryrefslogtreecommitdiffstats
path: root/kernel_postinst.d_dkms
blob: c0b9cda04ff7eb6de89d757185dcdbabad6ff4c6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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="/lib/modules/$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 /usr/lib/dkms/dkms_autoinstaller ]; then
    exec /usr/lib/dkms/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