diff options
author | Mathieu Othacehe <othacehe@gnu.org> | 2021-09-26 07:27:05 +0000 |
---|---|---|
committer | Mathieu Othacehe <othacehe@gnu.org> | 2021-10-02 10:54:36 +0000 |
commit | b4287446a8cba3a0e1a1a009a321f2209b67652b (patch) | |
tree | 190bada6182e2d1f8ad03ab1b10403bba15b874b | |
parent | fa8b43c8e38acd7ae4159dd0094c6f561a14525c (diff) | |
download | guix-b4287446a8cba3a0e1a1a009a321f2209b67652b.tar.gz guix-b4287446a8cba3a0e1a1a009a321f2209b67652b.zip |
gnu: Add fuse-3.
* gnu/packages/linux.scm (fuse-3): New variable.
-rw-r--r-- | gnu/packages/linux.scm | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index b771f65d92..a919183068 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -3377,6 +3377,66 @@ user-space processes.") (license (list license:lgpl2.1 ;library license:gpl2+)))) ;command-line utilities +(define-public fuse-3 + (package + (inherit fuse) + (name "fuse") + (version "3.10.5") + (source (origin + (method url-fetch) + (uri + (string-append "https://github.com/libfuse/libfuse/releases/" + "download/fuse-" version + "/fuse-" version ".tar.xz")) + (sha256 + (base32 + "0rlnnsiw614qcmgy8xz67044gqc1pbvvf2yxjv44lh27bm487qmj")))) + (build-system meson-build-system) + (arguments + `(#:configure-flags + ,#~(list + (string-append "-Dudevrulesdir=" #$output "/udev/rules.d") + "-Duseroot=false") + #:tests? #f + #:phases + ,#~(modify-phases %standard-phases + (add-after 'unpack 'set-file-names + (lambda* (#:key inputs #:allow-other-keys) + ;; libfuse calls out to mount(8) and umount(8). Make sure + ;; it refers to the right ones. + (substitute* '("lib/mount_util.c") + (("/bin/(u?)mount" _ maybe-u) + (search-input-file inputs + (string-append "bin/" + maybe-u "mount")))) + (substitute* '("util/mount.fuse.c") + (("/bin/sh") + (search-input-file inputs "/bin/sh"))) + + ;; This hack leads libfuse to search for 'fusermount' in + ;; $PATH, where it may find a setuid-root binary, instead of + ;; trying solely $out/sbin/fusermount and failing because + ;; it's not setuid. + (substitute* "lib/meson.build" + (("-DFUSERMOUNT_DIR=[[:graph:]]+") + "-DFUSERMOUNT_DIR=\"/var/empty\"'")))) + (add-after 'unpack 'fix-install + (lambda* (#:key inputs #:allow-other-keys) + (substitute* '("util/meson.build") + (("install_helper.sh") "true")) + (substitute* '("util/meson.build") + (("fuseconf_path = .*") + "fuseconf_path = '/etc/fuse.conf'")))) + (add-before 'configure 'set-paths + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((dummy-init.d + (string-append (getcwd) "/etc/init.d"))) + (setenv "MOUNT_FUSE_PATH" + (string-append #$output "/sbin")) + (setenv "UDEV_RULES_PATH" + (string-append #$output + "/lib/udev/rules.d")))))))))) + (define-public unionfs-fuse (package (name "unionfs-fuse") |