GNU bug report logs - #70642
[PATCH v0] gnu: zfs: Update to 2.2.3

Previous Next

Package: guix-patches;

Reported by: antlers <antlers <at> illucid.net>

Date: Mon, 29 Apr 2024 08:27:01 UTC

Severity: normal

Tags: patch

Done: Christopher Baines <mail <at> cbaines.net>

To reply to this bug, email your comments to 70642 AT debbugs.gnu.org.
There is no need to reopen the bug first.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#70642; Package guix-patches. (Mon, 29 Apr 2024 08:27:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to antlers <antlers <at> illucid.net>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Mon, 29 Apr 2024 08:27:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: antlers <antlers <at> illucid.net>
To: guix-patches <at> gnu.org
Cc: antlers <antlers <at> illucid.net>
Subject: [PATCH v0] gnu: zfs: Update to 2.2.3
Date: Mon, 29 Apr 2024 01:22:36 -0700
* gnu/packages/file-systems.scm (zfs): Update to 2.2.3
---
I did the bare minimum to build v2.2.x after mounting my array elsewhere and
inadvertently catching a dependance on feature 'com.klarasystems:vdev_zaps_v2'.
Specifically, I removed substitutions on files which no longer exist and added
new ones until it built. Hence I can make no claim that this is exaustive, but
I can mount the array and nothing's broken that wasn't already (ie. ZED).

I've made a habit of mentioning how to run this because it's not documented.
You have to:

a.) build it against your current kernel (<=v6.7, lts is currently 6.6) by
setting the package's '#:linux' argument.

b.) ensure that the module is loaded by either creating a
'kernel-module-loader' service or building the module into the kernel.

A few additional notes-to-self:

- Combining 'a' with the latter approach to 'b' means building the kernel
  twice, when (IIRC) 'linux-module-build-system' packages often depend on
  target sources rather than outputs? We should probably be able to set
  `#:linux` to (or infer from it) the headers or whatever's needed without
  depending on a full kernel build.

- ZFS Event Daemon (ZED) fails to start because it thinks it lives in
  '/gnu/store/...-zfs-2.x.x/var/run', and I don't even see an option to
  override it from the command-line. Seems to have been like that for a while.
  Should be a quick fix by setting '@runstatedir@' correctly, but I doubt
  anyone's clamoring for it and am moving on for now -- could toss in a fix for
  that with the next point release?

 gnu/packages/file-systems.scm | 36 ++++++++++++++---------------------
 1 file changed, 14 insertions(+), 22 deletions(-)

diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm
index 8afd853350..8e85b295cf 100644
--- a/gnu/packages/file-systems.scm
+++ b/gnu/packages/file-systems.scm
@@ -1442,7 +1442,7 @@ (define args
 (define-public zfs
   (package
     (name "zfs")
-    (version "2.1.14")
+    (version "2.2.3")
     (outputs '("out" "module" "src"))
     (source
       (origin
@@ -1451,7 +1451,7 @@ (define-public zfs
                               "/download/zfs-" version
                               "/zfs-" version ".tar.gz"))
           (sha256
-           (base32 "0gzansmin40llxxh2zkgpdyp41ikd8s5hv5mpwhpcivk1q8fv7sh"))))
+           (base32 "1hqsv2skymrhzg9n94bcna8r7m1zl30wjb5knaw43j659vri599h"))))
     (build-system linux-module-build-system)
     (arguments
      (list
@@ -1500,12 +1500,6 @@ (define-public zfs
                              "man/man7/zpool-features.7")
                 (("/usr/share/zfs/compatibility.d")
                  (string-append #$output "/share/zfs/compatibility.d")))
-              (substitute* "etc/Makefile.in"
-                ;; This just contains an example configuration file for
-                ;; configuring ZFS on traditional init systems, skip it
-                ;; since we cannot use it anyway; the install target becomes
-                ;; misdirected.
-                (("= default ") "= "))
               (substitute* "lib/libzfs/os/linux/libzfs_util_os.c"
                 ;; Use path to /gnu/store/*-kmod in actual path that is
                 ;; exec'ed.
@@ -1516,9 +1510,17 @@ (define-public zfs
                 ;; Just use 'modprobe' in message to user, since Guix
                 ;; does not have a traditional /sbin/
                 (("'/sbin/modprobe ") "'modprobe "))
-              (substitute* "contrib/Makefile.in"
-                ;; This is not configurable nor is its hard-coded /usr prefix.
-                ((" initramfs") ""))
+              (substitute* "configure"
+                (("/etc/default")
+		 (string-append #$output "/etc/default"))
+		(("/etc/bash_completion.d")
+		 (string-append #$output "/etc/bash_completion.d")))
+              (substitute* "Makefile.in"
+                (("/usr/share/initramfs-tools")
+		 (string-append #$output "/usr/share/initramfs-tools")))
+              (substitute* "contrib/initramfs/Makefile.am"
+                (("/usr/share/initramfs-tools")
+		 (string-append #$output "/usr/share/initramfs-tools")))
               (substitute* "module/os/linux/zfs/zfs_ctldir.c"
                 (("/usr/bin/env\", \"umount")
                  (string-append (search-input-file inputs "/bin/umount")
@@ -1535,18 +1537,8 @@ (define-public zfs
               (substitute* "config/zfs-build.m4"
                 (("\\$sysconfdir/init.d")
                  (string-append #$output "/etc/init.d")))
-              (substitute* '("etc/zfs/Makefile.am"
-                             "cmd/zed/Makefile.am")
+              (substitute* '("cmd/zed/Makefile.am")
                 (("\\$\\(sysconfdir)") (string-append #$output "/etc")))
-              (substitute* "cmd/vdev_id/vdev_id"
-                (("PATH=/bin:/sbin:/usr/bin:/usr/sbin")
-                 (string-append "PATH="
-                                (dirname (which "chmod")) ":"
-                                (dirname (which "grep")) ":"
-                                (dirname (which "sed")) ":"
-                                (dirname (which "gawk")))))
-              (substitute* "contrib/pyzfs/Makefile.in"
-                ((".*install-lib.*") ""))
               (substitute* '("Makefile.am" "Makefile.in")
                 (("\\$\\(prefix)/src") (string-append #$output:src "/src")))
               (substitute* (find-files "udev/rules.d/" ".rules.in$")
-- 
2.41.0





Reply sent to Christopher Baines <mail <at> cbaines.net>:
You have taken responsibility. (Mon, 13 May 2024 08:58:01 GMT) Full text and rfc822 format available.

Notification sent to antlers <antlers <at> illucid.net>:
bug acknowledged by developer. (Mon, 13 May 2024 08:58:02 GMT) Full text and rfc822 format available.

Message #10 received at 70642-done <at> debbugs.gnu.org (full text, mbox):

From: Christopher Baines <mail <at> cbaines.net>
To: antlers <antlers <at> illucid.net>
Cc: 70642-done <at> debbugs.gnu.org
Subject: Re: [bug#70642] [PATCH v0] gnu: zfs: Update to 2.2.3
Date: Mon, 13 May 2024 09:57:08 +0100
[Message part 1 (text/plain, inline)]
antlers via Guix-patches via <guix-patches <at> gnu.org> writes:

>  gnu/packages/file-systems.scm | 36 ++++++++++++++---------------------
>  1 file changed, 14 insertions(+), 22 deletions(-)
>

...

> @@ -1500,12 +1500,6 @@ (define-public zfs
>                               "man/man7/zpool-features.7")
>                  (("/usr/share/zfs/compatibility.d")
>                   (string-append #$output "/share/zfs/compatibility.d")))
> -              (substitute* "etc/Makefile.in"
> -                ;; This just contains an example configuration file for
> -                ;; configuring ZFS on traditional init systems, skip it
> -                ;; since we cannot use it anyway; the install target becomes
> -                ;; misdirected.
> -                (("= default ") "= "))
>                (substitute* "lib/libzfs/os/linux/libzfs_util_os.c"
>                  ;; Use path to /gnu/store/*-kmod in actual path that is
>                  ;; exec'ed.
> @@ -1516,9 +1510,17 @@ (define-public zfs
>                  ;; Just use 'modprobe' in message to user, since Guix
>                  ;; does not have a traditional /sbin/
>                  (("'/sbin/modprobe ") "'modprobe "))
> -              (substitute* "contrib/Makefile.in"
> -                ;; This is not configurable nor is its hard-coded /usr prefix.
> -                ((" initramfs") ""))
> +              (substitute* "configure"
> +                (("/etc/default")
> +		 (string-append #$output "/etc/default"))
> +		(("/etc/bash_completion.d")
> +		 (string-append #$output "/etc/bash_completion.d")))
> +              (substitute* "Makefile.in"
> +                (("/usr/share/initramfs-tools")
> +		 (string-append #$output "/usr/share/initramfs-tools")))
> +              (substitute* "contrib/initramfs/Makefile.am"
> +                (("/usr/share/initramfs-tools")
> +		 (string-append #$output "/usr/share/initramfs-tools")))

You had a bunch of tabs here which guix lint should tell you about.

>                (substitute* "module/os/linux/zfs/zfs_ctldir.c"
>                  (("/usr/bin/env\", \"umount")
>                   (string-append (search-input-file inputs "/bin/umount")
> @@ -1535,18 +1537,8 @@ (define-public zfs
>                (substitute* "config/zfs-build.m4"
>                  (("\\$sysconfdir/init.d")
>                   (string-append #$output "/etc/init.d")))
> -              (substitute* '("etc/zfs/Makefile.am"
> -                             "cmd/zed/Makefile.am")
> +              (substitute* '("cmd/zed/Makefile.am")
>                  (("\\$\\(sysconfdir)") (string-append #$output "/etc")))
> -              (substitute* "cmd/vdev_id/vdev_id"

I've restored this substitute* and just corrected the file location.

> -                (("PATH=/bin:/sbin:/usr/bin:/usr/sbin")
> -                 (string-append "PATH="
> -                                (dirname (which "chmod")) ":"
> -                                (dirname (which "grep")) ":"
> -                                (dirname (which "sed")) ":"
> -                                (dirname (which "gawk")))))
> -              (substitute* "contrib/pyzfs/Makefile.in"
> -                ((".*install-lib.*") ""))
>                (substitute* '("Makefile.am" "Makefile.in")
>                  (("\\$\\(prefix)/src") (string-append #$output:src "/src")))
>                (substitute* (find-files "udev/rules.d/" ".rules.in$")

Thanks for the patch, I've made the tweaks above and pushed this to
master as 0309080ffcb1d6a124f672275316a76bcda2e211.

Chris
[signature.asc (application/pgp-signature, inline)]

This bug report was last modified 3 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.