summaryrefslogtreecommitdiffstats
path: root/pkgs/by-name/st/statverif/package.nix
blob: 8aabfaba479872bb4b275c16fbc93e7f1aef5040 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
{
  lib,
  stdenv,
  fetchurl,
  ocaml-ng,
}:

let
  ocaml = ocaml-ng.ocamlPackages_4_14_unsafe_string.ocaml;
in
stdenv.mkDerivation (finalAttrs: {
  pname = "statverif";
  version = "1.86pl4";

  src = fetchurl {
    url = "http://prosecco.gforge.inria.fr/personal/bblanche/proverif/proverif${finalAttrs.version}.tar.gz";
    sha256 = "163vdcixs764jj8xa08w80qm4kcijf7xj911yp8jvz6pi1q5g13i";
  };

  pf-patch = fetchurl {
    url = "http://markryan.eu/research/statverif/files/proverif-${finalAttrs.version}-statverif-2657ab4.patch";
    sha256 = "113jjhi1qkcggbsmbw8fa9ln8vs7vy2r288szks7rn0jjn0wxmbw";
  };

  strictDeps = true;

  nativeBuildInputs = [ ocaml ];

  patchPhase = "patch -p1 < ${finalAttrs.pf-patch}";
  buildPhase = "./build";
  installPhase = ''
    mkdir -p $out/bin
    cp ./proverif      $out/bin/statverif
    cp ./proveriftotex $out/bin/statveriftotex
  '';

  meta = {
    description = "Verification of stateful processes (via Proverif)";
    homepage = "https://markryan.eu/research/statverif/";
    license = lib.licenses.gpl2;
    platforms = lib.platforms.unix;
    maintainers = [ lib.maintainers.thoughtpolice ];
  };
})