summaryrefslogtreecommitdiff
path: root/pkgs/development/coq-modules/QuickChick/default.nix
blob: 8145205793209dad746e9fa64c42ed6b99134321 (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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
{
  lib,
  mkCoqDerivation,
  coq,
  mathcomp-boot,
  ExtLib,
  simple-io,
  version ? null,
}:

let
  recent = lib.versions.isGe "8.7" coq.coq-version || coq.coq-version == "dev";
in
(mkCoqDerivation {
  pname = "QuickChick";
  owner = "QuickChick";
  inherit version;
  defaultVersion =
    let
      case = coq: mc: out: {
        cases = [
          coq
          mc
        ];
        inherit out;
      };
    in
    lib.switch
      [ coq.coq-version mathcomp-boot.version ]
      [
        (case (lib.versions.range "8.15" "9.1") lib.pred.true "2.1.1")
        (case (lib.versions.range "8.13" "8.17") lib.pred.true "1.6.5")
        (case "8.13" lib.pred.true "1.5.0")
        (case "8.12" lib.pred.true "1.4.0")
        (case "8.11" lib.pred.true "1.3.2")
        (case "8.10" lib.pred.true "1.2.1")
        (case "8.9" lib.pred.true "1.1.0")
        (case "8.8" lib.pred.true "20190311")
        (case "8.7" (lib.versions.isLe "1.8") "1.0.0")
        (case "8.6" lib.pred.true "20171102")
        (case "8.5" lib.pred.true "20170512")
      ]
      null;
  release."2.1.1".sha256 = "sha256-tcZFpf8joEdVCgy1oKWdaM/9q3EMsF/jT+zz+kIsix8=";
  release."2.0.4".sha256 = "sha256-WD8B+n8gyGctHMO+M8201Ca3Uw8zCWYsOatSNGCf0/s=";
  release."2.0.2".sha256 = "sha256-xxKkwDRjB8nUiXNhein1Ppn0DP5FZ13J90xUPAnQBbs=";
  release."2.0.1".sha256 = "sha256-gJc+9Or6tbqE00920Il4pnEvokRoiADX6CxP/Q0QZaY=";
  release."1.6.5".sha256 = "sha256-rcFyRDH8UbB9KVk10P5qjtPkWs04p78VNHkCq4mXr3U=";
  release."1.6.4".sha256 = "sha256-C1060wPSU33yZAFLxGmZlAMXASnx98qz3oSLO8DO+mM=";
  release."1.6.2".sha256 = "0g5q9zw3xd4zndihq96nxkq4w3dh05418wzlwdk1nnn3b6vbx6z0";
  release."1.5.0".sha256 = "1lq8x86vd3vqqh2yq6hvyagpnhfq5wmk5pg2z0xq7b7dcw7hyfkw";
  release."1.4.0".sha256 = "068p48pm5yxjc3yv8qwzp25bp9kddvxj81l31mjkyx3sdrsw3kyc";
  release."1.3.2".sha256 = "0lciwaqv288dh2f13xk2x0lrn6zyrkqy6g4yy927wwzag2gklfrs";
  release."1.2.1".sha256 = "17vz88xjzxh3q7hs6hnndw61r3hdfawxp5awqpgfaxx4w6ni8z46";
  release."1.1.0".sha256 = "1c34v1k37rk7v0xk2czv5n79mbjxjrm6nh3llg2mpfmdsqi68wf3";
  release."1.0.0".sha256 = "1gqy9a4yavd0sa7kgysf9gf2lq4p8dmn4h89y8081f2j8zli0w5y";
  release."20190311".rev = "22af9e9a223d0038f05638654422e637e863b355";
  release."20190311".sha256 = "00rnr19lg6lg0haq1sy4ld38p7imzand6fc52fvfq27gblxkp2aq";
  release."20171102".rev = "0fdb769e1dc87a278383b44a9f5102cc7ccbafcf";
  release."20171102".sha256 = "0fri4nih40vfb0fbr82dsi631ydkw48xszinq43lyinpknf54y17";
  release."20170512".rev = "31eb050ae5ce57ab402db9726fb7cd945a0b4d03";
  release."20170512".sha256 = "033ch10i5wmqyw8j6wnr0dlbnibgfpr1vr0c07q3yj6h23xkmqpg";
  releaseRev = v: "v${v}";

  preConfigure = lib.optionalString recent "substituteInPlace Makefile --replace quickChickTool.byte quickChickTool.native";

  useDuneifVersion = v: lib.versions.isGe "2.1" v || v == "dev";
  opam-name = "coq-quickchick";

  mlPlugin = true;
  nativeBuildInputs = lib.optional recent coq.ocamlPackages.ocamlbuild;
  propagatedBuildInputs = [
    mathcomp-boot
  ]
  ++ lib.optionals recent [
    ExtLib
    simple-io
  ];
  extraInstallFlags = [ "-f Makefile.coq" ];

  enableParallelBuilding = false;

  meta = {
    description = "Randomized property-based testing plugin for Coq; a clone of Haskell QuickCheck";
    maintainers = with lib.maintainers; [ jwiegley ];
  };
}).overrideAttrs
  (
    o:
    let
      after_1_6 = lib.versions.isGe "1.6" o.version || o.version == "dev";
      after_2_1 = lib.versions.isGe "2.1" o.version || o.version == "dev";
    in
    {
      nativeBuildInputs =
        o.nativeBuildInputs
        ++ lib.optional after_1_6 coq.ocamlPackages.cppo
        ++ lib.optional after_2_1 coq.ocamlPackages.menhir;
      propagatedBuildInputs =
        o.propagatedBuildInputs
        ++ lib.optionals after_1_6 (
          with coq.ocamlPackages;
          [
            findlib
            zarith
          ]
        );
    }
  )