1{ lib
2, buildPythonApplication
3, fetchFromGitHub
4, cmake-format
5, pygls
6, cmake
7, pdm-backend
8, pytest-datadir
9, pytestCheckHook
10, pythonOlder
11}:
12
13buildPythonApplication rec {
14 pname = "cmake-language-server";
15 version = "0.1.8";
16 format = "pyproject";
17
18 disabled = pythonOlder "3.7";
19
20 src = fetchFromGitHub {
21 owner = "regen100";
22 repo = "cmake-language-server";
23 rev = "refs/tags/v${version}";
24 hash = "sha256-7AlF+FqhZR+6lLsR1dxAGHd/GU+mB3ojYLDXVm7Il4M=";
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 license = licenses.mit;
68 maintainers = with maintainers; [ kira-bruneau ];
69 };
70}