commit:     0372bbf13c029d77b6e3f2abe538c06b1648b5b2
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Thu Nov 11 03:12:23 2021 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Thu Nov 11 03:12:23 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=0372bbf1

sys-apps/coreutils: add check for running zfs(-kmod) version in coreutils 9

We need to make sure people reboot to avoid data corruption, not just
upgrade the module but fail to restart.

Bug: https://bugs.gentoo.org/815469
Signed-off-by: Sam James <sam <AT> gentoo.org>

 sys-apps/coreutils/coreutils-9.0-r1.ebuild | 37 ++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)

diff --git a/sys-apps/coreutils/coreutils-9.0-r1.ebuild 
b/sys-apps/coreutils/coreutils-9.0-r1.ebuild
index 1a47a1aacc8..394f624522d 100644
--- a/sys-apps/coreutils/coreutils-9.0-r1.ebuild
+++ b/sys-apps/coreutils/coreutils-9.0-r1.ebuild
@@ -58,6 +58,43 @@ RDEPEND+="
        !<app-forensics/tct-1.18-r1
        !<net-fs/netatalk-2.0.3-r4"
 
+pkg_pretend() {
+       if has_version sys-fs/zfs; then
+               einfo "Checking for compatible ZFS version"
+
+               local kmodv minver
+               kmodv="$(grep kmod <(zfs -V 2>/dev/null))"
+               # Convert zfs-kmod-2.1.1-r3-gentoo -> 2.1.1-r3
+               kmodv="${kmodv//zfs-kmod-}"
+               kmodv="${kmodv%%-gentoo}"
+
+               minver="$(ver_cut 2 ${kmodv})"
+               local diemsg=$(cat <<-EOF
+                       Attempted installation of ${P} on unsupported version 
of zfs-kmod!
+                       Please reboot to a newer version of zfs-kmod first:
+                       zfs-kmod >=2.0.7 or zfs-kmod >=2.1.1-r3
+               EOF
+               )
+
+               case "${minver}" in
+                       # 2.0.x
+                       0)
+                               ver_test "${kmodv}" -lt 2.0.7 && die "${diemsg}"
+                               ;;
+                       # 2.1.x
+                       1)
+                               ver_test "${kmodv}" -lt 2.1.1-r3 && die 
"${diemsg}"
+                               ;;
+                       # 0.8.x/9999
+                       *)
+                               # We can't really cover this case realistically
+                               # 9999 is too hard to check and 0.8.x isn't 
being supported anymore.
+                               ;;
+               esac
+       fi
+
+}
+
 pkg_setup() {
        if use test ; then
                python-any-r1_pkg_setup

Reply via email to