nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 coq,
3 mkCoqDerivation,
4 mathcomp,
5 bignums,
6 flocq,
7 coquelicot,
8 interval,
9 mathcomp-reals-stdlib,
10 multinomials,
11 coqeal,
12 lib,
13 version ? null,
14}:
15
16let
17 repo = "validsdp";
18 owner = "validsdp";
19
20 inherit version;
21 defaultVersion =
22 let
23 case = coq: mc: out: {
24 cases = [
25 coq
26 mc
27 ];
28 inherit out;
29 };
30 in
31 with lib.versions;
32 lib.switch
33 [ coq.coq-version mathcomp.version ]
34 [
35 (case (range "9.0" "9.1") (isGe "2.3.0") "1.1.1")
36 (case (range "9.0" "9.1") (range "2.3.0" "2.4.0") "1.1.0")
37 ]
38 null;
39 release = {
40 "1.1.0".sha256 = "sha256-lbESAFBEBpOShNFh6RZQYPLRhdqYvdKBrxJOMy2L+Ws=";
41 "1.1.1".sha256 = "sha256-B+Gy16WjBqqNHvjLE6nBV/ulfDVZUWwA5FO07XnqC60=";
42 };
43 releaseRev = v: "v${v}";
44
45 # list of packages sorted by dependency order
46 packages = {
47 "libvalidsdp" = [ ];
48 "validsdp" = [ "libvalidsdp" ];
49 };
50
51 validsdp_ =
52 package:
53 let
54 libvalidsdp-deps = [
55 mathcomp.field
56 bignums
57 flocq
58 coquelicot
59 interval
60 mathcomp-reals-stdlib
61 ];
62 validsdp-deps = [
63 mathcomp.field
64 bignums
65 flocq
66 interval
67 mathcomp-reals-stdlib
68 multinomials
69 coqeal
70 coq.ocamlPackages.osdp
71 coq.ocamlPackages.ocplib-simplex
72 ];
73 intra-deps = map validsdp_ packages.${package};
74 pkgpath = lib.switch package [
75 {
76 case = "libvalidsdp";
77 out = "libvalidsdp";
78 }
79 {
80 case = "validsdp";
81 out = ".";
82 }
83 ] package;
84 pname = package;
85
86 derivation = mkCoqDerivation {
87 inherit
88 version
89 pname
90 defaultVersion
91 release
92 releaseRev
93 repo
94 owner
95 ;
96
97 namePrefix = [
98 "coq"
99 ];
100
101 mlPlugin = package == "validsdp";
102
103 propagatedBuildInputs =
104 intra-deps
105 ++ lib.optionals (package == "libvalidsdp") libvalidsdp-deps
106 ++ lib.optionals (package == "validsdp") validsdp-deps;
107
108 preBuild = ''
109 cd ${pkgpath}
110 '';
111
112 meta = {
113 description = "ValidSDP";
114 license = lib.licenses.lgpl21Plus;
115 };
116
117 passthru = lib.mapAttrs (package: deps: validsdp_ package) packages;
118 };
119 in
120 derivation;
121in
122validsdp_ "validsdp"