bcachefs-tools/default.nix
Daniel B. Hill 962390c0b2 Simplify Nix(OS) development
Signed-off-by: Daniel B. Hill <daniel@gluo.nz>
2022-05-30 22:26:27 -04:00

129 lines
2.4 KiB
Nix

{ lib
, doCheck ? true
, stdenv
, pkg-config
, attr
, libuuid
, libsodium
, keyutils
, liburcu
, zlib
, libaio
, udev
, zstd
, lz4
, python39
, python39Packages
, docutils
, nixosTests
, versionString ? "0.1"
, 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 = (lib.cleanSource (builtins.path { name = "bcachefs-tools-src"; path = ./. ;} ));
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 = doCheck; # 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;
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>"
];
};
}