]> code.delx.au - monosys/blob - clean-dkms
aur-install: to /var/abs
[monosys] / clean-dkms
1 #!/bin/bash
2
3 architecture="x86_64"
4 linux_packages="linux linux-lts"
5
6 declare -A module2package
7 module2package[nvidia]="$(pacman -Qqs nvidia dkms)"
8 module2package[vboxhost]=virtualbox-host-dkms
9 module2package[broadcom-wl]=broadcom-wl-dkms
10 module2package[spl]=spl-dkms
11 module2package[zfs]=zfs-dkms
12
13 echo "# Running: $(uname -r)"
14 for linux in $linux_packages; do
15 echo "# Installed: $(pacman -Q "$linux")"
16 done
17
18 echo
19 find /var/lib/dkms/ -maxdepth 2 -type l -name 'kernel-*' | while read line; do
20 module_name="$(echo "$line" | cut -d/ -f5)"
21 package_name="${module2package[$module_name]}"
22 if [ -z "$package_name" ]; then
23 echo "Unknown module: $module_name"
24 exit 1
25 fi
26 module_version="$(pacman -Q "${package_name}" | cut -d' ' -f2 | cut -d'-' -f1)"
27 long_kernel_version="$(echo "$line" | cut -d/ -f6)"
28 kernel_version="$(echo "$long_kernel_version" | sed -e 's/^kernel-//' -e "s/-${architecture}\$//")"
29 if [ "$kernel_version" = "$(uname -r)" ]; then
30 continue
31 fi
32 echo dkms remove -m "$module_name" -v "$module_version" -k "$kernel_version"
33 done
34
35 echo
36 find /lib/modules/ -maxdepth 1 -type d -name '[0-9]*' | while read line; do
37 if pacman -Qo "$line" &> /dev/null; then
38 continue
39 fi
40 echo rm -rf "$line"
41 done
42