1{ lib
2, stdenv
3, fetchPypi
4, buildPythonPackage
5, appdirs
6, cffi
7, decorator
8, mako
9, mesa_drivers
10, numpy
11, ocl-icd
12, opencl-headers
13, platformdirs
14, pybind11
15, pytest
16, pytestCheckHook
17, pytools
18, setuptools
19, six
20}:
21
22let
23 os-specific-buildInputs =
24 if stdenv.isDarwin then [ mesa_drivers.dev ] else [ ocl-icd ];
25in buildPythonPackage rec {
26 pname = "pyopencl";
27 version = "2023.1";
28
29 format = "pyproject";
30
31 src = fetchPypi {
32 inherit pname version;
33 hash = "sha256-2d5gcnKRmlB6nCTD3+7q/nLAX3zWyeN7IRno7jxTqJE=";
34 };
35
36 nativeBuildInputs = [ setuptools ];
37
38 buildInputs = [ opencl-headers pybind11 ] ++ os-specific-buildInputs;
39
40 propagatedBuildInputs = [
41 appdirs
42 cffi
43 decorator
44 mako
45 numpy
46 platformdirs
47 pytools
48 six
49 ];
50
51 nativeCheckInputs = [ pytestCheckHook ];
52
53 preBuild = ''
54 export HOME=$(mktemp -d)
55 '';
56
57 # gcc: error: pygpu_language_opencl.cpp: No such file or directory
58 doCheck = false;
59
60 pythonImportsCheck = [ "pyopencl" ];
61
62 meta = with lib; {
63 description = "Python wrapper for OpenCL";
64 homepage = "https://github.com/pyopencl/pyopencl";
65 license = licenses.mit;
66 maintainers = [ maintainers.fridh ];
67 };
68}