1{
2 lib,
3 mkCoqDerivation,
4 coq,
5 mathcomp-boot,
6 ExtLib,
7 simple-io,
8 version ? null,
9}:
10
11let
12 recent = lib.versions.isGe "8.7" coq.coq-version || coq.coq-version == "dev";
13in
14(mkCoqDerivation {
15 pname = "QuickChick";
16 owner = "QuickChick";
17 inherit version;
18 defaultVersion =
19 let
20 case = coq: mc: out: {
21 cases = [
22 coq
23 mc
24 ];
25 inherit out;
26 };
27 in
28 lib.switch
29 [ coq.coq-version mathcomp-boot.version ]
30 [
31 (case (lib.versions.range "8.15" "9.0") lib.pred.true "2.0.4")
32 (case (lib.versions.range "8.13" "8.17") lib.pred.true "1.6.5")
33 (case "8.13" lib.pred.true "1.5.0")
34 (case "8.12" lib.pred.true "1.4.0")
35 (case "8.11" lib.pred.true "1.3.2")
36 (case "8.10" lib.pred.true "1.2.1")
37 (case "8.9" lib.pred.true "1.1.0")
38 (case "8.8" lib.pred.true "20190311")
39 (case "8.7" (lib.versions.isLe "1.8") "1.0.0")
40 (case "8.6" lib.pred.true "20171102")
41 (case "8.5" lib.pred.true "20170512")
42 ]
43 null;
44 release."2.0.4".sha256 = "sha256-WD8B+n8gyGctHMO+M8201Ca3Uw8zCWYsOatSNGCf0/s=";
45 release."2.0.2".sha256 = "sha256-xxKkwDRjB8nUiXNhein1Ppn0DP5FZ13J90xUPAnQBbs=";
46 release."2.0.1".sha256 = "sha256-gJc+9Or6tbqE00920Il4pnEvokRoiADX6CxP/Q0QZaY=";
47 release."1.6.5".sha256 = "sha256-rcFyRDH8UbB9KVk10P5qjtPkWs04p78VNHkCq4mXr3U=";
48 release."1.6.4".sha256 = "sha256-C1060wPSU33yZAFLxGmZlAMXASnx98qz3oSLO8DO+mM=";
49 release."1.6.2".sha256 = "0g5q9zw3xd4zndihq96nxkq4w3dh05418wzlwdk1nnn3b6vbx6z0";
50 release."1.5.0".sha256 = "1lq8x86vd3vqqh2yq6hvyagpnhfq5wmk5pg2z0xq7b7dcw7hyfkw";
51 release."1.4.0".sha256 = "068p48pm5yxjc3yv8qwzp25bp9kddvxj81l31mjkyx3sdrsw3kyc";
52 release."1.3.2".sha256 = "0lciwaqv288dh2f13xk2x0lrn6zyrkqy6g4yy927wwzag2gklfrs";
53 release."1.2.1".sha256 = "17vz88xjzxh3q7hs6hnndw61r3hdfawxp5awqpgfaxx4w6ni8z46";
54 release."1.1.0".sha256 = "1c34v1k37rk7v0xk2czv5n79mbjxjrm6nh3llg2mpfmdsqi68wf3";
55 release."1.0.0".sha256 = "1gqy9a4yavd0sa7kgysf9gf2lq4p8dmn4h89y8081f2j8zli0w5y";
56 release."20190311".rev = "22af9e9a223d0038f05638654422e637e863b355";
57 release."20190311".sha256 = "00rnr19lg6lg0haq1sy4ld38p7imzand6fc52fvfq27gblxkp2aq";
58 release."20171102".rev = "0fdb769e1dc87a278383b44a9f5102cc7ccbafcf";
59 release."20171102".sha256 = "0fri4nih40vfb0fbr82dsi631ydkw48xszinq43lyinpknf54y17";
60 release."20170512".rev = "31eb050ae5ce57ab402db9726fb7cd945a0b4d03";
61 release."20170512".sha256 = "033ch10i5wmqyw8j6wnr0dlbnibgfpr1vr0c07q3yj6h23xkmqpg";
62 releaseRev = v: "v${v}";
63
64 preConfigure = lib.optionalString recent "substituteInPlace Makefile --replace quickChickTool.byte quickChickTool.native";
65
66 useDuneifVersion = v: lib.versions.isGe "2.1" v || v == "dev";
67 opam-name = "coq-quickchick";
68
69 mlPlugin = true;
70 nativeBuildInputs = lib.optional recent coq.ocamlPackages.ocamlbuild;
71 propagatedBuildInputs = [
72 mathcomp-boot
73 ]
74 ++ lib.optionals recent [
75 ExtLib
76 simple-io
77 ];
78 extraInstallFlags = [ "-f Makefile.coq" ];
79
80 enableParallelBuilding = false;
81
82 meta = with lib; {
83 description = "Randomized property-based testing plugin for Coq; a clone of Haskell QuickCheck";
84 maintainers = with maintainers; [ jwiegley ];
85 };
86}).overrideAttrs
87 (
88 o:
89 let
90 after_1_6 = lib.versions.isGe "1.6" o.version || o.version == "dev";
91 after_2_1 = lib.versions.isGe "2.1" o.version || o.version == "dev";
92 in
93 {
94 nativeBuildInputs =
95 o.nativeBuildInputs
96 ++ lib.optional after_1_6 coq.ocamlPackages.cppo
97 ++ lib.optional after_2_1 coq.ocamlPackages.menhir;
98 propagatedBuildInputs =
99 o.propagatedBuildInputs
100 ++ lib.optionals after_1_6 (
101 with coq.ocamlPackages;
102 [
103 findlib
104 zarith
105 ]
106 );
107 }
108 )