Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1{ buildDunePackage
2, lib
3, cppo
4, stdlib-shims
5, ppx_yojson_conv_lib
6, ocaml-syntax-shims
7, jsonrpc
8, omd
9, octavius
10, dune-build-info
11, dune-rpc
12, uutf
13, dyn
14, re
15, stdune
16, chrome-trace
17, dune_3
18, csexp
19, result
20, pp
21, cmdliner
22, ordering
23, ocamlformat-rpc-lib
24}:
25
26buildDunePackage rec {
27 pname = "lsp";
28 inherit (jsonrpc) version src;
29 duneVersion = "3";
30 minimalOCamlVersion =
31 if lib.versionAtLeast version "1.7.0" then
32 "4.12"
33 else
34 "4.06";
35
36 # unvendor some (not all) dependencies.
37 # They are vendored by upstream only because it is then easier to install
38 # ocaml-lsp without messing with your opam switch, but nix should prevent
39 # this type of problems without resorting to vendoring.
40 preBuild = lib.optionalString (lib.versionOlder version "1.10.4") ''
41 rm -r ocaml-lsp-server/vendor/{octavius,uutf,omd,cmdliner}
42 '';
43
44 buildInputs =
45 if lib.versionAtLeast version "1.12.0" then
46 [
47 pp
48 re
49 ppx_yojson_conv_lib
50 octavius
51 dune-build-info
52 dune-rpc
53 omd
54 cmdliner
55 ocamlformat-rpc-lib
56 dyn
57 stdune
58 chrome-trace
59 ]
60 else if lib.versionAtLeast version "1.10.0" then
61 [
62 pp
63 re
64 ppx_yojson_conv_lib
65 octavius
66 dune-build-info
67 dune-rpc
68 omd
69 cmdliner
70 ocamlformat-rpc-lib
71 dyn
72 stdune
73 ]
74 else if lib.versionAtLeast version "1.7.0" then
75 [ pp re ppx_yojson_conv_lib octavius dune-build-info omd cmdliner ocamlformat-rpc-lib ]
76 else
77 [
78 ppx_yojson_conv_lib
79 ocaml-syntax-shims
80 octavius
81 dune-build-info
82 omd
83 cmdliner
84 ];
85
86 nativeBuildInputs = lib.optional (lib.versionOlder version "1.7.0") cppo;
87
88 propagatedBuildInputs =
89 if lib.versionAtLeast version "1.14.0" then [
90 jsonrpc
91 ppx_yojson_conv_lib
92 uutf
93 ] else if lib.versionAtLeast version "1.10.0" then [
94 dyn
95 jsonrpc
96 ordering
97 ppx_yojson_conv_lib
98 stdune
99 uutf
100 ] else if lib.versionAtLeast version "1.7.0" then [
101 csexp
102 jsonrpc
103 pp
104 ppx_yojson_conv_lib
105 result
106 uutf
107 ] else [
108 csexp
109 jsonrpc
110 ppx_yojson_conv_lib
111 stdlib-shims
112 uutf
113 ];
114
115 meta = jsonrpc.meta // {
116 description = "LSP protocol implementation in OCaml";
117 };
118}