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