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))

Reply via email to