nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at python-updates 235 lines 8.3 kB view raw
1{ 2 lib, 3 mkCoqDerivation, 4 mathcomp, 5 mathcomp-finmap, 6 mathcomp-bigenough, 7 hierarchy-builder, 8 stdlib, 9 single ? false, 10 coqPackages, 11 coq, 12 version ? null, 13}@args: 14 15let 16 repo = "analysis"; 17 owner = "math-comp"; 18 19 release."1.14.0".sha256 = "sha256-FFcfxnF1wtz2e9Rdqu4Wd0rtLW0DYoXswCTji//RSCQ="; 20 release."1.13.0".sha256 = "sha256-nn2gl6cAO93QEdMvLGlB9WAPddQiOdeRtk1pLO+gxII="; 21 release."1.12.0".sha256 = "sha256-PF10NlZ+aqP3PX7+UsZwgJT9PEaDwzvrS/ZGzjP64Wo="; 22 release."1.11.0".sha256 = "sha256-1apbzBvaLNw/8ARLUhGGy89CyXW+/6O4ckdxKPraiVc="; 23 release."1.9.0".sha256 = "sha256-zj7WSDUg8ISWxcipGpjEwvvnLp1g8nm23BZiib/15+g="; 24 release."1.8.0".sha256 = "sha256-2ZafDmZAwGB7sxdUwNIE3xvwBRw1kFDk0m5Vz+onWZc="; 25 release."1.7.0".sha256 = "sha256-GgsMIHqLkWsPm2VyOPeZdOulkN00IoBz++qA6yE9raQ="; 26 release."1.5.0".sha256 = "sha256-EWogrkr5TC5F9HjQJwO3bl4P8mij8U7thUGJNNI+k88="; 27 release."1.4.0".sha256 = "sha256-eDggeuEU0fMK7D5FbxvLkbAgpLw5lwL/Rl0eLXAnJeg="; 28 release."1.2.0".sha256 = "sha256-w6BivDM4dF4Iv4rUTy++2feweNtMAJxgGExPfYGhXxo="; 29 release."1.1.0".sha256 = "sha256-wl4kZf4mh9zbFfGcqaFEgWRyp0Bj511F505mYodpS6o="; 30 release."1.0.0".sha256 = "sha256-KiXyaWB4zQ3NuXadq4BSWfoN1cIo1xiLVSN6nW03tC4="; 31 release."0.7.0".sha256 = "sha256-JwkyetXrFsFHqz8KY3QBpHsrkhmEFnrCGuKztcoen60="; 32 release."0.6.7".sha256 = "sha256-3i2PBMEwihwgwUmnS0cmrZ8s+aLPFVq/vo0aXMUaUyA="; 33 release."0.6.6".sha256 = "sha256-tWtv6yeB5/vzwpKZINK9OQ0yQsvD8qu9zVSNHvLMX5Y="; 34 release."0.6.5".sha256 = "sha256-oJk9/Jl1SWra2aFAXRAVfX7ZUaDfajqdDksYaW8dv8E="; 35 release."0.6.1".sha256 = "sha256-1VyNXu11/pDMuH4DmFYSUF/qZ4Bo+/Zl3Y0JkyrH/r0="; 36 release."0.6.0".sha256 = "sha256-0msICcIrK6jbOSiBu0gIVU3RHwoEEvB88CMQqW/06rg="; 37 release."0.5.3".sha256 = "sha256-1NjFsi5TITF8ZWx1NyppRmi8g6YaoUtTdS9bU/sUe5k="; 38 release."0.5.2".sha256 = "0yx5p9zyl8jv1vg7rgkyq8dqzkdnkqv969mi62whmhkvxbavgzbw"; 39 release."0.5.1".sha256 = "1hnzqb1gxf88wgj2n1b0f2xm6sxg9j0735zdsv6j12hlvx5lwk68"; 40 release."0.3.13".sha256 = "sha256-Yaztew79KWRC933kGFOAUIIoqukaZOdNOdw4XszR1Hg="; 41 release."0.3.10".sha256 = "sha256-FBH2c8QRibq5Ycw/ieB8mZl0fDiPrYdIzZ6W/A3pIhI="; 42 release."0.3.9".sha256 = "sha256-uUU9diBwUqBrNRLiDc0kz0CGkwTZCUmigPwLbpDOeg4="; 43 release."0.3.6".sha256 = "0g2j7b2hca4byz62ssgg90bkbc8wwp7xkb2d3225bbvihi92b4c5"; 44 release."0.3.4".sha256 = "18mgycjgg829dbr7ps77z6lcj03h3dchjbj5iir0pybxby7gd45c"; 45 release."0.3.3".sha256 = "1m2mxcngj368vbdb8mlr91hsygl430spl7lgyn9qmn3jykack867"; 46 release."0.3.1".sha256 = "1iad288yvrjv8ahl9v18vfblgqb1l5z6ax644w49w9hwxs93f2k8"; 47 release."0.2.3".sha256 = "0p9mr8g1qma6h10qf7014dv98ln90dfkwn76ynagpww7qap8s966"; 48 49 defaultVersion = 50 let 51 case = coq: mc: out: { 52 cases = [ 53 coq 54 mc 55 ]; 56 inherit out; 57 }; 58 in 59 with lib.versions; 60 lib.switch 61 [ coq.coq-version mathcomp.version ] 62 [ 63 (case (range "8.20" "9.1") (range "2.4.0" "2.5.0") "1.14.0") 64 (case (range "8.20" "9.1") (range "2.1.0" "2.4.0") "1.13.0") 65 (case (range "8.20" "9.1") (range "2.1.0" "2.4.0") "1.12.0") 66 (case (range "8.19" "8.20") (range "2.1.0" "2.3.0") "1.9.0") 67 (case (range "8.17" "8.20") (range "2.0.0" "2.2.0") "1.1.0") 68 (case (range "8.17" "8.19") (range "1.17.0" "1.19.0") "0.7.0") 69 (case (range "8.17" "8.18") (range "1.15.0" "1.18.0") "0.6.7") 70 (case (range "8.17" "8.18") (range "1.15.0" "1.18.0") "0.6.6") 71 (case (range "8.14" "8.18") (range "1.15.0" "1.17.0") "0.6.5") 72 (case (range "8.14" "8.18") (range "1.13.0" "1.16.0") "0.6.1") 73 (case (range "8.14" "8.18") (range "1.13" "1.15") "0.5.2") 74 (case (range "8.13" "8.15") (range "1.13" "1.14") "0.5.1") 75 (case (range "8.13" "8.15") (range "1.12" "1.14") "0.3.13") 76 (case (range "8.11" "8.14") (range "1.12" "1.13") "0.3.10") 77 (case (range "8.10" "8.12") "1.11.0" "0.3.3") 78 (case (range "8.10" "8.11") "1.11.0" "0.3.1") 79 (case (range "8.8" "8.11") (range "1.8" "1.10") "0.2.3") 80 ] 81 null; 82 83 # list of analysis packages sorted by dependency order 84 packages = { 85 "classical" = [ ]; 86 "reals" = [ "classical" ]; 87 "experimental-reals" = [ "reals" ]; 88 "analysis" = [ "reals" ]; 89 "reals-stdlib" = [ "reals" ]; 90 "analysis-stdlib" = [ 91 "analysis" 92 "reals-stdlib" 93 ]; 94 }; 95 96 mathcomp_ = 97 package: 98 let 99 classical-deps = [ 100 mathcomp.ssreflect 101 mathcomp.algebra 102 mathcomp-finmap 103 ]; 104 experimental-reals-deps = [ mathcomp-bigenough ]; 105 analysis-deps = [ 106 mathcomp.field 107 mathcomp-bigenough 108 ]; 109 intra-deps = lib.optionals (package != "single") (map mathcomp_ packages.${package}); 110 pkgpath = lib.switch package [ 111 { 112 case = "single"; 113 out = "."; 114 } 115 { 116 case = "analysis"; 117 out = "theories"; 118 } 119 { 120 case = "experimental-reals"; 121 out = "experimental_reals"; 122 } 123 { 124 case = "reals-stdlib"; 125 out = "reals_stdlib"; 126 } 127 { 128 case = "analysis-stdlib"; 129 out = "analysis_stdlib"; 130 } 131 ] package; 132 pname = if package == "single" then "mathcomp-analysis-single" else "mathcomp-${package}"; 133 derivation = mkCoqDerivation { 134 inherit 135 version 136 pname 137 defaultVersion 138 release 139 repo 140 owner 141 ; 142 143 namePrefix = [ 144 "coq" 145 "mathcomp" 146 ]; 147 148 propagatedBuildInputs = 149 intra-deps 150 ++ lib.optionals (lib.elem package [ 151 "classical" 152 "single" 153 ]) classical-deps 154 ++ lib.optionals (lib.elem package [ 155 "experimental-reals" 156 "single" 157 ]) experimental-reals-deps 158 ++ lib.optionals (lib.elem package [ 159 "analysis" 160 "single" 161 ]) analysis-deps 162 ++ lib.optional (lib.elem package [ 163 "reals-stdlib" 164 "analysis-stdlib" 165 "single" 166 ]) stdlib; 167 168 preBuild = '' 169 cd ${pkgpath} 170 ''; 171 172 meta = { 173 description = "Analysis library compatible with Mathematical Components"; 174 maintainers = [ lib.maintainers.cohencyril ]; 175 license = lib.licenses.cecill-c; 176 }; 177 178 passthru = lib.mapAttrs (package: deps: mathcomp_ package) packages; 179 }; 180 # split packages didn't exist before 0.6, so building nothing in that case 181 patched-derivation1 = derivation.overrideAttrs ( 182 o: 183 lib.optionalAttrs 184 ( 185 o.pname != null 186 && o.pname != "mathcomp-analysis" 187 && o.version != null 188 && o.version != "dev" 189 && lib.versions.isLt "0.6" o.version 190 ) 191 { 192 preBuild = ""; 193 buildPhase = "echo doing nothing"; 194 installPhase = "echo doing nothing"; 195 } 196 ); 197 patched-derivation2 = patched-derivation1.overrideAttrs ( 198 o: 199 lib.optionalAttrs ( 200 o.pname != null 201 && o.pname == "mathcomp-analysis" 202 && o.version != null 203 && o.version != "dev" 204 && lib.versions.isLt "0.6" o.version 205 ) { preBuild = ""; } 206 ); 207 # only packages classical and analysis existed before 1.7, so building nothing in that case 208 patched-derivation3 = patched-derivation2.overrideAttrs ( 209 o: 210 lib.optionalAttrs 211 ( 212 o.pname != null 213 && o.pname != "mathcomp-classical" 214 && o.pname != "mathcomp-analysis" 215 && o.version != null 216 && o.version != "dev" 217 && lib.versions.isLt "1.7" o.version 218 ) 219 { 220 preBuild = ""; 221 buildPhase = "echo doing nothing"; 222 installPhase = "echo doing nothing"; 223 } 224 ); 225 patched-derivation = patched-derivation3.overrideAttrs ( 226 o: 227 lib.optionalAttrs (o.version != null && (o.version == "dev" || lib.versions.isGe "0.3.4" o.version)) 228 { 229 propagatedBuildInputs = o.propagatedBuildInputs ++ [ hierarchy-builder ]; 230 } 231 ); 232 in 233 patched-derivation; 234in 235mathcomp_ (if single then "single" else "analysis")