nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
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.1") lib.pred.true "2.1.1")
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.1.1".sha256 = "sha256-tcZFpf8joEdVCgy1oKWdaM/9q3EMsF/jT+zz+kIsix8=";
45 release."2.0.4".sha256 = "sha256-WD8B+n8gyGctHMO+M8201Ca3Uw8zCWYsOatSNGCf0/s=";
46 release."2.0.2".sha256 = "sha256-xxKkwDRjB8nUiXNhein1Ppn0DP5FZ13J90xUPAnQBbs=";
47 release."2.0.1".sha256 = "sha256-gJc+9Or6tbqE00920Il4pnEvokRoiADX6CxP/Q0QZaY=";
48 release."1.6.5".sha256 = "sha256-rcFyRDH8UbB9KVk10P5qjtPkWs04p78VNHkCq4mXr3U=";
49 release."1.6.4".sha256 = "sha256-C1060wPSU33yZAFLxGmZlAMXASnx98qz3oSLO8DO+mM=";
50 release."1.6.2".sha256 = "0g5q9zw3xd4zndihq96nxkq4w3dh05418wzlwdk1nnn3b6vbx6z0";
51 release."1.5.0".sha256 = "1lq8x86vd3vqqh2yq6hvyagpnhfq5wmk5pg2z0xq7b7dcw7hyfkw";
52 release."1.4.0".sha256 = "068p48pm5yxjc3yv8qwzp25bp9kddvxj81l31mjkyx3sdrsw3kyc";
53 release."1.3.2".sha256 = "0lciwaqv288dh2f13xk2x0lrn6zyrkqy6g4yy927wwzag2gklfrs";
54 release."1.2.1".sha256 = "17vz88xjzxh3q7hs6hnndw61r3hdfawxp5awqpgfaxx4w6ni8z46";
55 release."1.1.0".sha256 = "1c34v1k37rk7v0xk2czv5n79mbjxjrm6nh3llg2mpfmdsqi68wf3";
56 release."1.0.0".sha256 = "1gqy9a4yavd0sa7kgysf9gf2lq4p8dmn4h89y8081f2j8zli0w5y";
57 release."20190311".rev = "22af9e9a223d0038f05638654422e637e863b355";
58 release."20190311".sha256 = "00rnr19lg6lg0haq1sy4ld38p7imzand6fc52fvfq27gblxkp2aq";
59 release."20171102".rev = "0fdb769e1dc87a278383b44a9f5102cc7ccbafcf";
60 release."20171102".sha256 = "0fri4nih40vfb0fbr82dsi631ydkw48xszinq43lyinpknf54y17";
61 release."20170512".rev = "31eb050ae5ce57ab402db9726fb7cd945a0b4d03";
62 release."20170512".sha256 = "033ch10i5wmqyw8j6wnr0dlbnibgfpr1vr0c07q3yj6h23xkmqpg";
63 releaseRev = v: "v${v}";
64
65 preConfigure = lib.optionalString recent "substituteInPlace Makefile --replace quickChickTool.byte quickChickTool.native";
66
67 useDuneifVersion = v: lib.versions.isGe "2.1" v || v == "dev";
68 opam-name = "coq-quickchick";
69
70 mlPlugin = true;
71 nativeBuildInputs = lib.optional recent coq.ocamlPackages.ocamlbuild;
72 propagatedBuildInputs = [
73 mathcomp-boot
74 ]
75 ++ lib.optionals recent [
76 ExtLib
77 simple-io
78 ];
79 extraInstallFlags = [ "-f Makefile.coq" ];
80
81 enableParallelBuilding = false;
82
83 meta = {
84 description = "Randomized property-based testing plugin for Coq; a clone of Haskell QuickCheck";
85 maintainers = with lib.maintainers; [ jwiegley ];
86 };
87}).overrideAttrs
88 (
89 o:
90 let
91 after_1_6 = lib.versions.isGe "1.6" o.version || o.version == "dev";
92 after_2_1 = lib.versions.isGe "2.1" o.version || o.version == "dev";
93 in
94 {
95 nativeBuildInputs =
96 o.nativeBuildInputs
97 ++ lib.optional after_1_6 coq.ocamlPackages.cppo
98 ++ lib.optional after_2_1 coq.ocamlPackages.menhir;
99 propagatedBuildInputs =
100 o.propagatedBuildInputs
101 ++ lib.optionals after_1_6 (
102 with coq.ocamlPackages;
103 [
104 findlib
105 zarith
106 ]
107 );
108 }
109 )