writers: add writeGuile[Bin] (#364531)
[NixPkgs.git] / pkgs / development / python-modules / pythonnet / default.nix
blob2cadb77774156c0871836f2969b581fdefcabe24
2   lib,
3   fetchFromGitHub,
4   buildPythonPackage,
5   pytestCheckHook,
6   pycparser,
7   psutil,
8   dotnet-sdk_6,
9   buildDotnetModule,
10   clr-loader,
11   setuptools,
14 let
15   pname = "pythonnet";
16   version = "3.0.4";
17   src = fetchFromGitHub {
18     owner = "pythonnet";
19     repo = "pythonnet";
20     rev = "v${version}";
21     hash = "sha256-QdgcBFQDFxmFxuXsDlHcu+L/VWw2aKfyWDqPrawyhOs=";
22   };
24   # This buildDotnetModule is used only to get nuget sources, the actual
25   # build is done in `buildPythonPackage` below.
26   dotnet-build = buildDotnetModule {
27     inherit pname version src;
28     projectFile = "src/runtime/Python.Runtime.csproj";
29     testProjectFile = "src/testing/Python.Test.csproj";
30     nugetDeps = ./deps.nix;
31     dotnet-sdk = dotnet-sdk_6;
32   };
34 buildPythonPackage {
35   inherit pname version src;
37   format = "pyproject";
39   postPatch = ''
40     substituteInPlace pyproject.toml \
41       --replace 'dynamic = ["version"]' 'version = "${version}"'
42   '';
44   buildInputs = dotnet-build.nugetDeps;
46   nativeBuildInputs = [
47     setuptools
48     dotnet-sdk_6
49   ];
51   propagatedBuildInputs = [
52     pycparser
53     clr-loader
54   ];
56   pytestFlagsArray = [
57     # Run tests using .NET Core, Mono is unsupported for now due to find_library problem in clr-loader
58     "--runtime coreclr"
59   ];
61   nativeCheckInputs = [
62     pytestCheckHook
63     psutil # needed for memory leak tests
64   ];
66   # Rerun this when updating to refresh Nuget dependencies
67   passthru.fetch-deps = dotnet-build.fetch-deps;
69   meta = with lib; {
70     description = ".NET integration for Python";
71     homepage = "https://pythonnet.github.io";
72     changelog = "https://github.com/pythonnet/pythonnet/releases/tag/v${version}";
73     license = licenses.mit;
74     # <https://github.com/pythonnet/pythonnet/issues/898>
75     badPlatforms = [ "aarch64-linux" ];
76     maintainers = with maintainers; [
77       jraygauthier
78       mdarocha
79     ];
80   };