forked from koverstreet/bcachefs-tools
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathdefault.nix
128 lines (103 loc) · 2.44 KB
/
default.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
{ 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 <[email protected]>"
];
};
}