aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathieu Othacehe <othacehe@gnu.org>2021-09-26 07:27:05 +0000
committerMathieu Othacehe <othacehe@gnu.org>2021-10-02 10:54:36 +0000
commitb4287446a8cba3a0e1a1a009a321f2209b67652b (patch)
tree190bada6182e2d1f8ad03ab1b10403bba15b874b
parentfa8b43c8e38acd7ae4159dd0094c6f561a14525c (diff)
downloadguix-b4287446a8cba3a0e1a1a009a321f2209b67652b.tar.gz
guix-b4287446a8cba3a0e1a1a009a321f2209b67652b.zip
gnu: Add fuse-3.
* gnu/packages/linux.scm (fuse-3): New variable.
-rw-r--r--gnu/packages/linux.scm60
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")