commit:     5e3534894ed3ab98d7a6782977228b72daebdf53
Author:     Christopher Kerr <chris.kerr <AT> mykolab <DOT> ch>
AuthorDate: Sun Jul 31 09:30:13 2022 +0000
Commit:     Marek Szuba <marecki <AT> gentoo <DOT> org>
CommitDate: Sun Aug 21 01:16:41 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=5e353489

dev-python/pyopencl: Enable FEATURES=test using dev-libs/pocl as OpenCL 
implementation

Use multiprocessing eclass to set thread count based on MAKEOPTS

Closes: https://bugs.gentoo.org/861251
Signed-off-by: Christopher Kerr <chris.kerr <AT> mykolab.ch>
Signed-off-by: Marek Szuba <marecki <AT> gentoo.org>

 dev-python/pyopencl/pyopencl-2022.1.6.ebuild | 25 ++++++++++++++++---------
 1 file changed, 16 insertions(+), 9 deletions(-)

diff --git a/dev-python/pyopencl/pyopencl-2022.1.6.ebuild 
b/dev-python/pyopencl/pyopencl-2022.1.6.ebuild
index 19e2c5a987c8..a1d774b5553c 100644
--- a/dev-python/pyopencl/pyopencl-2022.1.6.ebuild
+++ b/dev-python/pyopencl/pyopencl-2022.1.6.ebuild
@@ -6,7 +6,7 @@ EAPI=8
 PYTHON_COMPAT=( python3_{8..10} )
 DISTUTILS_USE_PEP517=setuptools
 
-inherit distutils-r1
+inherit distutils-r1 multiprocessing
 
 DESCRIPTION="Python wrapper for OpenCL"
 HOMEPAGE="https://mathema.tician.de/software/pyopencl/
@@ -29,15 +29,10 @@ RDEPEND="${COMMON}
        >=dev-python/pytools-2021.2.7[${PYTHON_USEDEP}]"
 BDEPEND="dev-python/numpy[${PYTHON_USEDEP}]
        >=dev-python/pybind11-2.5.0[${PYTHON_USEDEP}]
-       <dev-python/pybind11-2.10.0[${PYTHON_USEDEP}]"
+       <dev-python/pybind11-2.10.0[${PYTHON_USEDEP}]
+       test? ( dev-libs/pocl )"
 
-# The test suite fails if there are no OpenCL platforms available, and
-# even if there is one (which requires the presence of both an OpenCL
-# runtime *and* hardware supported by it - simply emerging any runtime
-# is not enough) the vast majority of tests end up skipped because by
-# default the portage user hasn't got sufficient privileges to talk
-# to the GPU.
-RESTRICT="test"
+distutils_enable_tests pytest
 
 python_configure_all() {
        local myconf=()
@@ -49,6 +44,18 @@ python_configure_all() {
                "${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

Reply via email to