From patchwork Mon Jun 10 16:45:26 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kaelyn Takata X-Patchwork-Id: 65272 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id A237727BBE9; Mon, 10 Jun 2024 18:11:24 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,FREEMAIL_FROM,MAILING_LIST_MULTI,SPF_HELO_PASS, URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 861FC27BBE2 for ; Mon, 10 Jun 2024 18:11:22 +0100 (BST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sGiXq-0002Pb-Mc; Mon, 10 Jun 2024 13:10:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sGiXe-0002Me-GJ for guix-patches@gnu.org; Mon, 10 Jun 2024 13:10:46 -0400 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1sGiXd-0000XX-O5 for guix-patches@gnu.org; Mon, 10 Jun 2024 13:10:46 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1sGiXu-0006eZ-O0 for guix-patches@gnu.org; Mon, 10 Jun 2024 13:11:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#71482] [PATCH] gnu: zfs: Split the kernel module out of the base package. Resent-From: Kaelyn Takata Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Mon, 10 Jun 2024 17:11:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 71482 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 71482@debbugs.gnu.org Cc: Kaelyn Takata X-Debbugs-Original-To: guix-patches@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.171803943125445 (code B ref -1); Mon, 10 Jun 2024 17:11:02 +0000 Received: (at submit) by debbugs.gnu.org; 10 Jun 2024 17:10:31 +0000 Received: from localhost ([127.0.0.1]:47350 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sGiXO-0006cE-7t for submit@debbugs.gnu.org; Mon, 10 Jun 2024 13:10:31 -0400 Received: from lists.gnu.org ([209.51.188.17]:33972) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sGiOt-00069Y-EF for submit@debbugs.gnu.org; Mon, 10 Jun 2024 13:01:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sGi9O-0007qt-0C for guix-patches@gnu.org; Mon, 10 Jun 2024 12:45:47 -0400 Received: from mail-4322.protonmail.ch ([185.70.43.22]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sGi9J-0002so-Bj for guix-patches@gnu.org; Mon, 10 Jun 2024 12:45:40 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1718037930; x=1718297130; bh=y+4dO3hV+HZTdKPFyr/1I1UtrBwTxjjRylJYYmnqlp8=; h=Date:To:From:Cc:Subject:Message-ID:Feedback-ID:From:To:Cc:Date: Subject:Reply-To:Feedback-ID:Message-ID:BIMI-Selector; b=W3JzGpq4HM0OW9n3ag9shYTrm+20grKxL3WbMwcf4zzz2DEWwkOShrXwIXRydPP6U jfJZ3k+t3E51SWMToDUS+rUoccy79N/QYBrfRh6AhffSMIzvRJ5otNKNF/LMS4d931 ylnbv9rEt3QQLGtXINbkdvmCZkAZuYtcp9KwGkTd+GfDTF43A0/+48LWOd8ihby2Pp D2cbKsZFXt7aImiv9xrEoFfU8k5CQhVMwtOXzGC9aQ6UOortZykBZ3NKqmfbIr2kMG CB7l8JYzNgF/LMMdXli1FJDnkK2q0sPAfVtQ67Hj8RSdw6XtwCu7QvlVmMbQvC1P/J ibeKMWCGwUX6A== Date: Mon, 10 Jun 2024 16:45:26 +0000 Message-ID: <8681cce4ff0cb548ff8bd527a77a5206c6d63e24.1718037851.git.kaelyn.alexi@protonmail.com> Feedback-ID: 34709329:user:proton X-Pm-Message-ID: 488a38d69a0dae78015d2e60b18ceacad3b5b2f8 MIME-Version: 1.0 Received-SPF: pass client-ip=185.70.43.22; envelope-from=kaelyn.alexi@protonmail.com; helo=mail-4322.protonmail.ch X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Kaelyn Takata X-ACL-Warn: , Kaelyn Takata via Guix-patches X-Patchwork-Original-From: Kaelyn Takata via Guix-patches via From: Kaelyn Takata Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches 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 | 124 ++++++++++++++++++++-------------- 1 file changed, 72 insertions(+), 52 deletions(-) base-commit: df5648daa1a5d097a430131bbff353b865b476b6 diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm index fa7da35898..78121c1ec2 100644 --- a/gnu/packages/file-systems.scm +++ b/gnu/packages/file-systems.scm @@ -1444,7 +1444,6 @@ (define-public zfs (package (name "zfs") (version "2.2.4") - (outputs '("out" "module" "src")) (source (origin (method url-fetch) @@ -1453,33 +1452,19 @@ (define-public zfs "/zfs-" version ".tar.gz")) (sha256 (base32 "1h0yqchirzsn2gll1w2gclb13hr8511z67lf85cigm43frgr144p")))) - (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. @@ -1511,14 +1496,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"))) @@ -1548,31 +1525,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 @@ -1592,6 +1560,58 @@ (define-public zfs community.") (license license:cddl1.0))) +(define-public (make-zfs-for-kernel kernel-package) + (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")