lol
1{ lib
2, buildPythonApplication
3, pythonOlder
4, fetchFromGitHub
5, pdm-backend
6, cmake-format
7, pygls
8, cmake
9, pytest-datadir
10, pytestCheckHook
11}:
12
13buildPythonApplication rec {
14 pname = "cmake-language-server";
15 version = "0.1.10";
16 format = "pyproject";
17
18 disabled = pythonOlder "3.8";
19
20 src = fetchFromGitHub {
21 owner = "regen100";
22 repo = "cmake-language-server";
23 rev = "refs/tags/v${version}";
24 hash = "sha256-9fnyDJm8rUl+7g4FrdMykPpQOcww2M6IPWH/3qVeJX4=";
25 };
26
27 patches = [
28 # Test timeouts occasionally cause the build to fail
29 ./disable-test-timeouts.patch
30 ];
31
32 nativeBuildInputs = [
33 pdm-backend
34 ];
35
36 propagatedBuildInputs = [
37 cmake-format
38 pygls
39 ];
40
41 nativeCheckInputs = [
42 cmake
43 cmake-format
44 pytest-datadir
45 pytestCheckHook
46 ];
47
48 # version.py generated by pdm, no idea why it's not present in test phase
49 # https://github.com/regen100/cmake-language-server/blob/68bbc8187b6110a75f498647af7c44df790ffa87/pyproject.toml#L35-L36
50 preCheck = ''
51 echo "__version__ = \"$PDM_BUILD_SCM_VERSION\"" > cmake_language_server/version.py
52 '';
53
54 postCheck = ''
55 rm cmake_language_server/version.py
56 '';
57
58 dontUseCmakeConfigure = true;
59
60 pythonImportsCheck = [
61 "cmake_language_server"
62 ];
63
64 meta = with lib; {
65 description = "CMake LSP Implementation";
66 homepage = "https://github.com/regen100/cmake-language-server";
67 changelog = "https://github.com/regen100/cmake-language-server/releases/tag/v${version}";
68 license = licenses.mit;
69 maintainers = with maintainers; [ kira-bruneau ];
70 mainProgram = "cmake-language-server";
71 };
72}