From 6b903e210462f7c1e428e0ded7e690d315e1f7a1 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Sun, 23 Jul 2023 02:00:00 +0200 Subject: [PATCH] gnu: fuse@2, fuse@3: Reverse inheritance. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/linux.scm (fuse-2)[inherit]: From fuse. [inputs, supported-systems, home-page, synopsis, description, license]: …move these fields from here… (fuse) [inputs, supported-systems, home-page, synopsis, description, license]: …to here, respectively. [inherit]: Remove field. --- gnu/packages/linux.scm | 171 +++++++++++++++++++++-------------------- 1 file changed, 86 insertions(+), 85 deletions(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index c2ab05ac5d..b2bea201d2 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -3692,27 +3692,100 @@ are blocking others and adjust their priority (using @command{ionice}) or stop or kill them altogether.") (license license:gpl2+))) -(define-public fuse-2 +(define-public fuse (package (name "fuse") - (version "2.9.9") + (version "3.10.5") (source (origin (method url-fetch) - (uri (string-append "https://github.com/libfuse/libfuse/releases/" - "download/fuse-" version - "/fuse-" version ".tar.gz")) + (uri + (string-append "https://github.com/libfuse/libfuse/releases/" + "download/fuse-" version + "/fuse-" version ".tar.xz")) (sha256 (base32 - "1ddlq6kzxilccgbvxjfx80jx6kamgw4sv49phks2zhlcc1frvrnh")) - (patches (search-patches "fuse-overlapping-headers.patch" - "fuse-glibc-2.34.patch")))) - (build-system gnu-build-system) - (native-inputs - (list autoconf automake gettext-minimal libtool)) + "0rlnnsiw614qcmgy8xz67044gqc1pbvvf2yxjv44lh27bm487qmj")))) + (build-system meson-build-system) (inputs (list bash-minimal util-linux)) (arguments - '(#:configure-flags (list (string-append "MOUNT_FUSE_PATH=" + `(#: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")))))))) + (supported-systems (delete "i586-gnu" %supported-systems)) + (home-page "https://github.com/libfuse/libfuse") + (synopsis "Support file systems implemented in user space") + (description + "As a consequence of its monolithic design, file system code for Linux +normally goes into the kernel itself---which is not only a robustness issue, +but also an impediment to system extensibility. FUSE, for \"file systems in +user space\", is a kernel module and user-space library that tries to address +part of this problem by allowing users to run file system implementations as +user-space processes.") + (license (list license:lgpl2.1 ; library + license:gpl2+)))) ; command-line utilities + +(define-public fuse-2 + (package + (inherit fuse) + (name "fuse") + (version "2.9.9") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/libfuse/libfuse/releases/" + "download/fuse-" version + "/fuse-" version ".tar.gz")) + (sha256 + (base32 "1ddlq6kzxilccgbvxjfx80jx6kamgw4sv49phks2zhlcc1frvrnh")) + (patches (search-patches "fuse-overlapping-headers.patch" + "fuse-glibc-2.34.patch")))) + (build-system gnu-build-system) + (native-inputs + (list autoconf automake gettext-minimal libtool)) + (arguments + '(#:tests? #t + #:configure-flags (list (string-append "MOUNT_FUSE_PATH=" (assoc-ref %outputs "out") "/sbin") (string-append "INIT_D_PATH=" @@ -3748,79 +3821,7 @@ or kill them altogether.") ;; it's not setuid. (substitute* "lib/Makefile" (("-DFUSERMOUNT_DIR=[[:graph:]]+") - "-DFUSERMOUNT_DIR=\\\"/var/empty\\\""))))))) - (supported-systems (delete "i586-gnu" %supported-systems)) - (home-page "https://github.com/libfuse/libfuse") - (synopsis "Support file systems implemented in user space") - (description - "As a consequence of its monolithic design, file system code for Linux -normally goes into the kernel itself---which is not only a robustness issue, -but also an impediment to system extensibility. FUSE, for \"file systems in -user space\", is a kernel module and user-space library that tries to address -part of this problem by allowing users to run file system implementations as -user-space processes.") - (license (list license:lgpl2.1 ;library - license:gpl2+)))) ;command-line utilities - -(define-public fuse - (package - (inherit fuse-2) - (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")))))))))) + "-DFUSERMOUNT_DIR=\\\"/var/empty\\\""))))))))) (define-public unionfs-fuse (package