]> git.sesse.net Git - bcachefs-tools-debian/commitdiff
update default.nix to use latest dependencies and newer stdenv, as well as be flake...
authorKayla Firestack <dev@kaylafire.me>
Thu, 14 Oct 2021 14:17:23 +0000 (10:17 -0400)
committerKayla Firestack <dev@kaylafire.me>
Mon, 18 Oct 2021 15:30:30 +0000 (11:30 -0400)
default.nix

index f19ff1076ca200cb660cdadc83cd946d481d6799..ae0128211756cff1c40120c3f423f777e37f6a66 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
-    ];
-
-  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
+, libscrypt
+, 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
+               
+               libscrypt
+               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=pytest" # "PYTEST_ARGS='-n4 --version'"
+       ];
+
+       preCheck =
+               ''
+                       makeFlagsArray+=(PYTEST_ARGS="--verbose -n4")
+               '' +
+               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>"
+                       ];
+
+       };
 }