]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - default.nix
Update manpage to follow --label and --compression updates
[bcachefs-tools-debian] / default.nix
index 82d4a8528deb474741955c07b5593c04bd8cb6cb..48f2aa93bacabffcd38f70ad59fda0ce64391157 100644 (file)
-{ nixpkgs ? (import ./nix/nixpkgs.nix)
-}:
-
-with nixpkgs;
-
-stdenv.mkDerivation rec {
-  name = "bcachefs-tools-${version}";
-  version = "git";
-
-  src = lib.cleanSource ./.; # NOTE: ignore .git, otherwise things get weird!
-
-  nativeBuildInputs = [ git pkgconfig ];
-  buildInputs =
-    [ liburcu libuuid libaio zlib attr keyutils
-      libsodium libscrypt
-    ];
-
-  patchPhase = ''
-    # ensure the mkfs and fsck scripts, which are just wrappers around
-    # 'bcachefs', are patched to refer to the right location inside the
-    # nix store. (you wouldn't expect built tools to call random outside
-    # utilities, in general, but the exact tools they were built with.)
-    #
-    # TODO FIXME: it would be better to fix this in the 'install' target,
-    # however, so this works with any bog-standard installation
-
-    substituteInPlace fsck.bcachefs --replace bcachefs $out/bin/bcachefs
-    substituteInPlace mkfs.bcachefs --replace bcachefs $out/bin/bcachefs
-  '';
-
-  enableParallelBuilding = true;
-  makeFlags =
-    [ "PREFIX=$(out)"
-    ];
-
-  meta = with stdenv.lib; {
-    description = "Userspace tools for bcachefs";
-    homepage    = http://bcachefs.org;
-    license     = licenses.gpl2;
-    platforms   = platforms.linux;
-    maintainers =
-      [ "Kent Overstreet <kent.overstreet@gmail.com>"
-      ];
-  };
+{ lib
+, filter
+
+, stdenv
+, pkg-config
+, attr
+, libuuid
+, libsodium
+, keyutils
+
+, liburcu
+, zlib
+, libaio
+, udev
+, zstd
+, lz4
+
+, python39
+, python39Packages
+, docutils
+, nixosTests
+
+, lastModified
+, versionString ? lastModified
+
+, inShell ? false
+, debugMode ? inShell
+
+, testWithValgrind ? true
+, valgrind 
+
+, fuseSupport ? false
+, fuse3 ? null }:
+
+assert fuseSupport -> fuse3 != null;
+assert testWithValgrind -> valgrind != null;
+stdenv.mkDerivation {
+       pname = "bcachefs-tools";
+
+       version = "v0.1-flake-${versionString}";
+       VERSION = "v0.1-flake-${versionString}";
+       
+       src = filter.filter {
+               name = "bcachefs-tools";
+               root = ./.;
+               exclude = [
+                       ./rust-src
+                       
+                       ./.git
+                       ./nix
+                       
+                       ./flake.nix
+                       ./flake.lock
+               ];
+       };
+
+       postPatch = "patchShebangs --build doc/macro2rst.py";
+
+       nativeBuildInputs = [
+               # used to find dependencies
+               ## see ./INSTALL
+               pkg-config
+       ];
+       buildInputs = [
+               # bcachefs explicit dependencies
+               ## see ./INSTALL
+               libaio
+               
+               # libblkid
+               keyutils # libkeyutils
+               lz4 # liblz4
+               
+               libsodium
+               liburcu
+               libuuid
+               zstd # libzstd
+               zlib # zlib1g
+               valgrind
+
+               # unspecified dependencies
+               attr
+               udev
+
+               # documentation depenedencies
+               docutils
+               python39Packages.pygments
+       ] ++ (lib.optional fuseSupport fuse3)
+       ++ (lib.optional testWithValgrind valgrind) ;
+
+       makeFlags = [
+               "PREFIX=${placeholder "out"}"
+       ] ++ lib.optional debugMode "EXTRA_CFLAGS=-ggdb";
+
+       installFlags = [
+               "INITRAMFS_DIR=${placeholder "out"}/etc/initramfs-tools"
+       ];
+
+       doCheck = true; # needs bcachefs module loaded on builder
+
+       checkInputs = [
+               python39Packages.pytest
+               python39Packages.pytest-xdist
+       ] ++ lib.optional testWithValgrind valgrind;
+       
+       checkFlags = [ 
+               "BCACHEFS_TEST_USE_VALGRIND=${if testWithValgrind then "yes" else "no"}"
+               # cannot escape spaces within make flags, quotes are stripped
+               "PYTEST_CMD=pytest" # "PYTEST_ARGS='-n4 --version'"
+       ];
+
+       preCheck =
+               ''
+                       makeFlagsArray+=(PYTEST_ARGS="--verbose -n2")
+               '' +
+               lib.optionalString fuseSupport ''
+                       rm tests/test_fuse.py
+               '';
+
+       dontStrip = debugMode == true;
+       passthru = {
+               bcachefs_revision = let 
+                       file = builtins.readFile ./.bcachefs_revision;
+                       removeLineFeeds = str: lib.lists.foldr (lib.strings.removeSuffix) str ["\r" "\n"];
+               in removeLineFeeds file;
+               
+               tests = {
+                       smoke-test = nixosTests.bcachefs;
+               };
+       };
+
+       enableParallelBuilding = true;
+       meta = with lib; {
+               description = "Userspace tools for bcachefs";
+               homepage    = http://bcachefs.org;
+               license     = licenses.gpl2;
+               platforms   = platforms.linux;
+               maintainers =
+                       [ "Kent Overstreet <kent.overstreet@gmail.com>"
+                       ];
+
+       };
 }