From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:470:142:3::10]:48707) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ihsSW-0006Yh-Jq for guix-patches@gnu.org; Thu, 19 Dec 2019 04:51:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ihsSU-000282-Tb for guix-patches@gnu.org; Thu, 19 Dec 2019 04:51:04 -0500 Received: from debbugs.gnu.org ([209.51.188.43]:38316) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ihsSU-000273-Nw for guix-patches@gnu.org; Thu, 19 Dec 2019 04:51:02 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1ihsSU-0008Nr-Me for guix-patches@gnu.org; Thu, 19 Dec 2019 04:51:02 -0500 Subject: [bug#38669] [PATCH] gnu: Add zfs. Resent-Message-ID: Received: from eggs.gnu.org ([2001:470:142:3::10]:43310) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ihsRz-0006UZ-3r for guix-patches@gnu.org; Thu, 19 Dec 2019 04:50:33 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ihsRx-00087Z-C9 for guix-patches@gnu.org; Thu, 19 Dec 2019 04:50:30 -0500 Received: from flashner.co.il ([178.62.234.194]:55932) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ihsRx-00081h-0q for guix-patches@gnu.org; Thu, 19 Dec 2019 04:50:29 -0500 Received: from localhost (unknown [141.226.13.108]) by flashner.co.il (Postfix) with ESMTPSA id B683C40116 for ; Thu, 19 Dec 2019 09:50:27 +0000 (UTC) Date: Thu, 19 Dec 2019 11:49:56 +0200 From: Efraim Flashner Message-ID: <20191219094956.GG917@E5400> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="kH8JNVvasRCCW1Oz" Content-Disposition: inline List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: 38669@debbugs.gnu.org --kH8JNVvasRCCW1Oz Content-Type: multipart/mixed; boundary="5vjQsMS/9MbKYGLq" Content-Disposition: inline --5vjQsMS/9MbKYGLq Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable I don't actually have a use case for this patch myself but I know there are others who are interested in using ZFS. I found the Nix implementation=C2=B9 to be very helpful when I was working on it. =C2=B9 https://github.com/NixOS/nixpkgs/blob/master/pkgs/os-specific/linux/= zfs/default.nix=C2=AC --=20 Efraim Flashner =D7=90=D7=A4=D7=A8=D7=99=D7=9D = =D7=A4=D7=9C=D7=A9=D7=A0=D7=A8 GPG key =3D A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Confidentiality cannot be guaranteed on emails sent or received unencrypted --5vjQsMS/9MbKYGLq Content-Type: text/plain; charset=utf-8 Content-Disposition: attachment; filename="0001-gnu-Add-zfs.patch" Content-Transfer-Encoding: quoted-printable =46rom b7efd268c040e8a68c7a81a5edfc76f142aefd50 Mon Sep 17 00:00:00 2001 =46rom: Efraim Flashner Date: Thu, 19 Dec 2019 11:47:49 +0200 Subject: [PATCH] gnu: Add zfs. * gnu/packages/file-systems.scm (zfs): New variable. --- gnu/packages/file-systems.scm | 114 ++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm index fd62bf29ed..a820c159da 100644 --- a/gnu/packages/file-systems.scm +++ b/gnu/packages/file-systems.scm @@ -3,6 +3,7 @@ ;;; Copyright =C2=A9 2017 G=C3=A1bor Boskovits ;;; Copyright =C2=A9 2017, 2018 Ricardo Wurmus ;;; Copyright =C2=A9 2018 Leo Famulari +;;; Copyright =C2=A9 2019 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; @@ -26,6 +27,7 @@ #:use-module (guix git-download) #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) + #:use-module (guix build-system linux-module) #:use-module (guix utils) #:use-module (gnu packages) #:use-module (gnu packages acl) @@ -40,7 +42,9 @@ #:use-module (gnu packages docbook) #:use-module (gnu packages flex) #:use-module (gnu packages glib) + #:use-module (gnu packages libffi) #:use-module (gnu packages linux) + #:use-module (gnu packages nfs) #:use-module (gnu packages onc-rpc) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) @@ -322,3 +326,113 @@ to read all files, and it does not support all the co= mpression methods in APFS.") (home-page "https://github.com/sgan81/apfs-fuse") (license license:gpl2+)))) + +(define-public zfs + (package + (name "zfs") + (version "0.8.2") + (outputs '("out" "module" "src")) + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/zfsonlinux/zfs/releases" + "/download/zfs-" version + "/zfs-" version ".tar.gz")) + (sha256 + (base32 + "1f7aig15q3z832pr2n48j3clafic2yk1vvqlh28vpklfghjqwq27")))) + (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 ; Unrecognized with the linux-module-build-sys= tem. + ;; 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"))) + ((" /bin/sh") (string-append " " (which "sh")))) + (invoke "./configure" + "--with-config=3Dall" + (string-append "--prefix=3D" out) + (string-append "--with-dracutdir=3D" out "/lib/drac= ut") + (string-append "--with-udevdir=3D" out "/lib/udev") + (string-append "--with-mounthelperdir=3D" out "/sbi= n") + (string-append "--with-linux=3D" + (assoc-ref inputs "linux-module-buil= der") + "/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"))) + (substitute* "module/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/libzfs_mount.c" + (("/bin/mount") (string-append util-linux "/bin/mount")) + (("/bin/umount") (string-append util-linux "/bin/umount")= )) + (substitute* "lib/libshare/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=3D/bin:/sbin:/usr/bin:/usr/sbin") + (string-append "PATH=3D" + (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")))) + #t)) + (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=3D" out "/etc/= default") + (string-append "DEPMOD=3D" kmod "/bin/depmod") + (string-append "INSTALL_PATH=3D" out) + (string-append "INSTALL_MOD_PATH=3D" moddir) + "INSTALL_MOD_STRIP=3D1") + (install-file "contrib/bash_completion.d/zfs" + (string-append out "/share/bash-completion/co= mpletions")) + (symlink "../share/pkgconfig/" (string-append out "/lib/pkg= config")) + #t)))))) + (native-inputs + `(("attr" ,attr) + ("pkg-config" ,pkg-config))) + (inputs + `(("eudev" ,eudev) + ("libaio" ,libaio) + ("libtirpc" ,libtirpc) + ("nfs-utils" ,nfs-utils) + ("openssl" ,openssl) + ("python" ,python) + ("python-cffi" ,python-cffi) + ("util-linux" ,util-linux) + ("zlib" ,zlib))) + (home-page "https://zfsonlinux.org/") + (synopsis "Native ZFS on Linux") + (description + "ZFS on Linux is an advanced file system and volume manager which was +originally developed for Solaris and is now maintained by the OpenZFS +community.") + (license license:cddl1.0))) --=20 2.24.1 --5vjQsMS/9MbKYGLq-- --kH8JNVvasRCCW1Oz Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAl37R8QACgkQQarn3Mo9 g1Gznw/8DYL1g0/Bsx3C9dbQZ6xpJHYEJgs/DSkIzEKlPPGgbosqITKTfgJgIqVC CQ+NWuDzIal9qu7Xg08HFPDXtjbYlcQvzbLvO+4+gIPJ9AEEeAomvAhykYrRiaBT 3e23zsjbWbl1wQzomvFN+ALGSdWuRfibqnRj912L7h7BPixmmg9EHSHvDUE+lWPJ 3cb6axZe/wuNig+8Mi+AEaRGilUcS9Wh/7VqMTbmoD0WGOLEtaNex3GYrUOqJiaS V8M2ZtKI/c2FEAiTFnfOlsoXI3SmHRk9kcXp/n5GdnWQHYTlKd4YbPcqnv90bYX4 akygkkFaoeh/iVy3AAHR3BhDDuYnvf+m67/+Elcf/DYfNJ1EG0opS+PnQLOUS24b JoOx/+LRzPK6/lvitG/FndGhAjkMpq9Ic5JvCRcm2Au2xofmtaZWrfWGiF7n5da7 pB36jwqMKkQrhAHJSGasjr6FfVbj0uPR/GZ7i8AXBA7V5wnFkp6pG5fCtCWPKUnC Vfqhg1eXkKf98xljA4UvqVsSi5/IgeEIci54MOW+Vx3b+fbmEWs4ic0weFTCY0SM Klecti2CWNGTuqvCAWKoZEtZTxV8xXII9pOXyyo+adLJesSwGn1/piY9MYl4qZN4 YvXs3UQqw6Zxd1kJwUAZFvczDuDeJmOtjaTd4ztxjRLBOM5qRfQ= =Az3+ -----END PGP SIGNATURE----- --kH8JNVvasRCCW1Oz--