diff options
Diffstat (limited to 'binary.nix')
-rw-r--r-- | binary.nix | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/binary.nix b/binary.nix new file mode 100644 index 00000000..e20e5033 --- /dev/null +++ b/binary.nix @@ -0,0 +1,129 @@ +{ lib +, stdenv +, pkg-config +, attr +, libuuid +, libsodium +, keyutils + +, liburcu +, zlib +, libaio +, udev +, zstd +, lz4 + +, python39 +, python39Packages +, docutils +, nixosTests + +, versionString ? "0.1" +, doCheck ? true +, inShell ? false +, debugMode ? inShell + +, testWithValgrind ? true +, valgrind + +, fuseSupport ? false +, fuse3 ? null }: + +assert fuseSupport -> fuse3 != null; +assert testWithValgrind -> valgrind != null; +stdenv.mkDerivation { + pname = "bcachefs-bin"; + + 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"; + + propagatedNativeBuildInputs = [ + # used to find dependencies + ## see ./INSTALL + pkg-config + ]; + + propagatedBuildInputs = [ + # bcachefs explicit dependencies + ## see ./INSTALL + libaio + + # libblkid + keyutils # libkeyutils + lz4 # liblz4 + + libsodium + liburcu + libuuid + zstd # libzstd + zlib # zlib1g + + # unspecified dependencies + attr + udev + ]; + + buildInputs = [ + # 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>" + ]; + + }; +} |