Skip to content

Commit

Permalink
dwarfs: 0.7.5 → 0.9.10.
Browse files Browse the repository at this point in the history
The previous update to 0.9.9 didn't actually update the version because
it forgot to update the hash,
so the old source archive continued to be used:
#312656 (comment)

Because now the new code is actually pulled in, it needs new
dependencies and fixes.

* `PRJ_GIT_DATE` is needed.
  Remove the manual replacement of versions, and use the
  approach that upstream added for nixpkgs:
  #181723 (comment)
  This avoids cases like this, where new versioning fields are added;
  upstream takes care of it for us now.
* Use `finalAttrs` for correct version overriding.
* Fix compile error with `gtest`, see added comments.
* Enable FLAC support
  (and the tests don't pass without it on this version, see
  mhx/dwarfs@21901d7)

(cherry picked from commit 9bb686f)
  • Loading branch information
nh2 authored and veprbl committed Aug 20, 2024
1 parent 79ddfa4 commit d747b5b
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 84 deletions.
68 changes: 42 additions & 26 deletions pkgs/tools/filesystems/dwarfs/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -9,69 +9,70 @@
double-conversion,
fmt,
fuse3,
flac,
glog,
gtest,
howard-hinnant-date,
jemalloc,
libarchive,
libevent,
libunwind,
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
Expand All @@ -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 = "A 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;
};
}
})
58 changes: 0 additions & 58 deletions pkgs/tools/filesystems/dwarfs/version_info.patch

This file was deleted.

0 comments on commit d747b5b

Please sign in to comment.