Hello,
A program I want to use requires `dwarfs`, and the one currently
provided by Guix is many years out of date and appears to not even build
correctly anymore. So I thought I'd try to dive in and fix it, and get
the most recent version while I was at it. I am using the current
package definition in Guix as a base, but there are still errors I don't
know what to do about. During the cmake configure step, this happens:
```[ 11%] Creating directories for 'fmt-populate'
[ 22%] Performing download step (git clone) for 'fmt-populate'
Cloning into 'fmt-src'...
fatal: unable to access 'https://github.com/fmtlib/fmt.git/': Could not
resolve host: github.com
Cloning into 'fmt-src'...
fatal: unable to access 'https://github.com/fmtlib/fmt.git/': Could not
resolve host: github.com
Cloning into 'fmt-src'...
fatal: unable to access 'https://github.com/fmtlib/fmt.git/': Could not
resolve host: github.com
Had to git clone more than once: 3 times.
CMake Error at
fmt-subbuild/fmt-populate-prefix/tmp/fmt-populate-gitclone.cmake:50
(message):
Failed to clone repository: 'https://github.com/fmtlib/fmt.git'
make[2]: *** [CMakeFiles/fmt-populate.dir/build.make:102:
fmt-populate-prefix/src/fmt-populate-stamp/fmt-populate-download] Error
1
make[1]: *** [CMakeFiles/Makefile2:87: CMakeFiles/fmt-populate.dir/all]
Error 2
make: *** [Makefile:91: all] Error 2```
I'm not sure what to make of this. Does anyone else know? Suggestions
for improvements to the modified package definition are also welcome, I
only know what I'm doing some of the time. ;)(use-modules (gnu packages backup)
(gnu packages boost)
(gnu packages check)
(gnu packages compression)
(gnu packages cpp)
(gnu packages digest)
(gnu packages elf)
(gnu packages jemalloc)
(gnu packages libevent)
(gnu packages libunwind)
(gnu packages linux)
(gnu packages maths)
(gnu packages man)
(gnu packages pkg-config)
(gnu packages popt)
(gnu packages pretty-print)
(gnu packages tls)
(gnu packages version-control)
(guix build-system cmake)
(guix download)
(guix gexp)
((guix licenses) #:prefix license:)
(guix packages))
(package
(name "dwarfs")
(version "0.14.1")
(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
"1i990m6radrzdc1ccy9j7kr4vgy30h3sfljmq27myahl5rzz4332"))))
(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
git
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))