[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#71482] [PATCH v2] gnu: zfs: Split the kernel module out of the base
From: |
Zheng Junjie |
Subject: |
[bug#71482] [PATCH v2] gnu: zfs: Split the kernel module out of the base package. |
Date: |
Sun, 06 Oct 2024 00:17:19 +0800 |
Kaelyn Takata via Guix-patches via <guix-patches@gnu.org> writes:
> Split the ZFS user-space tools and kernel modules into separate packages, with
> a new make-zfs-for-kernel procedure for easily creating ZFS kernel module
> packages for a specific kernel package. The generated kernel module package
> includes the kernel version for which it was built in the name of the package,
> such as "zfs-for-linux-libre-6.6.32-version".
>
> & gnu/packages/file-systems.scm (zfs): Change to be the user-space tools.
> (make-zfs-for-kernel): New procedure which accepts a single 'kernel-package'
> argument.
>
> Change-Id: Ib2d0e2b0f031d2ab3105d6b46ecd73bde1aa8564
> ---
> gnu/packages/file-systems.scm | 126 ++++++++++++++++++++--------------
> 1 file changed, 73 insertions(+), 53 deletions(-)
>
> diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm
> index 059bdf67a9..ceaaf7f3ab 100644
> --- a/gnu/packages/file-systems.scm
> +++ b/gnu/packages/file-systems.scm
> @@ -9,7 +9,7 @@
> ;;; Copyright © 2021 raid5atemyhomework <raid5atemyhomework@protonmail.com>
> ;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at>
> ;;; Copyright © 2021 Noisytoot <noisytoot@disroot.org>
> -;;; Copyright © 2021, 2023 Kaelyn Takata <kaelyn.alexi@protonmail.com>
> +;;; Copyright © 2021, 2023, 2024 Kaelyn Takata <kaelyn.alexi@protonmail.com>
> ;;; Copyright © 2022 Brian Cully <bjc@spork.org>
> ;;; Copyright © 2023 Aaron Covrig <aaron.covrig.us@ieee.org>
> ;;; Copyright © 2024 Ahmad Draidi <a.r.draidi@redscript.org>
> @@ -1564,7 +1564,6 @@ (define-public zfs
> (package
> (name "zfs")
> (version "2.2.6")
> - (outputs '("out" "module" "src"))
> (source
> (origin
> (method url-fetch)
> @@ -1573,33 +1572,19 @@ (define-public zfs
> "/zfs-" version ".tar.gz"))
> (sha256
> (base32 "19x2a8k25i3y6nr7nx5aaqrpnp55vjmrw86p06zpgpf578804bn9"))))
> - (build-system linux-module-build-system)
> + (build-system gnu-build-system)
> (arguments
> (list
> - ;; The ZFS kernel module should not be downloaded since the license
> - ;; terms don't allow for distributing it, only building it locally.
> - #:substitutable? #f
> - ;; Tests cannot run in an unprivileged build environment.
> - #:tests? #f
> + #:configure-flags #~(list "--with-config=user"
> + (string-append "--prefix=" #$output)
> + (string-append "--with-dracutdir=" #$output
> + "/lib/dracut")
> + (string-append "--with-udevdir=" #$output
> + "/lib/udev")
> + (string-append "--with-mounthelperdir="
> #$output
> + "/sbin"))
> #:phases
> #~(modify-phases %standard-phases
> - (add-after 'configure 'really-configure
> - (lambda* (#:key inputs #:allow-other-keys)
> - (substitute* "configure"
> - (("-/bin/sh") (string-append "-" (which "sh"))))
> - (invoke "./configure"
> - "--with-config=all"
> - (string-append "--prefix=" #$output)
> - (string-append "--with-dracutdir=" #$output
> - "/lib/dracut")
> - (string-append "--with-udevdir=" #$output
> - "/lib/udev")
> - (string-append "--with-mounthelperdir=" #$output
> - "/sbin")
> - (string-append "--with-linux="
> - (search-input-directory
> - inputs
> - "lib/modules/build")))))
> (add-after 'unpack 'patch-source
> (lambda* (#:key inputs #:allow-other-keys)
> ;; New feature "compatibility=" in 2.1.0.
> @@ -1631,14 +1616,6 @@ (define-public zfs
> ;; Just use 'modprobe' in message to user, since Guix
> ;; does not have a traditional /sbin/
> (("'/sbin/modprobe ") "'modprobe "))
> - (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")))
> @@ -1668,31 +1645,22 @@ (define-public zfs
> (dirname (which "sed")) ":"
> (dirname (which "gawk")))))
> (substitute* '("Makefile.am" "Makefile.in")
> - (("\\$\\(prefix)/src") (string-append #$output:src "/src")))
> + (("@initconfdir@") (string-append #$output "/etc/default"))
> + (("/usr/share/initramfs-tools" dir) (string-append #$output
> dir)))
> (substitute* (find-files "udev/rules.d/" ".rules.in$")
> (("/sbin/modprobe")
> (search-input-file inputs "/bin/modprobe")))))
> - (replace 'build
> - (lambda _ (invoke "make")))
> (replace 'install
> - (lambda* (#:key inputs native-inputs #:allow-other-keys)
> - (let* ((kmod (assoc-ref (or native-inputs inputs) "kmod")))
> - (invoke "make" "install"
> - (string-append "DEFAULT_INITCONF_DIR="
> - #$output "/etc/default")
> - (string-append "DEPMOD="
> - (search-input-file
> - (or native-inputs inputs)
> - "/bin/depmod"))
> - (string-append "INSTALL_PATH=" #$output)
> - (string-append "INSTALL_MOD_PATH=" #$output:module)
> - "INSTALL_MOD_STRIP=1")
> - (install-file
> - "contrib/bash_completion.d/zfs"
> - (string-append #$output
> - "/share/bash-completion/completions"))))))))
> + (lambda _
> + (invoke "make" "install"
> + (string-append "DEFAULT_INITCONF_DIR="
> + #$output "/etc/default")
> + (string-append "INSTALL_PATH=" #$output)
> + (string-append "bashcompletiondir="
> + #$output
> +
> "/share/bash-completion/completions")))))))
> (native-inputs
> - (list attr kmod pkg-config))
> + (list attr kmod pkg-config python))
> (inputs (list eudev
> kmod
> libaio
> @@ -1712,6 +1680,58 @@ (define-public zfs
> community.")
> (license license:cddl1.0)))
>
> +(define-public (make-zfs-for-kernel kernel-package)
Just to be clear, I don't know much about ZFS licensing issues.
i don't think need a procedure, just a package, If I understand the code
correctly, gnu/services.scm (linux-builder-service-type) will replace
#:linux to target-linux, and see
linux-builder-configuration->system-entry , package-for-kernel.
> + (package
> + (inherit zfs)
> + (name (string-join (list (package-name zfs)
> + "for"
> + (package-name kernel-package)
> + (package-version kernel-package)
> + "version")
> + "-"))
> + (build-system linux-module-build-system)
> + (arguments
> + (substitute-keyword-arguments
> + (strip-keyword-arguments '(#:configure-flags)
> + (package-arguments zfs))
> + ((#:linux _ #f) kernel-package)
> + ((#:substitutable? _ #t) #f)
> + ((#:phases phases)
> + #~(modify-phases %standard-phases
> + (add-after 'unpack 'patch-source
> + (assoc-ref #$phases 'patch-source))
> + (add-after 'configure 'really-configure
> + (lambda* (#:key inputs #:allow-other-keys)
> + (substitute* "configure"
> + (("-/bin/sh") (string-append "-" (which "sh"))))
> + (invoke "./configure"
> + "--with-config=kernel"
> + (string-append "--prefix=" #$output)
> + (string-append "--with-udevdir=" #$output
> + "/lib/udev")
> + (string-append "--with-linux="
> + (search-input-directory
> + inputs
> + "lib/modules/build")))))
> + (replace 'build
> + (lambda* (#:key (make-flags '()) (parallel-build? #t)
> + #:allow-other-keys)
> + (apply invoke "make"
> + `(,@(if parallel-build?
> + `("-j" ,(number->string (parallel-job-count)))
> + '())
> + ,@make-flags))))
> + (replace 'install
> + (lambda* (#:key inputs native-inputs #:allow-other-keys)
> + (let* ((kmod (assoc-ref (or native-inputs inputs) "kmod")))
> + (invoke "make" "-C" "module" "install"
> + (string-append "DEPMOD="
> + (search-input-file
> + (or native-inputs inputs)
> + "/bin/depmod"))
> + (string-append "INSTALL_MOD_PATH=" #$output)
> + "INSTALL_MOD_STRIP=1"))))))))))
> +
> (define-public zfs-auto-snapshot
> (package
> (name "zfs-auto-snapshot")
>
> base-commit: b7c94d528875415ea7ec6225d88a6b3d55fa2e14
signature.asc
Description: PGP signature
- [bug#71482] [PATCH v2] gnu: zfs: Split the kernel module out of the base package.,
Zheng Junjie <=