# Copyright 1999-2026 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 DISTUTILS_EXT=1 DISTUTILS_USE_PEP517=scikit-build-core PYPI_VERIFY_REPO=https://github.com/inducer/pyopencl PYTHON_COMPAT=( python3_{12..14} ) inherit distutils-r1 multiprocessing pypi DESCRIPTION="Python wrapper for OpenCL" HOMEPAGE=" https://mathema.tician.de/software/pyopencl/ https://github.com/inducer/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-2025.1.6[${PYTHON_USEDEP}] " BDEPEND=" dev-python/numpy[${PYTHON_USEDEP}] dev-python/nanobind[${PYTHON_USEDEP}] test? ( dev-libs/pocl ) " PATCHES=( "${FILESDIR}"/${PN}-2025.1-nanobind-flags.patch ) EPYTEST_PLUGINS=() EPYTEST_XDIST=1 distutils_enable_tests pytest python_configure_all() { DISTUTILS_ARGS=( -DPYOPENCL_ENABLE_GL=$(usex opengl) ) } python_test() { # Use dev-libs/pocl for testing; ignore any other OpenCL devices that might be present local -x PYOPENCL_TEST="portable:cpu" # Set the number of threads to match MAKEOPTS local -x POCL_MAX_PTHREAD_COUNT=$(makeopts_jobs) rm -rf pyopencl || die epytest } python_install_all() { if use examples; then dodoc -r examples docompress -x /usr/share/doc/${PF}/examples fi distutils-r1_python_install_all }