1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5 ocaml,
6 findlib,
7 opaline,
8}:
9
10stdenv.mkDerivation rec {
11 pname = "afl-persistent";
12 version = "1.3";
13 name = "ocaml${ocaml.version}-${pname}-${version}";
14
15 src = fetchFromGitHub {
16 owner = "stedolan";
17 repo = "ocaml-${pname}";
18 rev = "v${version}";
19 sha256 = "06yyds2vcwlfr2nd3gvyrazlijjcrd1abnvkfpkaadgwdw3qam1i";
20 };
21
22 strictDeps = true;
23
24 nativeBuildInputs = [
25 ocaml
26 findlib
27 ];
28
29 # don't run tests in buildPhase
30 # don't overwrite test binary
31 postPatch = ''
32 sed -i 's/ && \.\/test$//' build.sh
33 sed -i '/^ocamlopt.*test.ml -o test$/ s/$/2/' build.sh
34 patchShebangs build.sh
35 '';
36
37 buildPhase = "./build.sh";
38 installPhase = ''
39 ${opaline}/bin/opaline -prefix $out -libdir $out/lib/ocaml/${ocaml.version}/site-lib/ ${pname}.install
40 '';
41
42 doCheck = true;
43 checkPhase = "./_build/test && ./_build/test2";
44
45 meta = with lib; {
46 homepage = "https://github.com/stedolan/ocaml-afl-persistent";
47 description = "Persistent-mode afl-fuzz for ocaml";
48 license = licenses.mit;
49 maintainers = [ maintainers.sternenseemann ];
50 };
51}