nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 lib,
3 stdenv,
4 python3,
5 zlib,
6 pkg-config,
7 glib,
8 perl,
9 texinfo,
10 libuuid,
11 flex,
12 bison,
13 pixman,
14 meson,
15 fetchFromGitHub,
16 ninja,
17}:
18
19let
20 qemuName = "qemu-5.2.50";
21in
22stdenv.mkDerivation {
23 name = "aflplusplus-${qemuName}";
24
25 src = fetchFromGitHub {
26 owner = "AFLplusplus";
27 repo = "qemuafl";
28 # Use a fixed qemuafl version instead of the one in https://github.com/AFLplusplus/AFLplusplus/blob/v4.31c/qemu_mode/QEMUAFL_VERSION.
29 # See: https://github.com/AFLplusplus/AFLplusplus/issues/2296.
30 rev = "ef1cd9a8cb1522c918faab42805216f9a4054dda";
31 hash = "sha256-tbKDnDoBtFhvtE9nbi9XuHPuFuGezUFngnw4pJyKFgY=";
32 fetchSubmodules = true;
33 };
34
35 nativeBuildInputs = [
36 python3
37 perl
38 pkg-config
39 flex
40 bison
41 meson
42 texinfo
43 ninja
44 ];
45
46 buildInputs = [
47 zlib
48 glib
49 pixman
50 libuuid
51 ];
52
53 enableParallelBuilding = true;
54
55 dontUseMesonConfigure = true; # meson's configurePhase isn't compatible with qemu build
56 preBuild = "cd build";
57 preConfigure = ''
58 # this script isn't marked as executable b/c it's indirectly used by meson. Needed to patch its shebang
59 chmod +x ./scripts/shaderinclude.pl
60 patchShebangs .
61 '';
62
63 configureFlags = [
64 "--target-list=${stdenv.hostPlatform.uname.processor}-linux-user"
65 "--sysconfdir=/etc"
66 "--localstatedir=/var"
67 "--meson=meson"
68 "--disable-system"
69 "--enable-linux-user"
70 "--enable-pie"
71 "--audio-drv-list="
72 "--disable-blobs"
73 "--disable-bochs"
74 "--disable-brlapi"
75 "--disable-bsd-user"
76 "--disable-bzip2"
77 "--disable-cap-ng"
78 "--disable-cloop"
79 "--disable-curl"
80 "--disable-curses"
81 "--disable-dmg"
82 "--disable-fdt"
83 "--disable-gcrypt"
84 "--disable-glusterfs"
85 "--disable-gnutls"
86 "--disable-gtk"
87 "--disable-guest-agent"
88 "--disable-iconv"
89 "--disable-libiscsi"
90 "--disable-libnfs"
91 "--disable-libssh"
92 "--disable-libusb"
93 "--disable-linux-aio"
94 "--disable-live-block-migration"
95 "--disable-lzo"
96 "--disable-nettle"
97 "--disable-numa"
98 "--disable-opengl"
99 "--disable-parallels"
100 "--disable-plugins"
101 "--disable-qcow1"
102 "--disable-qed"
103 "--disable-rbd"
104 "--disable-rdma"
105 "--disable-replication"
106 "--disable-sdl"
107 "--disable-seccomp"
108 "--disable-sheepdog"
109 "--disable-smartcard"
110 "--disable-snappy"
111 "--disable-spice"
112 "--disable-system"
113 "--disable-tools"
114 "--disable-tpm"
115 "--disable-usb-redir"
116 "--disable-vde"
117 "--disable-vdi"
118 "--disable-vhost-crypto"
119 "--disable-vhost-kernel"
120 "--disable-vhost-net"
121 "--disable-vhost-scsi"
122 "--disable-vhost-user"
123 "--disable-vhost-vdpa"
124 "--disable-vhost-vsock"
125 "--disable-virglrenderer"
126 "--disable-virtfs"
127 "--disable-vnc"
128 "--disable-vnc-jpeg"
129 "--disable-vnc-png"
130 "--disable-vnc-sasl"
131 "--disable-vte"
132 "--disable-vvfat"
133 "--disable-xen"
134 "--disable-xen-pci-passthrough"
135 "--disable-xfsctl"
136 "--without-default-devices"
137 ];
138
139 meta = {
140 homepage = "https://github.com/AFLplusplus/qemuafl";
141 description = "Fork of QEMU with AFL++ instrumentation support";
142 license = lib.licenses.gpl2Plus;
143 maintainers = with lib.maintainers; [
144 ris
145 msanft
146 ];
147 platforms = lib.platforms.linux;
148 };
149}