nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at python-updates 162 lines 3.4 kB view raw
1{ 2 buildDunePackage, 3 lib, 4 cppo, 5 stdlib-shims, 6 ppx_yojson_conv_lib, 7 yojson_2, 8 ocaml-syntax-shims, 9 jsonrpc, 10 omd, 11 octavius, 12 dune-build-info, 13 dune-rpc, 14 uutf, 15 dyn, 16 re, 17 stdune, 18 chrome-trace, 19 csexp, 20 result, 21 pp, 22 cmdliner, 23 ordering, 24 ocamlformat-rpc-lib, 25 ocaml, 26 version ? 27 if lib.versionAtLeast ocaml.version "5.4" then 28 "1.25.0" 29 else if lib.versionAtLeast ocaml.version "5.3" then 30 "1.23.1" 31 else if lib.versionAtLeast ocaml.version "5.2" then 32 "1.21.0" 33 else if lib.versionAtLeast ocaml.version "4.14" then 34 "1.18.0" 35 else if lib.versionAtLeast ocaml.version "4.13" then 36 "1.10.5" 37 else if lib.versionAtLeast ocaml.version "4.12" then 38 "1.9.0" 39 else 40 "1.4.1", 41}: 42 43let 44 jsonrpc_v = jsonrpc.override { 45 inherit version; 46 }; 47in 48buildDunePackage { 49 pname = "lsp"; 50 inherit (jsonrpc_v) version src; 51 minimalOCamlVersion = if lib.versionAtLeast version "1.7.0" then "4.12" else "4.06"; 52 53 # unvendor some (not all) dependencies. 54 # They are vendored by upstream only because it is then easier to install 55 # ocaml-lsp without messing with your opam switch, but nix should prevent 56 # this type of problems without resorting to vendoring. 57 preBuild = lib.optionalString (lib.versionOlder version "1.10.4") '' 58 rm -r ocaml-lsp-server/vendor/{octavius,uutf,omd,cmdliner} 59 ''; 60 61 buildInputs = 62 if lib.versionAtLeast version "1.12.0" then 63 [ 64 pp 65 re 66 octavius 67 dune-build-info 68 dune-rpc 69 omd 70 cmdliner 71 ocamlformat-rpc-lib 72 dyn 73 stdune 74 chrome-trace 75 ] 76 else if lib.versionAtLeast version "1.10.0" then 77 [ 78 pp 79 re 80 octavius 81 dune-build-info 82 dune-rpc 83 omd 84 cmdliner 85 ocamlformat-rpc-lib 86 dyn 87 stdune 88 ] 89 else if lib.versionAtLeast version "1.7.0" then 90 [ 91 re 92 octavius 93 dune-build-info 94 omd 95 cmdliner 96 ocamlformat-rpc-lib 97 ] 98 else 99 [ 100 ppx_yojson_conv_lib 101 ocaml-syntax-shims 102 octavius 103 dune-build-info 104 omd 105 cmdliner 106 ]; 107 108 nativeBuildInputs = lib.optional (lib.versionOlder version "1.7.0") cppo; 109 110 propagatedBuildInputs = 111 if lib.versionAtLeast version "1.23.1" then 112 [ 113 jsonrpc 114 ppx_yojson_conv_lib 115 uutf 116 ] 117 else if lib.versionAtLeast version "1.14.0" then 118 [ 119 jsonrpc 120 (ppx_yojson_conv_lib.override { yojson = yojson_2; }) 121 uutf 122 ] 123 else if lib.versionAtLeast version "1.10.0" then 124 [ 125 dyn 126 jsonrpc 127 ordering 128 (ppx_yojson_conv_lib.override { yojson = yojson_2; }) 129 stdune 130 uutf 131 ] 132 else if lib.versionAtLeast version "1.9.0" then 133 [ 134 csexp 135 jsonrpc 136 (pp.override { version = "1.2.0"; }) 137 (ppx_yojson_conv_lib.override { yojson = yojson_2; }) 138 result 139 uutf 140 ] 141 else if lib.versionAtLeast version "1.7.0" then 142 [ 143 csexp 144 jsonrpc 145 (pp.override { version = "1.2.0"; }) 146 ppx_yojson_conv_lib 147 result 148 uutf 149 ] 150 else 151 [ 152 csexp 153 jsonrpc 154 ppx_yojson_conv_lib 155 stdlib-shims 156 uutf 157 ]; 158 159 meta = jsonrpc.meta // { 160 description = "LSP protocol implementation in OCaml"; 161 }; 162}