Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / development / python-modules / pythonnet / default.nix
blob5a2272c668c3ea029274875880c1e3c6028f83f5
1 { lib
2 , fetchPypi
3 , buildPythonPackage
4 , pytestCheckHook
5 , pycparser
6 , psutil
7 , dotnet-sdk
8 , buildDotnetModule
9 , clr-loader
10 , setuptools
13 let
14   pname = "pythonnet";
15   version = "3.0.3";
16   src = fetchPypi {
17     pname = "pythonnet";
18     inherit version;
19     hash = "sha256-jUsulxWKAjh1+GR0WKWPOIF/T+Oa9gq91rDYrfHXfnU=";
20   };
22   # This buildDotnetModule is used only to get nuget sources, the actual
23   # build is done in `buildPythonPackage` below.
24   dotnet-build = buildDotnetModule {
25     inherit pname version src;
26     nugetDeps = ./deps.nix;
27   };
29 buildPythonPackage {
30   inherit pname version src;
32   format = "pyproject";
34   postPatch = ''
35     substituteInPlace pyproject.toml \
36       --replace 'dynamic = ["version"]' 'version = "${version}"'
37   '';
39   nativeBuildInputs = [
40     setuptools
41     dotnet-sdk
42   ];
44   propagatedBuildInputs = [
45     pycparser
46     clr-loader
47   ];
49   pytestFlagsArray = [
50     # Run tests using .NET Core, Mono is unsupported for now due to find_library problem in clr-loader
51     "--runtime coreclr"
52   ];
54   nativeCheckInputs = [
55     pytestCheckHook
56     psutil # needed for memory leak tests
57   ];
59   # Perform dotnet restore based on the nuget-source
60   preConfigure = ''
61     dotnet restore \
62       -p:ContinuousIntegrationBuild=true \
63       -p:Deterministic=true \
64       --source ${dotnet-build.nuget-source}
65   '';
67   # Rerun this when updating to refresh Nuget dependencies
68   passthru.fetch-deps = dotnet-build.fetch-deps;
70   meta = with lib; {
71     description = ".NET integration for Python";
72     homepage = "https://pythonnet.github.io";
73     changelog = "https://github.com/pythonnet/pythonnet/releases/tag/v${version}";
74     license = licenses.mit;
75     # <https://github.com/pythonnet/pythonnet/issues/898>
76     badPlatforms = [ "aarch64-linux" ];
77     maintainers = with maintainers; [ jraygauthier mdarocha ];
78   };