From patchwork Wed May 11 15:43:05 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Brian Cully X-Patchwork-Id: 39207 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 78B9A27BBEA; Wed, 11 May 2022 16:46:32 +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=-1.7 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,PP_MIME_FAKE_ASCII_TEXT,SPF_HELO_PASS, URIBL_BLOCKED autolearn=no 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 8A51D27BBE9 for ; Wed, 11 May 2022 16:46:31 +0100 (BST) Received: from localhost ([::1]:35988 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nooXm-0007XI-NO for patchwork@mira.cbaines.net; Wed, 11 May 2022 11:46:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35028) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nooXK-0007Sq-MC for guix-patches@gnu.org; Wed, 11 May 2022 11:46:02 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:44298) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nooXK-0002FD-Av for guix-patches@gnu.org; Wed, 11 May 2022 11:46:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1nooXK-00054G-9g for guix-patches@gnu.org; Wed, 11 May 2022 11:46:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#55369] [PATCH v2 1/2] gnu: zfs: Use new package style. References: <9c79808be27869958987782313cec824787b651f.1652276252.git.bjc@spork.org> In-Reply-To: <9c79808be27869958987782313cec824787b651f.1652276252.git.bjc@spork.org> Resent-From: Brian Cully Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Wed, 11 May 2022 15:46:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 55369 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 55369@debbugs.gnu.org Cc: Brian Cully Received: via spool by 55369-submit@debbugs.gnu.org id=B55369.165228394319450 (code B ref 55369); Wed, 11 May 2022 15:46:02 +0000 Received: (at 55369) by debbugs.gnu.org; 11 May 2022 15:45:43 +0000 Received: from localhost ([127.0.0.1]:38195 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nooWy-00053X-06 for submit@debbugs.gnu.org; Wed, 11 May 2022 11:45:43 -0400 Received: from coleridge.kublai.com ([166.84.7.167]:53094 helo=mail.spork.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nooWw-00053Q-8e for 55369@debbugs.gnu.org; Wed, 11 May 2022 11:45:39 -0400 Received: from guix.jhoto.kublai.com (unknown [IPv6:2001:470:1f07:1b9:c714:ed8b:7cf4:a700]) by mail.spork.org (Postfix) with ESMTPSA id BC1AC62A4; Wed, 11 May 2022 11:45:37 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=spork.org; s=dkim; t=1652283937; bh=Qx3hZoQh/EiUWoeqRFkst3XXvd9WRgCKjZOGgDKA2NM=; h=From:To:Cc:Subject:Date; b=DxZgO3xcxHIKGYL57s0/lkqgEpveYR/e+dECmkWER2vJtOPeWRxRmN4M7FqxdxNi+ 6RLoEo6gM7Sr9sEMUF9kVlI2rJjU+z/AGw9BoGNrXvzFwFM9SJ4eNfIinS58uLN1T/ uAZuLmQJHnHGFirdTy7RW4oZBIhWMU9Ljw7FC1D8= Date: Wed, 11 May 2022 11:43:05 -0400 Message-Id: X-Mailer: git-send-email 2.36.0 MIME-Version: 1.0 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: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: "Guix-patches" Reply-to: Brian Cully X-ACL-Warn: , Brian Cully via Guix-patches X-Patchwork-Original-From: Brian Cully via Guix-patches via From: Brian Cully X-getmail-retrieved-from-mailbox: Patches From: Brian Cully * gnu/packages/file-systems.scm (zfs): Comment style. [arguments]: Rewrite using gexps. [inputs]: Remove labels. --- This patch replaces ungexp'd package references with (search-input-file …) and puts ‘util-linux’ back in the inputs. As the previous patch referenced ‘util-linux’ directly (rather than s-i-f), it accidentally pulled in the required binaries as a side-effect. gnu/packages/file-systems.scm | 247 +++++++++++++++++----------------- 1 file changed, 127 insertions(+), 120 deletions(-) diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm index e6ec51fe40..f9309ebac2 100644 --- a/gnu/packages/file-systems.scm +++ b/gnu/packages/file-systems.scm @@ -1158,128 +1158,135 @@ (define-public zfs (base32 "1xmcy4f0damf1pkb1sy1339ir1jkky0dwzd8vhwgc1pqjgac0liv")))) (build-system linux-module-build-system) (arguments - `(;; 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 - #:phases - (modify-phases %standard-phases - (add-after 'configure 'really-configure - (lambda* (#:key outputs inputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (substitute* "configure" - (("-/bin/sh") (string-append "-" (which "sh")))) - (invoke "./configure" - "--with-config=all" - (string-append "--prefix=" out) - (string-append "--with-dracutdir=" out "/lib/dracut") - (string-append "--with-udevdir=" out "/lib/udev") - (string-append "--with-mounthelperdir=" out "/sbin") - (string-append "--with-linux=" - (assoc-ref inputs "linux-module-builder") - "/lib/modules/build"))))) - (add-after 'unpack 'patch-source - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) - (src (assoc-ref outputs "src")) - (util-linux (assoc-ref inputs "util-linux")) - (nfs-utils (assoc-ref inputs "nfs-utils")) - (kmod (assoc-ref inputs "kmod-runtime"))) - ;; New feature "compatibility=" in 2.1.0. - ;; This feature looks up in two locations: - ;; /etc/zfs/compatibility.d/ - ;; /usr/share/zfs/compatibility.d/ - ;; The first is intended for system-specific compatibility - ;; sets, while the second is what is installed with the - ;; OpenZFS package, so use the absolute path for the first - ;; (which requires patching in the file) and the store path - ;; for the second (which it gets by default). - (substitute* "include/sys/fs/zfs.h" - (("#define\tZPOOL_SYSCONF_COMPAT_D.*$") - ; Use absolute path. - "#define\tZPOOL_SYSCONF_COMPAT_D\t\"/etc/zfs/compatibility.d\"\n")) - ;; Also update the manual, which uses absolute paths, so that - ;; /usr/share/zfs/compatibility.d/ is referred via the store. - (substitute* '("man/man7/zpoolprops.7" - "man/man7/zpool-features.7") - (("/usr/share/zfs/compatibility.d") - (string-append out "/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. - (("\"/sbin/modprobe\"") - (string-append "\"" kmod "/bin/modprobe" "\"")) - ;; 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* "module/os/linux/zfs/zfs_ctldir.c" - (("/usr/bin/env\", \"umount") - (string-append util-linux "/bin/umount\", \"-n")) - (("/usr/bin/env\", \"mount") - (string-append util-linux "/bin/mount\", \"-n"))) - (substitute* "lib/libzfs/os/linux/libzfs_mount_os.c" - (("/bin/mount") (string-append util-linux "/bin/mount")) - (("/bin/umount") (string-append util-linux "/bin/umount"))) - (substitute* "lib/libshare/os/linux/nfs.c" - (("/usr/sbin/exportfs") - (string-append nfs-utils "/sbin/exportfs"))) - (substitute* "config/zfs-build.m4" - (("\\$sysconfdir/init.d") (string-append out "/etc/init.d"))) - (substitute* '("etc/zfs/Makefile.am" - "cmd/zed/Makefile.am") - (("\\$\\(sysconfdir)") (string-append out "/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 src "/src"))) - (substitute* (find-files "udev/rules.d/" ".rules.in$") - (("/sbin/modprobe") (string-append kmod "/bin/modprobe")))))) - (replace 'build - (lambda _ (invoke "make"))) - (replace 'install - (lambda* (#:key outputs inputs native-inputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (moddir (assoc-ref outputs "module")) - (kmod (assoc-ref (or native-inputs inputs) "kmod"))) - (invoke "make" "install" - (string-append "DEFAULT_INITCONF_DIR=" out "/etc/default") - (string-append "DEPMOD=" kmod "/bin/depmod") - (string-append "INSTALL_PATH=" out) - (string-append "INSTALL_MOD_PATH=" moddir) - "INSTALL_MOD_STRIP=1") - (install-file "contrib/bash_completion.d/zfs" - (string-append out - "/share/bash-completion/completions")))))))) + (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 + #: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=" + (assoc-ref inputs "linux-module-builder") + "/lib/modules/build")))) + (add-after 'unpack 'patch-source + (lambda* (#:key inputs #:allow-other-keys) + ;; New feature "compatibility=" in 2.1.0. + ;; This feature looks up in two locations: + ;; /etc/zfs/compatibility.d/ + ;; /usr/share/zfs/compatibility.d/ + ;; The first is intended for system-specific compatibility + ;; sets, while the second is what is installed with the + ;; OpenZFS package, so use the absolute path for the first + ;; (which requires patching in the file) and the store path + ;; for the second (which it gets by default). + (substitute* "include/sys/fs/zfs.h" + (("#define\tZPOOL_SYSCONF_COMPAT_D.*$") + ;; Use absolute path. + "#define\tZPOOL_SYSCONF_COMPAT_D\t\"/etc/zfs/compatibility.d\"\n")) + ;; Also update the manual, which uses absolute paths, so that + ;; /usr/share/zfs/compatibility.d/ is referred via the store. + (substitute* '("man/man7/zpoolprops.7" + "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. + (("\"/sbin/modprobe\"") + (string-append "\"" + (search-input-file inputs "/bin/modprobe") + "\"")) + ;; 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* "module/os/linux/zfs/zfs_ctldir.c" + (("/usr/bin/env\", \"umount") + (string-append (search-input-file inputs "/bin/umount") + "\", \"-n")) + (("/usr/bin/env\", \"mount") + (string-append (search-input-file inputs "/bin/mount") + "\", \"-n"))) + (substitute* "lib/libzfs/os/linux/libzfs_mount_os.c" + (("/bin/mount") (search-input-file inputs "/bin/mount")) + (("/bin/umount") (search-input-file inputs "/bin/umount"))) + (substitute* "lib/libshare/os/linux/nfs.c" + (("/usr/sbin/exportfs") + (search-input-file inputs "/sbin/exportfs"))) + (substitute* "config/zfs-build.m4" + (("\\$sysconfdir/init.d") + (string-append #$output "/etc/init.d"))) + (substitute* '("etc/zfs/Makefile.am" + "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$") + (("/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")))))))) (native-inputs (list attr kmod pkg-config)) - (inputs - `(("eudev" ,eudev) - ("kmod-runtime" ,kmod) - ("libaio" ,libaio) - ("libtirpc" ,libtirpc) - ("nfs-utils" ,nfs-utils) - ("openssl" ,openssl) - ("python" ,python) - ("python-cffi" ,python-cffi) - ("util-linux" ,util-linux) - ("util-linux:lib" ,util-linux "lib") - ("zlib" ,zlib))) + (inputs (list eudev + kmod + libaio + libtirpc + nfs-utils + openssl + python + python-cffi + util-linux + `(,util-linux "lib") + zlib)) (home-page "https://zfsonlinux.org/") (synopsis "OpenZFS on Linux") (description