summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Szuba <marecki@gentoo.org>2023-08-20 17:50:34 +0100
committerMarek Szuba <marecki@gentoo.org>2023-08-20 17:50:38 +0100
commit85d4a5c8f4fc13d77a81e857447ef92a86e89097 (patch)
tree9dea97cfac61b7d6383b985ae58a3b0754d74cc6 /dev-python/pyopencl
parentdev-python/poetry-plugin-export: Bump to 1.5.0 (diff)
downloadgentoo-85d4a5c8f4fc13d77a81e857447ef92a86e89097.tar.gz
gentoo-85d4a5c8f4fc13d77a81e857447ef92a86e89097.tar.bz2
gentoo-85d4a5c8f4fc13d77a81e857447ef92a86e89097.zip
dev-python/pyopencl: add 2023.1.2
Now with py3.12 support thanks to a patch which uses the canonical NumPy way of getting the location of its header files instead of messing with imp.find_module(). Upstream said in the relevant file they did it that way because importing numpy "screws up distutils", however either this is no longer the case with the current versions of everything involved or PEP-517 installation is not affected. Signed-off-by: Marek Szuba <marecki@gentoo.org>
Diffstat (limited to 'dev-python/pyopencl')
-rw-r--r--dev-python/pyopencl/Manifest1
-rw-r--r--dev-python/pyopencl/files/pyopencl-2023.1.2_numpy-include-dir.patch16
-rw-r--r--dev-python/pyopencl/pyopencl-2023.1.2.ebuild76
3 files changed, 93 insertions, 0 deletions
diff --git a/dev-python/pyopencl/Manifest b/dev-python/pyopencl/Manifest
index 581263015123..02b743defb6b 100644
--- a/dev-python/pyopencl/Manifest
+++ b/dev-python/pyopencl/Manifest
@@ -1 +1,2 @@
DIST pyopencl-2023.1.1.tar.gz 472723 BLAKE2B 4960db0b9096ef624f0459f6711a6d1fc4561599f96c3b01c5efe3c183c8cc4284b63038b2a5e98d43c194a8e5ce3331886f675c0bc5f44073bc353675400985 SHA512 50c23132028bb2c35816b6c83c054eaf929d333fbb172230e0d696a5e6103ad6ee6ccbbbd0b5d3d2d3c5f02505340a885422097eccecb1bf51845658c7938c8f
+DIST pyopencl-2023.1.2.tar.gz 473684 BLAKE2B 3912885395df515f3e935149c0bac618c371b75791ac670d1a2cd25ffe5e3ff1c4d0e82d8a475e26d3280aaa659d900ed7df66b3f6952f54266d3cd2ad3b44c2 SHA512 3414b011f0bd0420df4725904b715d54bad0ae77cb4b8619d8d769cd25b56d44a8d34788c23de80b5da5ae757f38231db980f3abcb2544117b7be7627592bf0e
diff --git a/dev-python/pyopencl/files/pyopencl-2023.1.2_numpy-include-dir.patch b/dev-python/pyopencl/files/pyopencl-2023.1.2_numpy-include-dir.patch
new file mode 100644
index 000000000000..7a5ce5f52bdc
--- /dev/null
+++ b/dev-python/pyopencl/files/pyopencl-2023.1.2_numpy-include-dir.patch
@@ -0,0 +1,16 @@
+--- a/aksetup_helper.py
++++ b/aksetup_helper.py
+@@ -43,11 +43,8 @@
+
+
+ def get_numpy_incpath():
+- from imp import find_module
+- # avoid actually importing numpy, it screws up distutils
+- file, pathname, descr = find_module("numpy")
+- from os.path import join
+- return join(pathname, "core", "include")
++ import numpy as np
++ return np.get_include()
+
+
+ class NumpyExtension(Extension):
diff --git a/dev-python/pyopencl/pyopencl-2023.1.2.ebuild b/dev-python/pyopencl/pyopencl-2023.1.2.ebuild
new file mode 100644
index 000000000000..b25bb0a7ec5d
--- /dev/null
+++ b/dev-python/pyopencl/pyopencl-2023.1.2.ebuild
@@ -0,0 +1,76 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..12} )
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+
+inherit distutils-r1 multiprocessing pypi
+
+DESCRIPTION="Python wrapper for OpenCL"
+HOMEPAGE="
+ https://mathema.tician.de/software/pyopencl/
+ https://pypi.org/project/pyopencl/
+"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc64 ~riscv"
+IUSE="examples opengl"
+
+# Running tests on GPUs requires both appropriate hardware and additional permissions
+# having been granted to the user running them. Testing on CPUs with dev-libs/pocl
+# is in theory possible but has been found to be very fragile, see e.g. Bug #872308.
+RESTRICT="test"
+
+COMMON=">=virtual/opencl-2"
+# libglvnd is only needed for the headers
+DEPEND="${COMMON}
+ opengl? ( media-libs/libglvnd )"
+RDEPEND="${COMMON}
+ >=dev-python/mako-0.3.6[${PYTHON_USEDEP}]
+ dev-python/numpy[${PYTHON_USEDEP}]
+ >=dev-python/platformdirs-2.2.0[${PYTHON_USEDEP}]
+ >=dev-python/pytools-2021.2.7[${PYTHON_USEDEP}]"
+BDEPEND="dev-python/numpy[${PYTHON_USEDEP}]
+ >=dev-python/pybind11-2.5.0[${PYTHON_USEDEP}]
+ test? ( dev-libs/pocl )"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-2023.1.2_numpy-include-dir.patch
+)
+
+distutils_enable_tests pytest
+
+python_configure_all() {
+ local myconf=()
+ if use opengl; then
+ myconf+=(--cl-enable-gl)
+ fi
+
+ "${EPYTHON}" configure.py \
+ "${myconf[@]}"
+}
+
+python_test() {
+ # Use dev-libs/pocl for testing; ignore any other OpenCL devices that might be present
+ local -x PYOPENCL_TEST="portable:pthread"
+ # Set the number of threads to match MAKEOPTS
+ local -x POCL_MAX_PTHREAD_COUNT=$(makeopts_jobs)
+ # Change to the 'test' directory so that python does not try to import pyopencl from the source directory
+ # (Importing from the source directory fails, because the compiled '_cl' module is only in the build directory)
+ pushd test >/dev/null || die
+ epytest
+ popd >/dev/null || die
+}
+
+python_install_all() {
+ if use examples; then
+ dodoc -r examples
+ docompress -x /usr/share/doc/${PF}/examples
+ fi
+
+ distutils-r1_python_install_all
+}