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