diff options
author | Niklas Hambüchen <mail@nh2.me> | 2024-06-23 15:34:04 +0000 |
---|---|---|
committer | Niklas Hambüchen <mail@nh2.me> | 2024-06-23 23:59:19 +0000 |
commit | 9bb686f064217ee326ada56ffe1f6c833c881f8d (patch) | |
tree | fc0c2971eb22bf71a848f8c2368aff03ca57d8e7 | |
parent | 6c0819491ac27bee7c6654a57c879cc4373f3045 (diff) |
dwarfs: 0.7.5 → 0.9.10.
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: https://github.com/NixOS/nixpkgs/pull/312656#discussion_r1650100776 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: https://github.com/NixOS/nixpkgs/pull/181723#discussion_r1650109217 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 https://github.com/mhx/dwarfs/commit/21901d7c2d57d87b6eca6588d4d2cbabff878512)
-rw-r--r-- | pkgs/tools/filesystems/dwarfs/default.nix | 68 | ||||
-rw-r--r-- | pkgs/tools/filesystems/dwarfs/version_info.patch | 58 |
2 files changed, 42 insertions, 84 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; }; -} +}) diff --git a/pkgs/tools/filesystems/dwarfs/version_info.patch b/pkgs/tools/filesystems/dwarfs/version_info.patch deleted file mode 100644 index 8d62bd8d22957..0000000000000 --- a/pkgs/tools/filesystems/dwarfs/version_info.patch +++ /dev/null @@ -1,58 +0,0 @@ -diff --git a/cmake/package_version.cmake b/cmake/package_version.cmake -new file mode 100644 -index 0000000..d4fdb9c ---- /dev/null -+++ b/cmake/package_version.cmake -@@ -0,0 +1,12 @@ -+# autogenerated code, do not modify -+ -+set(PRJ_GIT_REV "v@versionFull@") -+set(PRJ_GIT_DESC "v@versionFull@") -+set(PRJ_GIT_BRANCH "HEAD") -+set(PRJ_GIT_ID "v@versionFull@") -+set(PRJ_GIT_RELEASE_TAG "v@versionFull@") -+set(PRJ_VERSION_FULL "@versionFull@") -+set(PRJ_VERSION_SHORT "@versionFull@") -+set(PRJ_VERSION_MAJOR "@versionMajor@") -+set(PRJ_VERSION_MINOR "@versionMinor@") -+set(PRJ_VERSION_PATCH "@versionPatch@") -diff --git a/include/dwarfs/version.h b/include/dwarfs/version.h -new file mode 100644 -index 0000000..54cf86a ---- /dev/null -+++ b/include/dwarfs/version.h -@@ -0,0 +1,16 @@ -+// autogenerated code, do not modify -+ -+#pragma once -+ -+#define PRJ_VERSION_MAJOR @versionMajor@ -+#define PRJ_VERSION_MINOR @versionMinor@ -+#define PRJ_VERSION_PATCH @versionPatch@ -+ -+namespace dwarfs { -+ -+extern char const* PRJ_GIT_REV; -+extern char const* PRJ_GIT_DESC; -+extern char const* PRJ_GIT_BRANCH; -+extern char const* PRJ_GIT_ID; -+ -+} // namespace dwarfs -diff --git a/src/dwarfs/version.cpp b/src/dwarfs/version.cpp -new file mode 100644 -index 0000000..5759120 ---- /dev/null -+++ b/src/dwarfs/version.cpp -@@ -0,0 +1,12 @@ -+// autogenerated code, do not modify -+ -+#include "dwarfs/version.h" -+ -+namespace dwarfs { -+ -+char const* PRJ_GIT_REV = "@versionFull@"; -+char const* PRJ_GIT_DESC = "v@versionFull@"; -+char const* PRJ_GIT_BRANCH = "HEAD"; -+char const* PRJ_GIT_ID = "v@versionFull@"; -+ -+} // namespace dwarfs |