unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#41501] [PATCH] Add mergerfs/mergerfs-tools
@ 2020-05-24  8:54 Lars-Dominik Braun
  2020-05-30 12:50 ` Marius Bakke
  0 siblings, 1 reply; 6+ messages in thread
From: Lars-Dominik Braun @ 2020-05-24  8:54 UTC (permalink / raw)
  To: 41501

[-- Attachment #1: Type: text/plain, Size: 508 bytes --]

Hi,

the attached patch series adds mergerfs, an union file system, and
associated tools mergerfs-tools. I’ve been running it for a while now
and it seems to be stable. Unfortunately I’m not able to mount it in the
system configuration via

(file-system
 (device "/storage/disk*")
 (mount-point "/storage/pool")
 (type "mergerfs")
 (flags '('allow_other, 'use_ino, "moveonenospc=true", "category.create=mfs"))
 (check? #f))

because device is a pattern and not an actual file system path.

Cheers,
Lars


[-- Attachment #2: 0002-gnu-Add-mergerfs-tools.patch --]
[-- Type: text/x-diff, Size: 3469 bytes --]

From ac0ff2afbbcc63d9b6b7b448877f54b58e975668 Mon Sep 17 00:00:00 2001
From: Lars-Dominik Braun <lars@6xq.net>
Date: Sun, 24 May 2020 10:48:02 +0200
Subject: [PATCH 2/2] gnu: Add mergerfs-tools.

* gnu/packages/storage.scm (mergerfs-tools): New variable.
---
 gnu/packages/storage.scm | 53 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)

diff --git a/gnu/packages/storage.scm b/gnu/packages/storage.scm
index b8090c7eaa..ee5967aff6 100644
--- a/gnu/packages/storage.scm
+++ b/gnu/packages/storage.scm
@@ -24,6 +24,8 @@
   #:use-module (guix utils)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system copy)
+  #:use-module (guix git-download)
   #:use-module (gnu packages)
   #:use-module (gnu packages admin)
   #:use-module (gnu packages assembly)
@@ -46,6 +48,7 @@
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages rsync)
   #:use-module (gnu packages sphinx)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages web)
@@ -299,3 +302,53 @@ storage protocols (S3, NFS, and others) through the RADOS gateway.")
                license:isc
                ;; imported libfuse code
                license:gpl2 license:lgpl2.0))))
+
+(define-public mergerfs-tools
+  (let ((commit "c926779d87458d103f3b674603bf97801ae2486d")
+        (revision "1"))
+    (package
+      (name "mergerfs-tools")
+      ;; unreleased, no version
+      (version (git-version "0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/trapexit/mergerfs-tools.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "04hhwcib0xv4cf1mkj8zrp2aqpxkncml9iqg4m1mz6a5zhzsk0vm"))))
+      (build-system copy-build-system)
+      (inputs
+       `(("python" ,python)
+         ("python-xattr" ,python-xattr)
+         ("rsync" ,rsync)))
+      (arguments
+       '(#:install-plan
+         '(("src/" "bin/"))
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'patch-paths
+             (lambda* (#:key inputs #:allow-other-keys)
+               (substitute* (find-files "src" "^mergerfs\\.")
+                 (("'rsync'")
+                  (string-append "'" (assoc-ref inputs "rsync") "/bin/rsync'"))
+                 (("'rm'")
+                  (string-append "'" (assoc-ref inputs "coreutils") "/bin/rm'")))
+               (substitute* "src/mergerfs.mktrash"
+                 (("xattr")
+                  (string-append (assoc-ref inputs "python-xattr") "/bin/xattr"))
+                 (("mkdir")
+                  (string-append (assoc-ref inputs "coreutils") "/bin/mkdir")))
+               #t)))))
+      (synopsis "Optional tools to help manage data in a mergerfs pool")
+      (description
+       "Audit permissions and ownership of files and directories, duplicates
+        files & directories across branches in a pool, find and remove
+        duplicate files, balance pool drives, consolidate files in a single
+        mergerfs directory onto a single drive and create FreeDesktop.org Trash
+        specification compatible directories.")
+      (home-page "https://github.com/trapexit/mergerfs-tools")
+      (license license:isc))))
-- 
2.26.2


[-- Attachment #3: 0001-gnu-Add-mergerfs.patch --]
[-- Type: text/x-diff, Size: 3208 bytes --]

From 529a3aa70ab1a3079f2c5ab20fb776e92e2ba1cf Mon Sep 17 00:00:00 2001
From: Lars-Dominik Braun <lars@6xq.net>
Date: Sun, 24 May 2020 09:53:30 +0200
Subject: [PATCH 1/2] gnu: Add mergerfs.

* gnu/packages/storage.scm (mergerfs): New variable.
---
 gnu/packages/storage.scm | 51 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 51 insertions(+)

diff --git a/gnu/packages/storage.scm b/gnu/packages/storage.scm
index 481ffade5c..b8090c7eaa 100644
--- a/gnu/packages/storage.scm
+++ b/gnu/packages/storage.scm
@@ -23,6 +23,7 @@
   #:use-module (guix packages)
   #:use-module (guix utils)
   #:use-module (guix build-system cmake)
+  #:use-module (guix build-system gnu)
   #:use-module (gnu packages)
   #:use-module (gnu packages admin)
   #:use-module (gnu packages assembly)
@@ -248,3 +249,53 @@ storage protocols (S3, NFS, and others) through the RADOS gateway.")
                    license:cc-by-sa3.0           ;documentation
                    license:bsd-3                 ;isa-l,jerasure,++
                    license:expat))))             ;civetweb,java bindings
+
+(define-public mergerfs
+  (package
+    (name "mergerfs")
+    (version "2.29.0")
+    ;; mergerfs bundles a heavily modified copy of libfuse
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/trapexit/mergerfs/releases/download/"
+                           version "/mergerfs-" version ".tar.gz"))
+       (sha256
+        (base32
+         "17gizw4vgbqqjd2ykkfpp276942jb5qclp0lkiwkmq1yjgyjqfmk"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f                      ; no tests exist
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-after 'unpack 'fix-paths
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (setenv "CC" "gcc")
+             ;; These were copied from the package libfuse
+             (substitute* '("libfuse/lib/mount_util.c" "libfuse/util/mount_util.c")
+               (("/bin/(u?)mount" _ maybe-u)
+                (string-append (assoc-ref inputs "util-linux")
+                               "/bin/" maybe-u "mount")))
+             (substitute* '("libfuse/util/mount.mergerfs.c")
+               (("/bin/sh")
+                (which "sh")))
+             ;; The Makefile does not allow overriding PREFIX via make variables
+             (substitute* '("Makefile" "libfuse/Makefile")
+               (("= /usr/local") (string-append "= " (assoc-ref outputs "out")))
+               ;; cannot chown as build user
+               (("chown root:root") "true"))
+             #t)))))
+    (inputs `(("util-linux" ,util-linux)))
+    (home-page "https://github.com/trapexit/mergerfs")
+    (synopsis
+     "Featureful union filesystem")
+    (description
+     "mergerfs is a union filesystem geared towards simplifying storage and
+          management of files across numerous commodity storage devices.  It is
+          similar to mhddfs, unionfs, and aufs.")
+    (license (list
+               ;; mergerfs
+               license:isc
+               ;; imported libfuse code
+               license:gpl2 license:lgpl2.0))))
-- 
2.26.2


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [bug#41501] [PATCH] Add mergerfs/mergerfs-tools
  2020-05-24  8:54 [bug#41501] [PATCH] Add mergerfs/mergerfs-tools Lars-Dominik Braun
@ 2020-05-30 12:50 ` Marius Bakke
  2020-05-31  6:25   ` Lars-Dominik Braun
  0 siblings, 1 reply; 6+ messages in thread
From: Marius Bakke @ 2020-05-30 12:50 UTC (permalink / raw)
  To: Lars-Dominik Braun, 41501

[-- Attachment #1: Type: text/plain, Size: 7815 bytes --]

Lars-Dominik Braun <lars@6xq.net> writes:

> Hi,
>
> the attached patch series adds mergerfs, an union file system, and
> associated tools mergerfs-tools. I’ve been running it for a while now
> and it seems to be stable. Unfortunately I’m not able to mount it in the
> system configuration via
>
> (file-system
>  (device "/storage/disk*")
>  (mount-point "/storage/pool")
>  (type "mergerfs")
>  (flags '('allow_other, 'use_ino, "moveonenospc=true", "category.create=mfs"))
>  (check? #f))
>
> because device is a pattern and not an actual file system path.

Oh, fun.  I suppose we'll have to add support for mergerfs in the system
configuration to deal with it.

> From ac0ff2afbbcc63d9b6b7b448877f54b58e975668 Mon Sep 17 00:00:00 2001
> From: Lars-Dominik Braun <lars@6xq.net>
> Date: Sun, 24 May 2020 10:48:02 +0200
> Subject: [PATCH 2/2] gnu: Add mergerfs-tools.
>
> * gnu/packages/storage.scm (mergerfs-tools): New variable.

I think mergerfs is better suited in file-systems.scm.  Can you rebase
these patches accordingly?

> diff --git a/gnu/packages/storage.scm b/gnu/packages/storage.scm
> index b8090c7eaa..ee5967aff6 100644
> --- a/gnu/packages/storage.scm
> +++ b/gnu/packages/storage.scm
> @@ -24,6 +24,8 @@
>    #:use-module (guix utils)
>    #:use-module (guix build-system cmake)
>    #:use-module (guix build-system gnu)
> +  #:use-module (guix build-system copy)
> +  #:use-module (guix git-download)
>    #:use-module (gnu packages)
>    #:use-module (gnu packages admin)
>    #:use-module (gnu packages assembly)
> @@ -46,6 +48,7 @@
>    #:use-module (gnu packages pkg-config)
>    #:use-module (gnu packages python)
>    #:use-module (gnu packages python-xyz)
> +  #:use-module (gnu packages rsync)
>    #:use-module (gnu packages sphinx)
>    #:use-module (gnu packages tls)
>    #:use-module (gnu packages web)
> @@ -299,3 +302,53 @@ storage protocols (S3, NFS, and others) through the RADOS gateway.")
>                 license:isc
>                 ;; imported libfuse code
>                 license:gpl2 license:lgpl2.0))))
> +
> +(define-public mergerfs-tools
> +  (let ((commit "c926779d87458d103f3b674603bf97801ae2486d")
> +        (revision "1"))
> +    (package
> +      (name "mergerfs-tools")
> +      ;; unreleased, no version

Please use full sentences in code comments, i.e. capitalizations and
full stops.

> +      (version (git-version "0" revision commit))

The convention is to use "0.0" for situations like these, mainly because
it looks funnier.

> +      (source
> +       (origin
> +         (method git-fetch)
> +         (uri (git-reference
> +               (url "https://github.com/trapexit/mergerfs-tools.git")
> +               (commit commit)))
> +         (file-name (git-file-name name version))
> +         (sha256
> +          (base32
> +           "04hhwcib0xv4cf1mkj8zrp2aqpxkncml9iqg4m1mz6a5zhzsk0vm"))))
> +      (build-system copy-build-system)
> +      (inputs
> +       `(("python" ,python)
> +         ("python-xattr" ,python-xattr)
> +         ("rsync" ,rsync)))
> +      (arguments
> +       '(#:install-plan
> +         '(("src/" "bin/"))
> +         #:phases
> +         (modify-phases %standard-phases
> +           (add-after 'unpack 'patch-paths
> +             (lambda* (#:key inputs #:allow-other-keys)
> +               (substitute* (find-files "src" "^mergerfs\\.")
> +                 (("'rsync'")
> +                  (string-append "'" (assoc-ref inputs "rsync") "/bin/rsync'"))
> +                 (("'rm'")
> +                  (string-append "'" (assoc-ref inputs "coreutils") "/bin/rm'")))
> +               (substitute* "src/mergerfs.mktrash"
> +                 (("xattr")
> +                  (string-append (assoc-ref inputs "python-xattr") "/bin/xattr"))
> +                 (("mkdir")
> +                  (string-append (assoc-ref inputs "coreutils") "/bin/mkdir")))
> +               #t)))))
> +      (synopsis "Optional tools to help manage data in a mergerfs pool")

I think we can drop 'optional' from here.

> +      (description
> +       "Audit permissions and ownership of files and directories, duplicates
> +        files & directories across branches in a pool, find and remove
> +        duplicate files, balance pool drives, consolidate files in a single
> +        mergerfs directory onto a single drive and create FreeDesktop.org Trash
> +        specification compatible directories.")

These lines should not be indented apart from the first one.

Also, the description reads somewhat unnatural to me.  Taken literally,
the description makes it sound like this package can do all that without
special support from anything?

It would be good to start along the lines of "mergerfs-tools is a suite
of programs that can ..." and throw in that it needs a mergerfs to
actually work.

> From 529a3aa70ab1a3079f2c5ab20fb776e92e2ba1cf Mon Sep 17 00:00:00 2001
> From: Lars-Dominik Braun <lars@6xq.net>
> Date: Sun, 24 May 2020 09:53:30 +0200
> Subject: [PATCH 1/2] gnu: Add mergerfs.
>
> * gnu/packages/storage.scm (mergerfs): New variable.

Can you move this too to file-systems.scm?

[...]

> +(define-public mergerfs
> +  (package
> +    (name "mergerfs")
> +    (version "2.29.0")
> +    ;; mergerfs bundles a heavily modified copy of libfuse

Full sentences please.  :-)

Maybe even an "XXX" in this case.

> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (string-append "https://github.com/trapexit/mergerfs/releases/download/"
> +                           version "/mergerfs-" version ".tar.gz"))
> +       (sha256
> +        (base32
> +         "17gizw4vgbqqjd2ykkfpp276942jb5qclp0lkiwkmq1yjgyjqfmk"))))
> +    (build-system gnu-build-system)
> +    (arguments
> +     `(#:tests? #f                      ; no tests exist
> +       #:phases
> +       (modify-phases %standard-phases
> +         (delete 'configure)
> +         (add-after 'unpack 'fix-paths
> +           (lambda* (#:key inputs outputs #:allow-other-keys)
> +             (setenv "CC" "gcc")
> +             ;; These were copied from the package libfuse
> +             (substitute* '("libfuse/lib/mount_util.c" "libfuse/util/mount_util.c")
> +               (("/bin/(u?)mount" _ maybe-u)
> +                (string-append (assoc-ref inputs "util-linux")
> +                               "/bin/" maybe-u "mount")))
> +             (substitute* '("libfuse/util/mount.mergerfs.c")
> +               (("/bin/sh")
> +                (which "sh")))
> +             ;; The Makefile does not allow overriding PREFIX via make variables
> +             (substitute* '("Makefile" "libfuse/Makefile")
> +               (("= /usr/local") (string-append "= " (assoc-ref outputs "out")))
> +               ;; cannot chown as build user
> +               (("chown root:root") "true"))
> +             #t)))))
> +    (inputs `(("util-linux" ,util-linux)))
> +    (home-page "https://github.com/trapexit/mergerfs")
> +    (synopsis
> +     "Featureful union filesystem")

This line break is unnecessary.

> +    (description
> +     "mergerfs is a union filesystem geared towards simplifying storage and
> +          management of files across numerous commodity storage devices.  It is
> +          similar to mhddfs, unionfs, and aufs.")

No indentation here.

> +    (license (list
> +               ;; mergerfs
> +               license:isc
> +               ;; imported libfuse code
> +               license:gpl2 license:lgpl2.0))))

These would do well as margin comments, i.e.:

  license:isc                    ;mergerfs
  license:gpl2 license:lgpl2.0   ;imported libfuse code

Can you send updated patches?  TIA!

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [bug#41501] [PATCH] Add mergerfs/mergerfs-tools
  2020-05-30 12:50 ` Marius Bakke
@ 2020-05-31  6:25   ` Lars-Dominik Braun
  2020-06-03 16:04     ` bug#41501: " Ludovic Courtès
  0 siblings, 1 reply; 6+ messages in thread
From: Lars-Dominik Braun @ 2020-05-31  6:25 UTC (permalink / raw)
  To: Marius Bakke; +Cc: 41501

[-- Attachment #1: Type: text/plain, Size: 669 bytes --]

Hi,

> > (file-system
> >  (device "/storage/disk*")
> >  (mount-point "/storage/pool")
> >  (type "mergerfs")
> >  (flags '('allow_other, 'use_ino, "moveonenospc=true", "category.create=mfs"))
> >  (check? #f))
> Oh, fun.  I suppose we'll have to add support for mergerfs in the system
> configuration to deal with it.
maybe a generic

	(device (literal "/storage/disk*"))

would do? I’m sure there are more FUSE filesystems out there which
trigger these checks. And I don’t think adding an exception like the one
for NFS is a good solution long-term.

> Can you send updated patches?  TIA!
All done, see attachment. I hope I did not miss anything.

Cheers,
Lars


[-- Attachment #2: 0002-gnu-Add-mergerfs-tools.patch --]
[-- Type: text/x-diff, Size: 3592 bytes --]

From 7aa69a86f8933c3d833ae3beb53840ded9115978 Mon Sep 17 00:00:00 2001
From: Lars-Dominik Braun <lars@6xq.net>
Date: Sat, 30 May 2020 19:10:55 +0200
Subject: [PATCH 2/2] gnu: Add mergerfs-tools.

* gnu/packages/storage.scm (mergerfs-tools): New variable.
---
 gnu/packages/file-systems.scm | 53 +++++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)

diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm
index 6d605c4922..1b0473d6ec 100644
--- a/gnu/packages/file-systems.scm
+++ b/gnu/packages/file-systems.scm
@@ -27,6 +27,7 @@
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix build-system cmake)
+  #:use-module (guix build-system copy)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system linux-module)
   #:use-module (guix build-system trivial)
@@ -53,7 +54,9 @@
   #:use-module (gnu packages photo)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages readline)
+  #:use-module (gnu packages rsync)
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages valgrind)
@@ -693,3 +696,53 @@ is similar to mhddfs, unionfs, and aufs.")
               license:isc                   ; mergerfs
               license:gpl2 license:lgpl2.0  ; Imported libfuse code.
               ))))
+
+(define-public mergerfs-tools
+  (let ((commit "c926779d87458d103f3b674603bf97801ae2486d")
+        (revision "1"))
+    (package
+      (name "mergerfs-tools")
+      ;; No released version exists.
+      (version (git-version "0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/trapexit/mergerfs-tools.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "04hhwcib0xv4cf1mkj8zrp2aqpxkncml9iqg4m1mz6a5zhzsk0vm"))))
+      (build-system copy-build-system)
+      (inputs
+       `(("python" ,python)
+         ("python-xattr" ,python-xattr)
+         ("rsync" ,rsync)))
+      (arguments
+       '(#:install-plan
+         '(("src/" "bin/"))
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'patch-paths
+             (lambda* (#:key inputs #:allow-other-keys)
+               (substitute* (find-files "src" "^mergerfs\\.")
+                 (("'rsync'")
+                  (string-append "'" (assoc-ref inputs "rsync") "/bin/rsync'"))
+                 (("'rm'")
+                  (string-append "'" (assoc-ref inputs "coreutils") "/bin/rm'")))
+               (substitute* "src/mergerfs.mktrash"
+                 (("xattr")
+                  (string-append (assoc-ref inputs "python-xattr") "/bin/xattr"))
+                 (("mkdir")
+                  (string-append (assoc-ref inputs "coreutils") "/bin/mkdir")))
+               #t)))))
+      (synopsis "Tools to help manage data in a mergerfs pool")
+      (description "mergerfs-tools is a suite of programs that can audit
+permissions and ownership of files and directories on a mergerfs volume,
+duplicates files and directories across branches in its pool, find and remove
+duplicate files, balance pool drives, consolidate files in a single mergerfs
+directory onto a single drive and create FreeDesktop.org Trash specification
+compatible directories.")
+      (home-page "https://github.com/trapexit/mergerfs-tools")
+      (license license:isc))))
-- 
2.26.2


[-- Attachment #3: 0001-gnu-Add-mergerfs.patch --]
[-- Type: text/x-diff, Size: 2780 bytes --]

From 4b2500e04f956df0c038ba4b71d91f01b2919d1e Mon Sep 17 00:00:00 2001
From: Lars-Dominik Braun <lars@6xq.net>
Date: Sat, 30 May 2020 19:10:30 +0200
Subject: [PATCH 1/2] gnu: Add mergerfs.

* gnu/packages/storage.scm (mergerfs): New variable.
---
 gnu/packages/file-systems.scm | 47 +++++++++++++++++++++++++++++++++++
 1 file changed, 47 insertions(+)

diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm
index 293322c76b..6d605c4922 100644
--- a/gnu/packages/file-systems.scm
+++ b/gnu/packages/file-systems.scm
@@ -646,3 +646,50 @@ APFS.")
 originally developed for Solaris and is now maintained by the OpenZFS
 community.")
     (license license:cddl1.0)))
+
+(define-public mergerfs
+  (package
+    (name "mergerfs")
+    (version "2.29.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/trapexit/mergerfs/releases/download/"
+                           version "/mergerfs-" version ".tar.gz"))
+       (sha256
+        (base32
+         "17gizw4vgbqqjd2ykkfpp276942jb5qclp0lkiwkmq1yjgyjqfmk"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f                      ; No tests exist.
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-after 'unpack 'fix-paths
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (setenv "CC" "gcc")
+             ;; These were copied from the package libfuse.
+             (substitute* '("libfuse/lib/mount_util.c" "libfuse/util/mount_util.c")
+               (("/bin/(u?)mount" _ maybe-u)
+                (string-append (assoc-ref inputs "util-linux")
+                               "/bin/" maybe-u "mount")))
+             (substitute* '("libfuse/util/mount.mergerfs.c")
+               (("/bin/sh")
+                (which "sh")))
+             ;; The Makefile does not allow overriding PREFIX via make variables.
+             (substitute* '("Makefile" "libfuse/Makefile")
+               (("= /usr/local") (string-append "= " (assoc-ref outputs "out")))
+               ;; cannot chown as build user
+               (("chown root:root") "true"))
+             #t)))))
+    ;; mergerfs bundles a heavily modified copy of libfuse.
+    (inputs `(("util-linux" ,util-linux)))
+    (home-page "https://github.com/trapexit/mergerfs")
+    (synopsis "Featureful union filesystem")
+    (description "mergerfs is a union filesystem geared towards simplifying
+storage and management of files across numerous commodity storage devices.  It
+is similar to mhddfs, unionfs, and aufs.")
+    (license (list
+              license:isc                   ; mergerfs
+              license:gpl2 license:lgpl2.0  ; Imported libfuse code.
+              ))))
-- 
2.26.2


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* bug#41501: [PATCH] Add mergerfs/mergerfs-tools
  2020-05-31  6:25   ` Lars-Dominik Braun
@ 2020-06-03 16:04     ` Ludovic Courtès
  2020-06-03 17:13       ` [bug#41501] " Lars-Dominik Braun
  0 siblings, 1 reply; 6+ messages in thread
From: Ludovic Courtès @ 2020-06-03 16:04 UTC (permalink / raw)
  To: Lars-Dominik Braun; +Cc: Marius Bakke, 41501-done

Hi,

Lars-Dominik Braun <lars@6xq.net> skribis:

>>From 7aa69a86f8933c3d833ae3beb53840ded9115978 Mon Sep 17 00:00:00 2001
> From: Lars-Dominik Braun <lars@6xq.net>
> Date: Sat, 30 May 2020 19:10:55 +0200
> Subject: [PATCH 2/2] gnu: Add mergerfs-tools.
>
> * gnu/packages/storage.scm (mergerfs-tools): New variable.

[...]

>>From 4b2500e04f956df0c038ba4b71d91f01b2919d1e Mon Sep 17 00:00:00 2001
> From: Lars-Dominik Braun <lars@6xq.net>
> Date: Sat, 30 May 2020 19:10:30 +0200
> Subject: [PATCH 1/2] gnu: Add mergerfs.
>
> * gnu/packages/storage.scm (mergerfs): New variable.

I think it addresses the issues Marius wrote about, so I went ahead and
applied them.

> +             ;; These were copied from the package libfuse.

[...]

> +    ;; mergerfs bundles a heavily modified copy of libfuse.

This is not great.  Did you try building against vanilla libfuse?

Anyway, thank you!

Ludo’.




^ permalink raw reply	[flat|nested] 6+ messages in thread

* [bug#41501] [PATCH] Add mergerfs/mergerfs-tools
  2020-06-03 16:04     ` bug#41501: " Ludovic Courtès
@ 2020-06-03 17:13       ` Lars-Dominik Braun
  2020-06-04  9:57         ` Ludovic Courtès
  0 siblings, 1 reply; 6+ messages in thread
From: Lars-Dominik Braun @ 2020-06-03 17:13 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: Marius Bakke, 41501-done

Hi Ludo,

> > +    ;; mergerfs bundles a heavily modified copy of libfuse.
> This is not great.  Did you try building against vanilla libfuse?
no, I looked at the git changelog of their libfuse tree and it appeared
to contain substantial changes, otherwise I would’ve unvendored it.
Judging by the documentation[1] the upstream libfuse is not supported.

Lars

[1] https://github.com/trapexit/mergerfs#why-was-libfuse-embedded-into-mergerfs




^ permalink raw reply	[flat|nested] 6+ messages in thread

* [bug#41501] [PATCH] Add mergerfs/mergerfs-tools
  2020-06-03 17:13       ` [bug#41501] " Lars-Dominik Braun
@ 2020-06-04  9:57         ` Ludovic Courtès
  0 siblings, 0 replies; 6+ messages in thread
From: Ludovic Courtès @ 2020-06-04  9:57 UTC (permalink / raw)
  To: Lars-Dominik Braun; +Cc: Marius Bakke, 41501-done

Hi,

Lars-Dominik Braun <lars@6xq.net> skribis:

>> > +    ;; mergerfs bundles a heavily modified copy of libfuse.
>> This is not great.  Did you try building against vanilla libfuse?
> no, I looked at the git changelog of their libfuse tree and it appeared
> to contain substantial changes, otherwise I would’ve unvendored it.
> Judging by the documentation[1] the upstream libfuse is not supported.

I see.

> [1] https://github.com/trapexit/mergerfs#why-was-libfuse-embedded-into-mergerfs

I don’t buy their arguments :-), but from the Guix viewpoint, we’ve done
our best.

Thanks for explaining!

Ludo’.




^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2020-06-04  9:58 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-24  8:54 [bug#41501] [PATCH] Add mergerfs/mergerfs-tools Lars-Dominik Braun
2020-05-30 12:50 ` Marius Bakke
2020-05-31  6:25   ` Lars-Dominik Braun
2020-06-03 16:04     ` bug#41501: " Ludovic Courtès
2020-06-03 17:13       ` [bug#41501] " Lars-Dominik Braun
2020-06-04  9:57         ` Ludovic Courtès

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).