1{
2 lib,
3 python,
4 autoAddDriverRunpath,
5 buildPythonPackage,
6 autoPatchelfHook,
7 unzip,
8 cudaPackages,
9}:
10
11let
12 pyVersion = "${lib.versions.major python.version}${lib.versions.minor python.version}";
13 buildVersion = lib.optionalString (cudaPackages ? tensorrt) cudaPackages.tensorrt.version;
14 wheelVersion = lib.optionalString (cudaPackages ? tensorrt) (
15 if
16 (builtins.elem buildVersion [
17 "8.6.1.6"
18 "10.3.0.26"
19 ])
20 then
21 builtins.concatStringsSep "." (lib.take 3 (builtins.splitVersion buildVersion))
22 else
23 buildVersion
24 );
25in
26buildPythonPackage rec {
27 pname = "tensorrt";
28 version = wheelVersion;
29
30 src = cudaPackages.tensorrt.src;
31
32 format = "wheel";
33 # We unpack the wheel ourselves because of the odd packaging.
34 dontUseWheelUnpack = true;
35
36 nativeBuildInputs = [
37 unzip
38 autoPatchelfHook
39 autoAddDriverRunpath
40 ];
41
42 preUnpack = ''
43 mkdir -p dist
44 tar --strip-components=2 -xf "$src" --directory=dist \
45 "TensorRT-${buildVersion}/python/tensorrt-${wheelVersion}-cp${pyVersion}-none-linux_x86_64.whl"
46 '';
47
48 sourceRoot = ".";
49
50 buildInputs = [
51 cudaPackages.cudnn
52 cudaPackages.tensorrt
53 ];
54
55 pythonImportsCheck = [ "tensorrt" ];
56
57 meta = with lib; {
58 description = "Python bindings for TensorRT, a high-performance deep learning interface";
59 homepage = "https://developer.nvidia.com/tensorrt";
60 license = licenses.unfree;
61 platforms = [ "x86_64-linux" ];
62 maintainers = with maintainers; [ aidalgol ];
63 broken = !(cudaPackages ? tensorrt) || !(cudaPackages ? cudnn);
64 };
65}