summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorFerdinand Bachmann2022-04-03 02:58:08 +0200
committerFerdinand Bachmann2022-06-13 03:19:56 +0200
commit82c9fe7f8e479bdc864405a8b455b3dd46f44f74 (patch)
tree220a4c8b14de5abcbc4cb2cdb4ea1e28ccf3b2cd
parentb87dc1442541197378808cf8c65519d11d2ad88c (diff)
downloadaur-82c9fe7f8e479bdc864405a8b455b3dd46f44f74.tar.gz
first working version (with manual link / unlink)
-rw-r--r--.SRCINFO12
-rw-r--r--PKGBUILD18
-rwxr-xr-xlinux-preserve-modules (renamed from preserve-modules.script)113
-rw-r--r--linux-preserve-modules.hook (renamed from preserve-modules-copy.hook)4
-rwxr-xr-xlinux-preserve-modules.script13
-rw-r--r--preserve-modules-link.hook12
6 files changed, 108 insertions, 64 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 86b703763050..2d62994b94ad 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -5,11 +5,11 @@ pkgbase = linux-preserve-modules
url = https://aur.archlinux.org/packages/linux-preserve-modules
arch = any
license = MIT
- source = preserve-modules-copy.hook
- source = preserve-modules-link.hook
- source = preserve-modules.script
- sha256sums = a38ad3600f174f1882d78191706f668eb1da585bf21ffbd6a0bf63057453f874
- sha256sums = 276d479596bac1120162ba65229f5253fd4d44b3c44a57a9c4aeb8125fcf01b2
- sha256sums = c4d1a56a5207736e9f3f2c145b621e60a9d99a93b953ced4ed02917b75f33fc3
+ source = linux-preserve-modules.hook
+ source = linux-preserve-modules.script
+ source = linux-preserve-modules
+ sha256sums = 666c8f92f798a006b83740afae4dc832e4d38209eb866b2019cb32b8798bfdbf
+ sha256sums = 995a5f75dde50626fdf002f1de18fbd06f3b39a5c50d9ea2d44927f7bede11bc
+ sha256sums = 7f068ac894cf2248fa373af17817053db177ceae50e960db55293596b16441b9
pkgname = linux-preserve-modules
diff --git a/PKGBUILD b/PKGBUILD
index bc808e7b1b1c..0f57f44ee50f 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -8,15 +8,15 @@ url="https://aur.archlinux.org/packages/linux-preserve-modules"
arch=('any')
license=('MIT')
depends=()
-source=(preserve-modules-copy.hook
- preserve-modules-link.hook
- preserve-modules.script)
-sha256sums=('a38ad3600f174f1882d78191706f668eb1da585bf21ffbd6a0bf63057453f874'
- '276d479596bac1120162ba65229f5253fd4d44b3c44a57a9c4aeb8125fcf01b2'
- '98820ebc17f2420092e947f60181729046cf656e537d364f6a965dccd30d9149')
+source=(linux-preserve-modules.hook
+ linux-preserve-modules.script
+ linux-preserve-modules)
+sha256sums=('666c8f92f798a006b83740afae4dc832e4d38209eb866b2019cb32b8798bfdbf'
+ '995a5f75dde50626fdf002f1de18fbd06f3b39a5c50d9ea2d44927f7bede11bc'
+ '7f068ac894cf2248fa373af17817053db177ceae50e960db55293596b16441b9')
package() {
- install -Dm644 "$srcdir/preserve-modules-copy.hook" "$pkgdir/usr/share/libalpm/hooks/10-linux-preserve-modules-copy.hook"
- install -Dm644 "$srcdir/preserve-modules-link.hook" "$pkgdir/usr/share/libalpm/hooks/99-linux-preserve-modules-link.hook"
- install -Dm755 "$srcdir/preserve-modules.script" "$pkgdir/usr/share/libalpm/scripts/linux-preserve-modules"
+ install -Dm644 "$srcdir/linux-preserve-modules.hook" "$pkgdir/usr/share/libalpm/hooks/10-linux-preserve-modules.hook"
+ install -Dm755 "$srcdir/linux-preserve-modules.script" "$pkgdir/usr/share/libalpm/scripts/linux-preserve-modules"
+ install -Dm755 "$srcdir/linux-preserve-modules" "$pkgdir/usr/bin/linux-preserve-modules"
}
diff --git a/preserve-modules.script b/linux-preserve-modules
index cb9cc9d3ca2e..2e40066051c9 100755
--- a/preserve-modules.script
+++ b/linux-preserve-modules
@@ -2,10 +2,6 @@
shopt -s nullglob
-KERNEL="$(uname -r)"
-TARGET="usr/lib/modules/$KERNEL"
-PRESERVE_MODULES_DIR=/run/linux-preserve-modules
-
not() {
if "$@"; then
return 1
@@ -14,7 +10,11 @@ not() {
fi
}
-preserve-modules-copy() {
+set-vars() {
+ KERNEL="$1"
+ TARGET="usr/lib/modules/$KERNEL"
+ PRESERVE_MODULES_DIR=/run/linux-preserve-modules
+
TARGET_DIR="/$TARGET"
PRESERVE_DIR="$PRESERVE_MODULES_DIR/modules/$KERNEL"
@@ -23,31 +23,31 @@ preserve-modules-copy() {
echo "error: unknown kernel version" >&2
exit 1
fi
+}
- # exit early if currently running kernel modules untouched
- if not grep -F -q "$TARGET"; then
- echo "info: nothing to copy" >&2
- exit 0
+preserve-modules-copy() {
+ if [[ $# -gt 1 ]]; then
+ echo "usage: preserve-modules copy [release]" >&2
+ exit 1
+ elif [[ $# -eq 1 ]]; then
+ set-vars "$1"
fi
# exit early if the target directory does not exist
- if [[ ! -d "$TARGET_DIR" ]]; then
+ if [[ ! -f "$TARGET_DIR/modules.builtin" ]]; then
echo "info: nothing to copy" >&2
exit 0
fi
- # clean preserved files before transaction
- if [[ -f "$TARGET_DIR/.preserved" ]]; then
- rm "$TARGET_DIR/.preserved"
- rm "$TARGET_DIR/modules".*
-
- mountpoint -q "$TARGET_DIR/kernel" && umount "$TARGET_DIR/kernel"
- mountpoint -q "$TARGET_DIR/updates" && umount "$TARGET_DIR/updates"
+ # exit early if kernel modules already copied
+ if [[ -d "$PRESERVE_DIR/modules.builtin" ]]; then
+ echo "info: already copied" >&2
+ exit 0
fi
# exit early if kernel modules already copied
- if [[ -d "$PRESERVE_DIR" ]]; then
- echo "info: already copied" >&2
+ if [[ -f "$TARGET_DIR/.preserved" ]]; then
+ echo "info: already linked" >&2
exit 0
fi
@@ -62,17 +62,15 @@ preserve-modules-copy() {
}
preserve-modules-link() {
- TARGET_DIR="/$TARGET"
- PRESERVE_DIR="$PRESERVE_MODULES_DIR/modules/$KERNEL"
-
- # exit early if kernel version empty
- if [[ -z "$KERNEL" ]]; then
- echo "error: unknown kernel version" >&2
+ if [[ $# -gt 1 ]]; then
+ echo "usage: preserve-modules link [release]" >&2
exit 1
+ elif [[ $# -eq 1 ]]; then
+ set-vars "$1"
fi
# exit early if no kernel modules copied
- if [[ ! -d "$PRESERVE_DIR" ]]; then
+ if [[ ! -f "$PRESERVE_DIR/modules.builtin" ]]; then
echo "info: nothing to link" >&2
exit 0
fi
@@ -87,7 +85,14 @@ preserve-modules-link() {
exit 0
fi
+ # exit early if kernel modules already copied
+ if [[ -f "$TARGET_DIR/.preserved" ]]; then
+ echo "info: already linked" >&2
+ exit 0
+ fi
+
# copy over dep files and mark kernel version as preserved
+ mkdir -p "$TARGET_DIR/"
touch "$TARGET_DIR/.preserved"
cp -r "$PRESERVE_DIR/modules".* "$TARGET_DIR/"
@@ -104,17 +109,55 @@ preserve-modules-link() {
exit 0
}
+preserve-modules-unlink() {
+ if [[ $# -gt 1 ]]; then
+ echo "usage: preserve-modules unlink [release]" >&2
+ exit 1
+ elif [[ $# -eq 1 ]]; then
+ set-vars "$1"
+ fi
+
+ # exit early if kernel modules not already copied
+ if [[ ! -f "$TARGET_DIR/.preserved" ]]; then
+ echo "info: not linked" >&2
+ exit 0
+ fi
+
+ # clean preserved files
+ rm "$TARGET_DIR/.preserved"
+ rm "$TARGET_DIR/modules".*
+ mountpoint -q "$TARGET_DIR/kernel" && umount "$TARGET_DIR/kernel"
+ mountpoint -q "$TARGET_DIR/updates" && umount "$TARGET_DIR/updates"
+
+ echo "info: unlinked modules" >&2
+ exit 0
+}
+
usage() {
- echo "usage: linux-preserve-modules <copy|link>" >&2
+ echo "usage: linux-preserve-modules <copy|link|unlink> [release]" >&2
exit 1
}
-if [[ "$#" -ne 1 ]]; then
- usage
-fi
+main() {
+ if [[ "$(id -u)" -ne 0 ]]; then
+ echo "error: this script needs to run as root" >&2
+ usage
+ fi
+
+ set-vars "$(uname -r)"
+
+ if [[ "$#" -eq 0 ]]; then
+ usage
+ fi
+
+ CMD="$1"
+ shift
+ case "$CMD" in
+ copy) preserve-modules-copy "$@";;
+ link) preserve-modules-link "$@";;
+ unlink) preserve-modules-unlink "$@";;
+ *) usage;;
+ esac
+}
-case "$1" in
- copy) preserve-modules-copy;;
- link) preserve-modules-link;;
- *) usage;;
-esac
+main "$@"
diff --git a/preserve-modules-copy.hook b/linux-preserve-modules.hook
index 5f402271e272..e60955a167b0 100644
--- a/preserve-modules-copy.hook
+++ b/linux-preserve-modules.hook
@@ -7,7 +7,7 @@ Target = usr/lib/modules/*/
Target = !usr/lib/modules/*/?*
[Action]
-Description = Preserving old linux kernel modules... (copying)
+Description = Preserving old linux kernel modules...
When = PreTransaction
-Exec = /usr/share/libalpm/scripts/linux-preserve-modules copy
+Exec = /usr/share/libalpm/scripts/linux-preserve-modules
NeedsTargets
diff --git a/linux-preserve-modules.script b/linux-preserve-modules.script
new file mode 100755
index 000000000000..88e4a0b91c97
--- /dev/null
+++ b/linux-preserve-modules.script
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+KERNEL="$(uname -r)"
+TARGET="usr/lib/modules/$KERNEL"
+PRESERVE_MODULES_DIR=/run/linux-preserve-modules
+
+if grep -F -q "$TARGET"; then
+ linux-preserve-modules unlink
+ linux-preserve-modules copy
+else
+ echo "info: nothing to copy" >&2
+ exit 0
+fi
diff --git a/preserve-modules-link.hook b/preserve-modules-link.hook
deleted file mode 100644
index 79cdaca47fc8..000000000000
--- a/preserve-modules-link.hook
+++ /dev/null
@@ -1,12 +0,0 @@
-[Trigger]
-Type = Path
-Operation = Install
-Operation = Upgrade
-Operation = Remove
-Target = usr/lib/modules/*/
-Target = !usr/lib/modules/*/?*
-
-[Action]
-Description = Preserving old linux kernel modules... (linking)
-When = PostTransaction
-Exec = /usr/share/libalpm/scripts/linux-preserve-modules link