]> code.delx.au - monosys/commitdiff
clean-dkms
authorJames Bunton <jamesbunton@delx.net.au>
Wed, 12 Aug 2015 11:10:10 +0000 (21:10 +1000)
committerJames Bunton <jamesbunton@delx.net.au>
Wed, 12 Aug 2015 11:12:58 +0000 (21:12 +1000)
clean-dkms [new file with mode: 0755]

diff --git a/clean-dkms b/clean-dkms
new file mode 100755 (executable)
index 0000000..167b07e
--- /dev/null
@@ -0,0 +1,31 @@
+#!/bin/bash
+
+architecture="x86_64"
+linux_packages="linux linux-lts"
+
+echo "# Running: $(uname -r)"
+for linux in $linux_packages; do
+    echo "# Installed: $(pacman -Q "$linux")"
+done
+
+echo
+find /var/lib/dkms/ -maxdepth 2 -type l -name 'kernel-*' | while read line; do
+    module_name="$(echo "$line" | cut -d/ -f5)"
+    package_name="${module_name}-dkms"
+    module_version="$(pacman -Q "${package_name}" | cut -d' ' -f2)"
+    long_kernel_version="$(echo "$line" | cut -d/ -f6)"
+    kernel_version="$(echo "$long_kernel_version" | sed -e 's/^kernel-//' -e "s/-${architecture}\$//")"
+    if [ "$kernel_version" = "$(uname -r)" ]; then
+        continue
+    fi
+    echo dkms remove -m "$module_name" -v 6.30.223.248 -k "$kernel_version"
+done
+
+echo
+find /lib/modules/ -maxdepth 1 -type d -name '[0-9]*' | while read line; do
+    if pacman -Qo "$line" &> /dev/null; then
+        continue
+    fi
+    echo rm -rf "$line"
+done
+