gnu: Add dwarfs.
* gnu/packages/file-systems.scm (dwarfs): New variable.
parent
04ade01beb
commit
3a1b18aa45
|
@ -46,26 +46,36 @@
|
||||||
#:use-module (gnu packages admin)
|
#:use-module (gnu packages admin)
|
||||||
#:use-module (gnu packages attr)
|
#:use-module (gnu packages attr)
|
||||||
#:use-module (gnu packages autotools)
|
#:use-module (gnu packages autotools)
|
||||||
|
#:use-module (gnu packages backup)
|
||||||
#:use-module (gnu packages base)
|
#:use-module (gnu packages base)
|
||||||
#:use-module (gnu packages bash)
|
#:use-module (gnu packages bash)
|
||||||
#:use-module (gnu packages bison)
|
#:use-module (gnu packages bison)
|
||||||
|
#:use-module (gnu packages boost)
|
||||||
#:use-module (gnu packages check)
|
#:use-module (gnu packages check)
|
||||||
#:use-module (gnu packages compression)
|
#:use-module (gnu packages compression)
|
||||||
|
#:use-module (gnu packages cpp)
|
||||||
#:use-module (gnu packages crypto)
|
#:use-module (gnu packages crypto)
|
||||||
#:use-module (gnu packages curl)
|
#:use-module (gnu packages curl)
|
||||||
#:use-module (gnu packages cyrus-sasl)
|
#:use-module (gnu packages cyrus-sasl)
|
||||||
#:use-module (gnu packages datastructures)
|
#:use-module (gnu packages datastructures)
|
||||||
|
#:use-module (gnu packages digest)
|
||||||
#:use-module (gnu packages documentation)
|
#:use-module (gnu packages documentation)
|
||||||
#:use-module (gnu packages docbook)
|
#:use-module (gnu packages docbook)
|
||||||
|
#:use-module (gnu packages elf)
|
||||||
#:use-module (gnu packages flex)
|
#:use-module (gnu packages flex)
|
||||||
#:use-module (gnu packages gawk)
|
#:use-module (gnu packages gawk)
|
||||||
#:use-module (gnu packages glib)
|
#:use-module (gnu packages glib)
|
||||||
#:use-module (gnu packages gnupg)
|
#:use-module (gnu packages gnupg)
|
||||||
#:use-module (gnu packages golang)
|
#:use-module (gnu packages golang)
|
||||||
#:use-module (gnu packages guile)
|
#:use-module (gnu packages guile)
|
||||||
|
#:use-module (gnu packages jemalloc)
|
||||||
#:use-module (gnu packages kerberos)
|
#:use-module (gnu packages kerberos)
|
||||||
|
#:use-module (gnu packages libevent)
|
||||||
#:use-module (gnu packages libffi)
|
#:use-module (gnu packages libffi)
|
||||||
|
#:use-module (gnu packages libunwind)
|
||||||
#:use-module (gnu packages linux)
|
#:use-module (gnu packages linux)
|
||||||
|
#:use-module (gnu packages maths)
|
||||||
|
#:use-module (gnu packages man)
|
||||||
#:use-module (gnu packages nfs)
|
#:use-module (gnu packages nfs)
|
||||||
#:use-module (gnu packages onc-rpc)
|
#:use-module (gnu packages onc-rpc)
|
||||||
#:use-module (gnu packages openldap)
|
#:use-module (gnu packages openldap)
|
||||||
|
@ -73,6 +83,8 @@
|
||||||
#:use-module (gnu packages perl)
|
#:use-module (gnu packages perl)
|
||||||
#:use-module (gnu packages photo)
|
#:use-module (gnu packages photo)
|
||||||
#:use-module (gnu packages pkg-config)
|
#:use-module (gnu packages pkg-config)
|
||||||
|
#:use-module (gnu packages popt)
|
||||||
|
#:use-module (gnu packages pretty-print)
|
||||||
#:use-module (gnu packages python)
|
#:use-module (gnu packages python)
|
||||||
#:use-module (gnu packages python-crypto)
|
#:use-module (gnu packages python-crypto)
|
||||||
#:use-module (gnu packages python-web)
|
#:use-module (gnu packages python-web)
|
||||||
|
@ -1863,3 +1875,90 @@ for large btrfs filesystems. It is an offline dedupe combined with an
|
||||||
incremental data scan capability to minimize time data spends on disk from
|
incremental data scan capability to minimize time data spends on disk from
|
||||||
write to dedupe.")
|
write to dedupe.")
|
||||||
(license license:gpl3+)))
|
(license license:gpl3+)))
|
||||||
|
|
||||||
|
(define-public dwarfs
|
||||||
|
(package
|
||||||
|
(name "dwarfs")
|
||||||
|
(version "0.6.2")
|
||||||
|
(source (origin
|
||||||
|
(method url-fetch)
|
||||||
|
;; The release archive is needed so that version.h is included.
|
||||||
|
(uri (string-append "https://github.com/mhx/dwarfs/releases/download/v"
|
||||||
|
version "/dwarfs-" version ".tar.xz"))
|
||||||
|
(sha256
|
||||||
|
(base32
|
||||||
|
"1kncxf85gsj3anck8ccjmxn2azp5ifqbgkiky2kharmvphkbmfcv"))
|
||||||
|
(snippet
|
||||||
|
#~(begin
|
||||||
|
(use-modules (guix build utils))
|
||||||
|
;; Prefer system libraries instead of submodules.
|
||||||
|
;; TODO: Package fbthrift.
|
||||||
|
;; TODO: Can we use Guix own folly? There is no CMake option for it.
|
||||||
|
;; TODO: Package parallel-hashmap.
|
||||||
|
(for-each delete-file-recursively
|
||||||
|
'(;; "fbthrift"
|
||||||
|
;; "folly"
|
||||||
|
;; "parallel-hashmap"
|
||||||
|
"xxHash"
|
||||||
|
"zstd"))))))
|
||||||
|
(build-system cmake-build-system)
|
||||||
|
(arguments
|
||||||
|
'(#:tests? #f ; TODO: 1 test fails because 'modprobe fuse' needs privileged access.
|
||||||
|
#:configure-flags
|
||||||
|
(list "-DPREFER_SYSTEM_ZSTD=ON"
|
||||||
|
"-DPREFER_SYSTEM_XXHASH=ON"
|
||||||
|
"-DPREFER_SYSTEM_GTEST=ON"
|
||||||
|
"-DWITH_TESTS=ON"
|
||||||
|
;; Disable man pages since ronn fails to run without hpricot.
|
||||||
|
"-DWITH_MAN_PAGES=OFF")))
|
||||||
|
(native-inputs
|
||||||
|
(list
|
||||||
|
;; FIXME: Building with ronn fails because hpricot is missing from Guix.
|
||||||
|
folly googletest libdwarf libevent pkg-config))
|
||||||
|
(inputs
|
||||||
|
(list
|
||||||
|
boost
|
||||||
|
double-conversion
|
||||||
|
fmt
|
||||||
|
fuse-3
|
||||||
|
gflags
|
||||||
|
jemalloc
|
||||||
|
libarchive
|
||||||
|
libunwind
|
||||||
|
lz4
|
||||||
|
openssl
|
||||||
|
xxhash
|
||||||
|
xz
|
||||||
|
`(,zstd "lib")))
|
||||||
|
(home-page "https://github.com/mhx/dwarfs")
|
||||||
|
(synopsis "Fast high compression read-only file system")
|
||||||
|
(description "DwarFS is a read-only file system with a focus on achieving
|
||||||
|
very high compression ratios in particular for very redundant data.
|
||||||
|
|
||||||
|
DwarFS also doesn't compromise on speed and for some cases it is on par with
|
||||||
|
or performs better than SquashFS. For the primary use case, DwarFS
|
||||||
|
compression is an order of magnitude better than SquashFS compression, it's 6
|
||||||
|
times faster to build the file system, it's typically faster to access files
|
||||||
|
on DwarFS and it uses less CPU resources.
|
||||||
|
|
||||||
|
Distinct features of DwarFS are:
|
||||||
|
|
||||||
|
@itemize
|
||||||
|
|
||||||
|
@item Clustering of files by similarity using a similarity hash function. This
|
||||||
|
makes it easier to exploit the redundancy across file boundaries.
|
||||||
|
|
||||||
|
@item Segmentation analysis across file system blocks in order to reduce the
|
||||||
|
size of the uncompressed file system. This saves memory when using the
|
||||||
|
compressed file system and thus potentially allows for higher cache hit rates
|
||||||
|
as more data can be kept in the cache.
|
||||||
|
|
||||||
|
@item Highly multi-threaded implementation. Both the file system creation tool
|
||||||
|
as well as the FUSE driver are able to make good use of the many cores of your
|
||||||
|
system.
|
||||||
|
|
||||||
|
@item Optional experimental Python scripting support to provide custom
|
||||||
|
filtering and ordering functionality.
|
||||||
|
|
||||||
|
@end itemize\n")
|
||||||
|
(license license:gpl3)))
|
||||||
|
|
Reference in New Issue