1{
2 lib,
3 stdenv,
4 buildPythonPackage,
5 c-ares,
6 cython,
7 fetchPypi,
8 openssl,
9 pkg-config,
10 protobuf,
11 typing-extensions,
12 pythonOlder,
13 setuptools,
14 zlib,
15}:
16
17# This package should be updated together with the main grpc package and other
18# related python grpc packages.
19# nixpkgs-update: no auto update
20buildPythonPackage rec {
21 pname = "grpcio";
22 version = "1.75.0";
23 pyproject = true;
24
25 disabled = pythonOlder "3.8";
26
27 src = fetchPypi {
28 inherit pname version;
29 hash = "sha256-uYnosJSJR4wtGf7MdEopiTD0DYsnw2OK+/6E0i82zk4=";
30 };
31
32 outputs = [
33 "out"
34 "dev"
35 ];
36
37 build-system = [ setuptools ];
38
39 nativeBuildInputs = [
40 cython
41 pkg-config
42 ];
43
44 buildInputs = [
45 c-ares
46 openssl
47 zlib
48 ];
49
50 dependencies = [
51 protobuf
52 typing-extensions
53 ];
54
55 preBuild = ''
56 export GRPC_PYTHON_BUILD_EXT_COMPILER_JOBS="$NIX_BUILD_CORES"
57 if [ -z "$enableParallelBuilding" ]; then
58 GRPC_PYTHON_BUILD_EXT_COMPILER_JOBS=1
59 fi
60 ''
61 + lib.optionalString stdenv.hostPlatform.isDarwin ''
62 unset AR
63 '';
64
65 GRPC_BUILD_WITH_BORING_SSL_ASM = "";
66 GRPC_PYTHON_BUILD_SYSTEM_OPENSSL = 1;
67 GRPC_PYTHON_BUILD_SYSTEM_ZLIB = 1;
68 GRPC_PYTHON_BUILD_SYSTEM_CARES = 1;
69
70 # does not contain any tests
71 doCheck = false;
72
73 enableParallelBuilding = true;
74
75 pythonImportsCheck = [ "grpc" ];
76
77 meta = with lib; {
78 description = "HTTP/2-based RPC framework";
79 homepage = "https://grpc.io/grpc/python/";
80 changelog = "https://github.com/grpc/grpc/releases/tag/v${version}";
81 license = licenses.asl20;
82 maintainers = [ ];
83 };
84}