]> git.sesse.net Git - bcachefs-tools-debian/blob - rust-src/bch_bindgen/default.nix
New upstream snapshot
[bcachefs-tools-debian] / rust-src / bch_bindgen / default.nix
1 { lib
2 , stdenv
3 , rustPlatform
4 , llvmPackages
5 , bcachefs
6 , pkg-config
7
8 , udev
9 , liburcu
10 , zstd
11 , keyutils
12 , libaio
13                 
14 , lz4 # liblz4
15 , libsodium
16 , libuuid
17 , zlib # zlib1g
18 , libscrypt
19
20 , rustfmt
21
22 , glibc
23 , ...
24 }: let 
25         include = {
26                 glibc = "${glibc.dev}/include";
27                 clang = let libc = llvmPackages.libclang; in
28                         "${libc.lib}/lib/clang/${libc.version}/include";
29                 urcu = "${liburcu}/include";
30                 zstd = "${zstd.dev}/include";
31         };
32         cargo = lib.trivial.importTOML ./Cargo.toml;
33 in rustPlatform.buildRustPackage {
34         pname = cargo.package.name;
35         version = cargo.package.version;
36         
37         src = builtins.path { path = ./.; name = "bch_bindgen"; };
38
39         cargoLock = { lockFile = ./Cargo.lock; };
40
41         nativeBuildInputs = [ rustfmt pkg-config ];
42         buildInputs = [
43                 
44                 # libaio
45                 keyutils # libkeyutils
46                 lz4 # liblz4
47                 libsodium
48                 liburcu
49                 libuuid
50                 zstd # libzstd
51                 zlib # zlib1g
52                 udev
53                 libscrypt
54                 libaio
55         ];
56         
57         LIBBCACHEFS_LIB ="${bcachefs.tools}/lib";
58         LIBBCACHEFS_INCLUDE = bcachefs.tools.src;
59         LIBCLANG_PATH = "${llvmPackages.libclang.lib}/lib";
60         BINDGEN_EXTRA_CLANG_ARGS = lib.replaceStrings ["\n" "\t"] [" " ""] ''
61                 -std=gnu99
62                 -I${include.glibc}
63                 -I${include.clang}
64                 -I${include.urcu}
65                 -I${include.zstd}
66         '';
67
68         postPatch = ''
69                 cp ${./Cargo.lock} Cargo.lock
70         '';
71         
72
73         doCheck = true;
74         
75         # NIX_DEBUG = 4;
76 }