diff options
author | Marek Szuba <marecki@gentoo.org> | 2023-08-20 17:50:34 +0100 |
---|---|---|
committer | Marek Szuba <marecki@gentoo.org> | 2023-08-20 17:50:38 +0100 |
commit | 85d4a5c8f4fc13d77a81e857447ef92a86e89097 (patch) | |
tree | 9dea97cfac61b7d6383b985ae58a3b0754d74cc6 /dev-python/pyopencl | |
parent | dev-python/poetry-plugin-export: Bump to 1.5.0 (diff) | |
download | gentoo-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/Manifest | 1 | ||||
-rw-r--r-- | dev-python/pyopencl/files/pyopencl-2023.1.2_numpy-include-dir.patch | 16 | ||||
-rw-r--r-- | dev-python/pyopencl/pyopencl-2023.1.2.ebuild | 76 |
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 +} |