From: Trevor Gamblin Date: Tue, 29 Apr 2025 18:38:01 +0000 (-0400) Subject: python3-numpy: fix ptests X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7f0b5e8faa1b246531ac425c99a629eb344b21e2;p=thirdparty%2Fopenembedded%2Fopenembedded-core-contrib.git python3-numpy: fix ptests Fix the numpy ptests by doing the following: - Add meson to ptest RDEPENDS in the recipe; - Add python3-unittest-automake-output as a ptest RDEPENDS; - Convert run-ptest to a shell script that sets PYTEST_DEBUG_TEMPROOT to a directory inside the same path that contains the script, create that directory, and then invoke the tests with `pytest --automake` pointed at the numpy path in site-packages (copying the tests into the normal PTEST_DIRECTORY seems to cause module import breakages in some tests). This also includes skipping two problematic tests which require a C compiler and use up a lot of space, respectively; - Set 'IMAGE_ROOTFS_EXTRA_SPACE = "3048576"' for python3-numpy in core-image-ptest.bb; - Also set 'QB_MEM:virtclass-mcextend-python3-numpy = "-m 4096"' in core-image-ptest.bb; - Move python3-numpy from the PTESTS_PROBLEMS list to the PTESTS_SLOW one. Results on qemux86-64: Testsuite summary DURATION: 87 END: /usr/lib/python3-numpy/ptest 2025-04-29T17:35 STOP: ptest-runner TOTAL: 1 FAIL: 0 Note that many of the skipped tests are due to the absence of python3-mypy (which is currently in meta-python) and of a Fortran compiler. Signed-off-by: Trevor Gamblin Signed-off-by: Richard Purdie --- diff --git a/meta/conf/distro/include/ptest-packagelists.inc b/meta/conf/distro/include/ptest-packagelists.inc index f3fdededf6..51b29cf17e 100644 --- a/meta/conf/distro/include/ptest-packagelists.inc +++ b/meta/conf/distro/include/ptest-packagelists.inc @@ -120,6 +120,7 @@ PTESTS_SLOW = "\ python3-cffi \ python3-click \ python3-cryptography \ + python3-numpy \ python3-xmltodict \ strace \ tar \ @@ -143,7 +144,6 @@ PTESTS_SLOW:append:libc-musl = " libc-test" # libpam \ # Needs pam DISTRO_FEATURE # mdadm \ # tests are flaky in AB. # numactl \ # qemu not (yet) configured for numa; all tests are skipped -# python3-numpy \ # requires even more RAM and (possibly) disk space; multiple failures PTESTS_PROBLEMS = "\ ruby \ @@ -155,5 +155,4 @@ PTESTS_PROBLEMS = "\ mdadm \ numactl \ python3-license-expression \ - python3-numpy \ " diff --git a/meta/recipes-core/images/core-image-ptest.bb b/meta/recipes-core/images/core-image-ptest.bb index a0ff8d9528..73270d1067 100644 --- a/meta/recipes-core/images/core-image-ptest.bb +++ b/meta/recipes-core/images/core-image-ptest.bb @@ -27,11 +27,15 @@ IMAGE_ROOTFS_EXTRA_SPACE:virtclass-mcextend-lttng-tools = "1524288" # tar-ptest in particular needs more space IMAGE_ROOTFS_EXTRA_SPACE:virtclass-mcextend-tar = "1524288" +# python3-numpy-ptest requires a lot of extra space +IMAGE_ROOTFS_EXTRA_SPACE:virtclass-mcextend-python3-numpy = "3048576" + # ptests need more memory than standard to avoid the OOM killer QB_MEM = "-m 1024" QB_MEM:virtclass-mcextend-lttng-tools = "-m 4096" QB_MEM:virtclass-mcextend-python3 = "-m 2048" QB_MEM:virtclass-mcextend-python3-cryptography = "-m 5100" +QB_MEM:virtclass-mcextend-python3-numpy = "-m 4096" QB_MEM:virtclass-mcextend-tcl = "-m 5100" TEST_SUITES = "ping ssh parselogs ptest" diff --git a/meta/recipes-devtools/python/python3-numpy/run-ptest b/meta/recipes-devtools/python/python3-numpy/run-ptest index 9a1c72aeb1..6e76dffc59 100644 --- a/meta/recipes-devtools/python/python3-numpy/run-ptest +++ b/meta/recipes-devtools/python/python3-numpy/run-ptest @@ -1,5 +1,15 @@ -#!/usr/bin/env python3 +#!/bin/sh -import numpy -numpy.test(label='full', verbose=2) +# By default, numpy will use /tmp as the root path for temporary files used +# during tests, but if this is a tmpfs it may fill up quickly and cause many of +# the tests to report "no space left on device" errors. Create a custom +# directory for these and point pytest at it so we can take advantage of the +# storage provided in the rootfs. +export PYTEST_DEBUG_TEMPROOT="/usr/lib/python3-numpy/ptest/tmp" +mkdir -p "$PYTEST_DEBUG_TEMPROOT" +# test_mem_policy fails if there's no C compiler present, but we don't want to +# include gcc as a ptest dependency, so skip that. test_big_arrays uses up a +# large amount of storage, so skip that too. +pytest --automake -m "not slow" -k "not test_mem_policy and not test_big_arrays" /usr/lib/python3.*/site-packages/numpy +rm -rf "$PYTEST_DEBUG_TEMPROOT" diff --git a/meta/recipes-devtools/python/python3-numpy_2.2.5.bb b/meta/recipes-devtools/python/python3-numpy_2.2.5.bb index c6a37c0a85..f963e15b83 100644 --- a/meta/recipes-devtools/python/python3-numpy_2.2.5.bb +++ b/meta/recipes-devtools/python/python3-numpy_2.2.5.bb @@ -41,32 +41,36 @@ FILES:${PN}-staticdev += "${PYTHON_SITEPACKAGES_DIR}/numpy/_core/lib/*.a \ " # install what is needed for numpy.test() -RDEPENDS:${PN} = "python3-unittest \ +RDEPENDS:${PN} = "\ + python3-compression \ + python3-ctypes \ + python3-datetime \ python3-difflib \ - python3-pprint \ - python3-pickle \ - python3-shell \ python3-doctest \ - python3-datetime \ + python3-email \ + python3-json \ python3-misc \ python3-mmap \ + python3-multiprocessing \ python3-netclient \ python3-numbers \ - python3-pydoc \ + python3-pickle \ python3-pkgutil \ - python3-email \ - python3-compression \ - python3-ctypes \ + python3-pprint \ + python3-pydoc \ + python3-shell \ python3-threading \ - python3-multiprocessing \ - python3-json \ + python3-unittest \ " -RDEPENDS:${PN}-ptest += "python3-pytest \ +RDEPENDS:${PN}-ptest += "\ + ldd \ + meson \ python3-hypothesis \ - python3-sortedcontainers \ + python3-pytest \ python3-resource \ + python3-sortedcontainers \ python3-typing-extensions \ - ldd \ + python3-unittest-automake-output \ " BBCLASSEXTEND = "native nativesdk"