about summary refs log tree commit diff
path: root/pkgs/tools/filesystems/dwarfs/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/tools/filesystems/dwarfs/default.nix')
-rw-r--r--pkgs/tools/filesystems/dwarfs/default.nix68
1 files changed, 42 insertions, 26 deletions
diff --git a/pkgs/tools/filesystems/dwarfs/default.nix b/pkgs/tools/filesystems/dwarfs/default.nix
index 0ee916b2d53f8..719ccd1e23d21 100644
--- a/pkgs/tools/filesystems/dwarfs/default.nix
+++ b/pkgs/tools/filesystems/dwarfs/default.nix
@@ -9,8 +9,10 @@
   double-conversion,
   fmt,
   fuse3,
+  flac,
   glog,
   gtest,
+  howard-hinnant-date,
   jemalloc,
   libarchive,
   libevent,
@@ -18,60 +20,59 @@
   lz4,
   openssl,
   pkg-config,
+  python3,
+  range-v3,
   ronn,
   xxHash,
   utf8cpp,
   zstd,
 }:
-let
+stdenv.mkDerivation (finalAttrs: {
   pname = "dwarfs";
-  version = "0.9.9";
-in
-stdenv.mkDerivation {
-  inherit pname version;
+  version = "0.9.10";
   src = fetchFromGitHub {
     owner = "mhx";
     repo = "dwarfs";
-    rev = "refs/tags/v${version}";
+    rev = "refs/tags/v${finalAttrs.version}";
     fetchSubmodules = true;
-    hash = "sha256-Zzm2SaFR31TBBMDfgJulVbqsJBh1He2wBFzHRC/c5vg=";
+    hash = "sha256-uyYNs+fDV5BfQwfX9Wi3BwiKjSDQHAKRJ1+UvS/fHoE=";
   };
 
-  patches = [
-    (
-      with lib.versions;
-      substituteAll {
-        src = ./version_info.patch;
+  cmakeFlags = [
+    "-DNIXPKGS_DWARFS_VERSION_OVERRIDE=v${finalAttrs.version}" # see https://github.com/mhx/dwarfs/issues/155
 
-        versionFull = version; # displayed as version number (with v prepended)
-        versionMajor = major version;
-        versionMinor = minor version;
-        versionPatch = patch version;
-      }
-    )
-  ];
+    # Needs to be set so `dwarfs` does not try to download `gtest`; it is not
+    # a submodule, see: https://github.com/mhx/dwarfs/issues/188#issuecomment-1907657083
+    "-DPREFER_SYSTEM_GTEST=ON"
 
-  cmakeFlags = [
+    # These should no longer be necessary with a version > 0.9.10:
+    # * https://github.com/mhx/dwarfs/commit/593b22a8a90eb66c0898ae06f097f32f4bf3dfd4
+    # * https://github.com/mhx/dwarfs/commit/6e9608b2b01be13e41e6b728aae537c14c00ad82
+    # * https://github.com/mhx/dwarfs/commit/ce4bee1ad63c666da57d2cdae9fd65214d8dab7f
+    "-DPREFER_SYSTEM_LIBFMT=ON"
     "-DPREFER_SYSTEM_ZSTD=ON"
     "-DPREFER_SYSTEM_XXHASH=ON"
-    "-DPREFER_SYSTEM_GTEST=ON"
-    "-DPREFER_SYSTEM_LIBFMT=ON"
 
     # may be added under an option in the future
     # "-DWITH_LEGACY_FUSE=ON"
+
     "-DWITH_TESTS=ON"
   ];
 
   nativeBuildInputs = [
     bison
     cmake
+    howard-hinnant-date # uses only the header-only parts
     pkg-config
+    range-v3 # header-only library
     ronn
+    (python3.withPackages (ps: [ ps.mistletoe ])) # for man pages
   ];
 
   buildInputs = [
     # dwarfs
     boost
+    flac # optional; allows automatic audio compression
     fmt
     fuse3
     jemalloc
@@ -90,17 +91,32 @@ stdenv.mkDerivation {
   ];
 
   doCheck = true;
-  nativeCheckInputs = [ gtest ];
+  nativeCheckInputs = [
+    # https://github.com/mhx/dwarfs/issues/188#issuecomment-1907574427
+    # `dwarfs` sets C++20 as the minimum, see
+    #     https://github.com/mhx/dwarfs/blob/2cb5542a5d4274225c5933370adcf00035f6c974/CMakeLists.txt#L129
+    # Thus the `gtest` headers, when included,
+    # refer to symbols that only exist in `.so` files compiled with that version.
+    (gtest.override { cxx_standard = "20"; })
+  ];
   # these fail inside of the sandbox due to missing access
   # to the FUSE device
-  GTEST_FILTER = "-dwarfs/tools_test.end_to_end/*:dwarfs/tools_test.mutating_ops/*";
+  GTEST_FILTER =
+    let
+      disabledTests = [
+        "dwarfs/tools_test.end_to_end/*"
+        "dwarfs/tools_test.mutating_and_error_ops/*"
+        "dwarfs/tools_test.categorize/*"
+      ];
+    in
+      "-${lib.concatStringsSep ":" disabledTests}";
 
   meta = {
     description = "Fast high compression read-only file system";
     homepage = "https://github.com/mhx/dwarfs";
-    changelog = "https://github.com/mhx/dwarfs/blob/v${version}/CHANGES.md";
+    changelog = "https://github.com/mhx/dwarfs/blob/v${finalAttrs.version}/CHANGES.md";
     license = lib.licenses.gpl3Plus;
     maintainers = [ lib.maintainers.luftmensch-luftmensch ];
     platforms = lib.platforms.linux;
   };
-}
+})