diff options
| author | Michał Górny <mgorny@gentoo.org> | 2025-11-17 13:58:40 +0100 |
|---|---|---|
| committer | Michał Górny <mgorny@gentoo.org> | 2025-11-17 14:45:41 +0100 |
| commit | 924c8a0ad64d8513c3722e4983afca2d3cec0fa7 (patch) | |
| tree | 3bb2c3bbab7c01bbab446d505ac2213bd2bbe7dc /dev-python/numpy | |
| parent | 6f41f67a9a27e561960e62664c395b988826e170 (diff) | |
| download | gentoo-924c8a0ad64d8513c3722e4983afca2d3cec0fa7.tar.gz gentoo-924c8a0ad64d8513c3722e4983afca2d3cec0fa7.tar.bz2 gentoo-924c8a0ad64d8513c3722e4983afca2d3cec0fa7.zip | |
dev-python/numpy: Bump to 2.3.5
Signed-off-by: Michał Górny <mgorny@gentoo.org>
Diffstat (limited to 'dev-python/numpy')
| -rw-r--r-- | dev-python/numpy/Manifest | 2 | ||||
| -rw-r--r-- | dev-python/numpy/numpy-2.3.5.ebuild | 358 |
2 files changed, 360 insertions, 0 deletions
diff --git a/dev-python/numpy/Manifest b/dev-python/numpy/Manifest index 1ff253e65f07..e862320b59f2 100644 --- a/dev-python/numpy/Manifest +++ b/dev-python/numpy/Manifest @@ -5,3 +5,5 @@ DIST numpy-2.3.2.tar.gz 20489306 BLAKE2B 66a683a62daf3971c01a484d6e8c56e592744b9 DIST numpy-2.3.3.tar.gz 20576648 BLAKE2B 285c3ea4852618c9a7af339f117b12e06c736a765c6b97437ac8b2c0c02085126a89cc8d6d9e0e6f7d5ebb69d63a972c1619bf6c407197882e01c7cddfb8d79b SHA512 5555f68d75342054c240695a7a7aaaaec09c45e04965b4100732a7f8f49f53a203ec438e35c12040481d6ee9f4649e43c83ac96fdc08526cdcf93463b9fe7bd9 DIST numpy-2.3.4.tar.gz 20582187 BLAKE2B 268754c3e50049a9a3c8a9d5bc3159a7bf635bf62ceacfd46c51cd860dbcbad6bbe790f13ea9f2ba8292e0ea3eedb4d597e4a97060cba57cd5daa263b2fe2a31 SHA512 62d1b2be15e8b23487d384438bbffa26c1bd25ee7b800f4f7cbe3cff3f7d196329efdfdd08e66acc557cea050cc125437ca621cd84a9d06aab497060ab36949a DIST numpy-2.3.4.tar.gz.provenance 9933 BLAKE2B f25013995927114ba965e6297725d3d0cfdf70a2080e90c05b7297c8451b1cfe6a03bf81dc9cfb678e64ec4eaf0ec7fd3892fdf2ebb75ddb052bbf451b44870f SHA512 1689825964ca90f5af3ff2493df889b61b8ec4ca6e36b8c8ab1fede5ddac8f2606109c9434163dde92e9a6f0b0f7f2c328ffb322dc8f19b69b5de4a1c5a35cd7 +DIST numpy-2.3.5.tar.gz 20584950 BLAKE2B a203d249631a49c8a28d8b81fb395d41f40c02c32955014c9010fd887bbd29631a94bf0f781a16a3b84fdde740c7728a5bfdcf4489e2c82b17c7f9cf2f641230 SHA512 055e5c0363e1e6d75e514b2f3a2dbbf830a0172a1381f3872b68cc4605bfafae91afcab37b710d12379488eba343fad7aeeb466ea23fa45d1d817a33aefe75fe +DIST numpy-2.3.5.tar.gz.provenance 9651 BLAKE2B 51039d094df01b45dfc013deb5149d6788869b5d36f187acd3048e9c5c7fca06c2d90e074633cd4a434d83112898a64a04e1b031760cbf5ad11f824f9384e588 SHA512 a86367d78e782148c3278fbc45b996a31d73ea5750bfee4599b6b06797ec196b9c8d25773efd7896e128900be9cf325d3ba8d0edae3701d1907626ee3d92e54c diff --git a/dev-python/numpy/numpy-2.3.5.ebuild b/dev-python/numpy/numpy-2.3.5.ebuild new file mode 100644 index 000000000000..1ca2e5ad0230 --- /dev/null +++ b/dev-python/numpy/numpy-2.3.5.ebuild @@ -0,0 +1,358 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_EXT=1 +DISTUTILS_USE_PEP517=meson-python +PYPI_VERIFY_REPO=https://github.com/numpy/numpy-release +PYTHON_COMPAT=( python3_{11..14} pypy3_11 ) +PYTHON_REQ_USE="threads(+)" +FORTRAN_NEEDED=lapack + +inherit distutils-r1 flag-o-matic fortran-2 pypi + +DESCRIPTION="Fast array and numerical python library" +HOMEPAGE=" + https://numpy.org/ + https://github.com/numpy/numpy/ + https://pypi.org/project/numpy/ +" + +LICENSE="BSD" +SLOT="0/2" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +# +lapack because the internal fallbacks are pretty slow. Building without blas +# is barely supported anyway, see bug #914358. +IUSE="big-endian +cpudetection index64 +lapack" + +# upstream-flag[:gentoo-flag] +ARM_FLAGS=( neon{,-fp16} vfpv4 asimd{,hp,dp,fhm} sve ) +PPC_FLAGS=( vsx vsx2 vsx3 vsx4 ) +X86_FLAGS=( + sse{,2,3,4_1,4_2} ssse3 popcnt avx{,2} xop fma{3,4} + f16c avx512{f,cd,pf,er,dq,bw,vl,ifma,vbmi} + avx512_{vpopcntdq,4vnniw,4fmaps,vbmi2,bitalg,fp16,vnni} +) +IUSE+=" + ${ARM_FLAGS[*]/#/cpu_flags_arm_} + ${PPC_FLAGS[*]/#/cpu_flags_ppc_} + ${X86_FLAGS[*]/#/cpu_flags_x86_} +" + +RDEPEND=" + lapack? ( + >=virtual/cblas-3.8[index64(-)?] + >=virtual/lapack-3.8[index64(-)?] + ) +" +BDEPEND=" + ${RDEPEND} + >=dev-build/meson-1.5.2 + >=dev-python/cython-3.0.6[${PYTHON_USEDEP}] + lapack? ( + virtual/pkgconfig + ) + test? ( + $(python_gen_cond_dep ' + >=dev-python/cffi-1.14.0[${PYTHON_USEDEP}] + ' 'python*') + dev-python/charset-normalizer[${PYTHON_USEDEP}] + >=dev-python/pytz-2019.3[${PYTHON_USEDEP}] + ) +" + +QA_CONFIG_IMPL_DECL_SKIP=( + # https://bugs.gentoo.org/925367 + vrndq_f32 +) + +EPYTEST_PLUGINS=( hypothesis pytest-timeout ) +EPYTEST_XDIST=1 +distutils_enable_tests pytest + +PATCHES=( + # https://github.com/numpy/numpy/pull/29459 + "${FILESDIR}"/${PN}-2.3.2-no-detect.patch + # https://github.com/numpy/numpy/pull/29579 + "${FILESDIR}"/${PN}-2.3.2-arm-asimddp.patch +) + +has_all_x86() { + local flag + for flag; do + if ! use "cpu_flags_x86_${flag}"; then + return 1 + fi + done + return 0 +} + +python_configure_all() { + local cpu_baseline=() + local map flag + case ${ARCH} in + arm) + # every flag implies the previous one + for map in NEON:neon NEON_FP16:neon-fp16 NEON_VFPV4:vfpv4; do + if ! use "cpu_flags_arm_${map#*:}"; then + break + fi + cpu_baseline+=( "${map%:*}" ) + done + ;& + arm64) + # on 32-bit ARM, ASIMD implies all NEON* flags + # on 64-bit ARM, they are all linked together + if use arm64 || + [[ ${cpu_baseline[@]} && ${cpu_baseline[-1]} == NEON_VFPV4 ]] + then + cpu_baseline+=( $(usev cpu_flags_arm_asimd ASIMD) ) + fi + + # these two imply ASIMD + if [[ ${cpu_baseline[@]} && ${cpu_baseline[-1]} == ASIMD ]]; then + for flag in dp hp; do + cpu_baseline+=( + $(usev "cpu_flags_arm_asimd${flag}" "ASIMD${flag^^}") + ) + done + fi + + # these two imply ASIMDHP + if [[ ${cpu_baseline[@]} && ${cpu_baseline[-1]} == ASIMDHP ]]; then + for flag in asimdfhm sve; do + cpu_baseline+=( + $(usev "cpu_flags_arm_${flag}" "${flag^^}") + ) + done + fi + ;; + ppc64) + # every flag implies the previous one + for flag in '' 2 3 4; do + if ! use "cpu_flags_ppc_vsx${flags}"; then + break + fi + cpu_baseline+=( "VSX${flag}" ) + done + ;; + amd64|x86) + # every flag implies the previous one + for flag in sse{,2,3} ssse3 sse4_1 popcnt sse4_2 avx; do + if ! use "cpu_flags_x86_${flag}"; then + break + fi + flag=${flag/_} + cpu_baseline+=( "${flag^^}" ) + done + + # these imply AVX + if [[ ${cpu_baseline[@]} && ${cpu_baseline[-1]} == AVX ]]; then + for flag in xop fma4 f16c; do + if use "cpu_flags_x86_${flag}"; then + cpu_baseline+=( "${flag^^}" ) + fi + done + fi + + # another chain started on implying F16C + if [[ ${cpu_baseline[@]} && ${cpu_baseline[-1]} == F16C ]]; then + for flag in fma3 avx2 avx512f avx512cd; do + if ! use "cpu_flags_x86_${flag}"; then + break + fi + cpu_baseline+=( "${flag^^}" ) + done + fi + + if [[ ${cpu_baseline[@]} && ${cpu_baseline[-1]} == AVX512CD ]]; then + # upstream combines multiple instructions into per-CPU sets + local -A avx512_mapping=( + [AVX512_KNL]="avx512pf avx512er" + [AVX512_KNM]="avx512_vpopcntdq avx512_4vnniw avx512_4fmaps" + [AVX512_SKX]="avx512dq avx512bw avx512vl" + [AVX512_CLX]="avx512_vnni" + [AVX512_CNL]="avx512ifma avx512vbmi" + [AVX512_ICL]="avx512_vbmi2 avx512_bitalg" + [AVX512_SPR]="avx512_fp16" + ) + + # 1. AVX512CD -> AVX512_KNL -> AVX512_KNM + if has_all_x86 ${avx512_mapping[AVX512_KNL]}; then + cpu_baseline+=( AVX512_KNL ) + if has_all_x86 ${avx512_mapping[AVX512_KNM]}; then + cpu_baseline+=( AVX512_KNM ) + fi + fi + # 2. AVX512CD -> AVX512_SKX -> [AVX512_CLX, AVX512_CNL] + if has_all_x86 ${avx512_mapping[AVX512_SKX]}; then + cpu_baseline+=( AVX512_SKX ) + if has_all_x86 ${avx512_mapping[AVX512_CLX]}; then + cpu_baseline+=( AVX512_CLX ) + fi + if has_all_x86 ${avx512_mapping[AVX512_CNL]}; then + cpu_baseline+=( AVX512_CNL ) + fi + fi + # 3. [AVX512_CLX, AVX512_CNL] -> AVX512_ICL -> AVX512_SPR + if [[ ${cpu_baseline[-1]} == AVX512_CNL && + ${cpu_baseline[-2]} == AVX512_CLX ]] + then + if has_all_x86 ${avx512_mapping[AVX512_ICL]}; then + cpu_baseline+=( AVX512_ICL ) + if has_all_x86 ${avx512_mapping[AVX512_SPR]}; then + cpu_baseline+=( AVX512_SPR ) + fi + fi + fi + fi + ;; + *) + cpu_baseline=MIN + ;; + esac + + DISTUTILS_ARGS=( + -Dallow-noblas=$(usex !lapack true false) + -Duse-ilp64=$(usex index64 true false) + -Dblas=$(usev lapack $(usex index64 cblas64 cblas)) + -Dlapack=$(usev lapack $(usex index64 lapack64 lapack)) + -Dcpu-baseline="${cpu_baseline[*]}" + -Dcpu-baseline-detect=disabled + # '-XOP -FMA4' is upstream default, since these are deprecated + -Dcpu-dispatch="$(usev cpudetection 'MAX -XOP -FMA4')" + ) + + # bug #922457 + filter-lto + # https://github.com/numpy/numpy/issues/25004 + append-flags -fno-strict-aliasing +} + +python_test() { + # We run tests in parallel, so avoid having n^2 threads in lapack + # tests. + local -x BLIS_NUM_THREADS=1 + local -x MKL_NUM_THREADS=1 + local -x OMP_NUM_THREADS=1 + local -x OPENBLAS_NUM_THREADS=1 + + # don't run tests that require more than 2 GiB of RAM (per process) + local -x NPY_AVAILABLE_MEM="2 GiB" + + local EPYTEST_DESELECT=( + # Very disk-and-memory-hungry + numpy/lib/tests/test_io.py::TestSavezLoad::test_closing_fid + numpy/lib/tests/test_io.py::TestSavezLoad::test_closing_zipfile_after_load + + # Precision problems + numpy/_core/tests/test_umath_accuracy.py::TestAccuracy::test_validate_transcendentals + + numpy/typing/tests/test_typing.py + + # Flaky, reruns don't help + numpy/f2py/tests/test_crackfortran.py + numpy/f2py/tests/test_f2py2e.py::test_gh22819_cli + numpy/f2py/tests/test_data.py::TestData{,F77}::test_crackedlines + ) + + if [[ $(uname -m) == armv8l ]]; then + # Degenerate case of arm32 chroot on arm64, bug #774108 + EPYTEST_DESELECT+=( + numpy/_core/tests/test_cpu_features.py::Test_ARM_Features::test_features + ) + fi + + case ${ARCH} in + arm) + EPYTEST_DESELECT+=( + # TODO: warnings + numpy/_core/tests/test_umath.py::TestSpecialFloats::test_unary_spurious_fpexception + + # TODO + numpy/_core/tests/test_function_base.py::TestLinspace::test_denormal_numbers + numpy/f2py/tests/test_kind.py::TestKind::test_real + numpy/f2py/tests/test_kind.py::TestKind::test_quad_precision + + # require too much memory + 'numpy/_core/tests/test_multiarray.py::TestDot::test_huge_vectordot[complex128]' + 'numpy/_core/tests/test_multiarray.py::TestDot::test_huge_vectordot[float64]' + ) + ;; + hppa) + EPYTEST_DESELECT+=( + # https://bugs.gentoo.org/942689 + "numpy/_core/tests/test_dtype.py::TestBuiltin::test_dtype[int]" + "numpy/_core/tests/test_dtype.py::TestBuiltin::test_dtype[float]" + "numpy/_core/tests/test_dtype.py::TestBuiltin::test_dtype_bytes_str_equivalence[datetime64]" + "numpy/_core/tests/test_dtype.py::TestBuiltin::test_dtype_bytes_str_equivalence[timedelta64]" + "numpy/_core/tests/test_dtype.py::TestBuiltin::test_dtype_bytes_str_equivalence[<f]" + "numpy/_core/tests/test_dtype.py::TestPickling::test_pickle_dtype[dt28]" + numpy/f2py/tests/test_kind.py::TestKind::test_real + numpy/f2py/tests/test_kind.py::TestKind::test_quad_precision + numpy/tests/test_ctypeslib.py::TestAsArray::test_reference_cycles + numpy/tests/test_ctypeslib.py::TestAsArray::test_segmentation_fault + numpy/tests/test_ctypeslib.py::TestAsCtypesType::test_scalar + numpy/tests/test_ctypeslib.py::TestAsCtypesType::test_subarray + numpy/tests/test_ctypeslib.py::TestAsCtypesType::test_structure + numpy/tests/test_ctypeslib.py::TestAsCtypesType::test_structure_aligned + numpy/tests/test_ctypeslib.py::TestAsCtypesType::test_union + numpy/tests/test_ctypeslib.py::TestAsCtypesType::test_padded_union + ) + ;; + ppc|x86) + EPYTEST_DESELECT+=( + # require too much memory + 'numpy/_core/tests/test_multiarray.py::TestDot::test_huge_vectordot[complex128]' + 'numpy/_core/tests/test_multiarray.py::TestDot::test_huge_vectordot[float64]' + ) + ;; + esac + + if [[ ${CHOST} == powerpc64le-* ]]; then + EPYTEST_DESELECT+=( + # long double thingy + numpy/_core/tests/test_scalarprint.py::TestRealScalars::test_ppc64_ibm_double_double128 + ) + fi + + if use big-endian; then + EPYTEST_DESELECT+=( + # ppc64 and sparc + numpy/linalg/tests/test_linalg.py::TestDet::test_generalized_sq_cases + numpy/linalg/tests/test_linalg.py::TestDet::test_sq_cases + "numpy/f2py/tests/test_return_character.py::TestFReturnCharacter::test_all_f77[s1]" + "numpy/f2py/tests/test_return_character.py::TestFReturnCharacter::test_all_f77[t1]" + "numpy/f2py/tests/test_return_character.py::TestFReturnCharacter::test_all_f90[s1]" + "numpy/f2py/tests/test_return_character.py::TestFReturnCharacter::test_all_f90[t1]" + ) + fi + + if ! has_version -b "~${CATEGORY}/${P}[${PYTHON_USEDEP}]" ; then + # depends on importing numpy.random from system namespace + EPYTEST_DESELECT+=( + 'numpy/random/tests/test_extending.py::test_cython' + ) + fi + + if has_version ">=dev-python/setuptools-74[${PYTHON_USEDEP}]"; then + # msvccompiler removal + EPYTEST_DESELECT+=( + numpy/tests/test_public_api.py::test_all_modules_are_expected_2 + numpy/tests/test_public_api.py::test_api_importable + ) + EPYTEST_IGNORE+=( + numpy/distutils/tests/test_mingw32ccompiler.py + numpy/distutils/tests/test_system_info.py + ) + fi + + cd "${BUILD_DIR}/install$(python_get_sitedir)" || die + epytest +} + +python_install_all() { + local DOCS=( LICENSE.txt README.md THANKS.txt ) + distutils-r1_python_install_all +} |
