1{ lib, fetchFromGitHub, fetchpatch, buildDunePackage, cmdliner, ppxlib }:
2
3buildDunePackage rec {
4 pname = "bisect_ppx";
5 version = "2.8.1";
6
7 src = fetchFromGitHub {
8 owner = "aantron";
9 repo = "bisect_ppx";
10 rev = version;
11 sha256 = "sha256-pOeeSxzUF1jXQjA71atSZALdgQ2NB9qpKo5iaDnPwhQ=";
12 };
13
14 patches = lib.optionals (lib.versionAtLeast ppxlib.version "0.26.0") [
15 # Ppxlib >= 0.26.0 compatibility
16 # remove when a new version is released
17 (fetchpatch {
18 name = "${pname}-${version}-ppxlib-0.26-compatibility.patch";
19 url = "https://patch-diff.githubusercontent.com/raw/aantron/bisect_ppx/pull/400.patch";
20 sha256 = "sha256-WAn6+d6pMUr79LVugOENuh9s0gbVEcTg0rxXMz1P3ak=";
21 })
22 (fetchpatch {
23 name = "${pname}-${version}-ppxlib-0.28-compatibility.patch";
24 url = "https://github.com/anmonteiro/bisect_ppx/commit/cc442a08e3a2e0e18deb48f3a696076ac0986728.patch";
25 sha256 = "sha256-pPHhmtd81eWhQd4X0gfZNPYT75+EkurwivP7acfJbNc=";
26 })
27 ];
28
29 minimalOCamlVersion = "4.08";
30
31 buildInputs = [
32 cmdliner
33 ppxlib
34 ];
35
36 meta = with lib; {
37 description = "Bisect_ppx is a code coverage tool for OCaml and Reason. It helps you test thoroughly by showing what's not tested.";
38 homepage = "https://github.com/aantron/bisect_ppx";
39 license = licenses.mit;
40 maintainers = with maintainers; [ ];
41 mainProgram = "bisect-ppx-report";
42 };
43}