lol
1{ lib, stdenv
2, fetchFromGitHub
3, ncurses
4, python3
5, cunit
6, dpdk
7, libaio
8, libbsd
9, libuuid
10, numactl
11, openssl
12, pkg-config
13, zlib
14, libpcap
15, libnl
16, libelf
17, jansson
18, ensureNewerSourcesForZipFilesHook
19}:
20
21stdenv.mkDerivation rec {
22 pname = "spdk";
23
24 version = "23.09";
25
26 src = fetchFromGitHub {
27 owner = "spdk";
28 repo = "spdk";
29 rev = "v${version}";
30 sha256 = "sha256-P10NDa+MIEY8B3bu34Dq2keyuv2a24XV5Wf+Ah701b8=";
31 fetchSubmodules = true;
32 };
33
34 nativeBuildInputs = [
35 python3
36 python3.pkgs.setuptools
37 pkg-config
38 ensureNewerSourcesForZipFilesHook
39 ];
40
41 buildInputs = [
42 cunit
43 dpdk
44 jansson
45 libaio
46 libbsd
47 libelf
48 libuuid
49 libpcap
50 libnl
51 numactl
52 openssl
53 ncurses
54 zlib
55 ];
56
57 patches = [
58 # https://review.spdk.io/gerrit/c/spdk/spdk/+/20394
59 ./setuptools.patch
60 ];
61
62 postPatch = ''
63 patchShebangs .
64 '';
65
66 enableParallelBuilding = true;
67
68 configureFlags = [
69 "--with-dpdk=${dpdk}"
70 "--pydir=${placeholder "out"}/${python3.sitePackages}"
71 ];
72
73 env.NIX_CFLAGS_COMPILE = "-mssse3"; # Necessary to compile.
74 # otherwise does not find strncpy when compiling
75 env.NIX_LDFLAGS = "-lbsd";
76
77 meta = with lib; {
78 description = "Set of libraries for fast user-mode storage";
79 homepage = "https://spdk.io/";
80 license = licenses.bsd3;
81 platforms = [ "x86_64-linux" ];
82 maintainers = with maintainers; [ orivej ];
83 };
84}