python3.14-numpy/python3.14-numpy.spec
2025-11-28 11:52:40 +01:00

257 lines
9.1 KiB
RPMSpec

%global python3_pkgversion 3.14
#uncomment next line for a release candidate or a beta
#%%global relc rc1
# Simple way to disable tests
# RHEL: Tests disabled due to missing dependencies
%if 0%{?flatpak} || 0%{?rhel} || 0%{?fedora}
%bcond_with tests
%else
%bcond_without tests
%endif
%if 0%{?fedora} >= 33 || 0%{?rhel} >= 9
%global blaslib flexiblas
%global blasvar %{nil}
%else
%global blaslib openblas
%global blasvar p
%endif
%global modname numpy
Name: python%{python3_pkgversion}-numpy
Version: 2.3.2
Release: 2%{?dist}
Summary: A fast multidimensional array facility for Python
# Everything is BSD-3-Clause except...
# numpy/core/include/numpy/libdivide: Zlib OR BSL-1.0
# numpy/core/src/multiarray/dragon4.*: MIT
# numpy/random/src/mt19937/randomkit.h: MIT
# numpy/random/src/pcg64: MIT AND Apache-2.0
# numpy/random/src/sfc64: MIT
License: BSD-3-Clause AND MIT AND Apache-2.0 AND (Zlib OR BSL-1.0)
URL: http://www.numpy.org/
Source0: https://github.com/%{modname}/%{modname}/releases/download/v%{version}/%{modname}-%{version}.tar.gz
# https://github.com/numpy/numpy/pull/28748
#Patch: Support-Python-3.14.patch
BuildRequires: python%{python3_pkgversion}-devel
BuildRequires: gcc-gfortran gcc gcc-c++
BuildRequires: lapack-devel
%if 0%{?fedora}
BuildRequires: libdivide-devel
%endif
BuildRequires: ninja-build
%if %{with tests}
BuildRequires: python%{python3_pkversion}-hypothesis
BuildRequires: python%{python3_pkversion}-pytest
BuildRequires: python%{python3_pkversion}-test
BuildRequires: python%{python3_pkgversion}-typing-extensions
%endif
BuildRequires: %{blaslib}-devel
BuildRequires: chrpath
# Upstream does not support splitting out f2py
# https://github.com/numpy/numpy/issues/28016
# https://bugzilla.redhat.com/show_bug.cgi?id=2332307
Requires: python%{python3_pkgversion}-numpy-f2py%{?_isa} = %{version}-%{release}
%if !0%{?fedora}
Provides: bundled(libdivide) = 3.0
%endif
%description
NumPy is a general-purpose array-processing package designed to
efficiently manipulate large multi-dimensional arrays of arbitrary
records without sacrificing too much speed for small multi-dimensional
arrays. NumPy is built on the Numeric code base and adds features
introduced by numarray as well as an extended C-API and the ability to
create arrays of arbitrary type.
There are also basic facilities for discrete fourier transform,
basic linear algebra and random number generation. Also included in
this package is a version of f2py that works properly with NumPy.
%package -n python%{python3_pkgversion}-numpy-f2py
Summary: f2py for numpy
Requires: python%{python3_pkgversion}-numpy%{?_isa} = %{version}-%{release}
Requires: python%{python3_pkgversion}-devel
Provides: python%{python3_pkgversion}-f2py = %{version}-%{release}
%description -n python%{python3_pkgversion}-numpy-f2py
This package includes a version of f2py that works properly with NumPy.
%prep
%autosetup -n %{modname}-%{version} -p1
# The bundled meson searches for cython or cython3 command. We add cython-3.X:
sed -i "s/\['cython', 'cython3'\]/\['cython', 'cython3', 'cython-3.14'\]/" vendored-meson/meson/mesonbuild/compilers/detect.py
# openblas is provided by flexiblas by default; otherwise,
# Use openblas pthreads as recommended by upstream (see comment in site.cfg.example)
cat >> site.cfg <<EOF
[openblas]
libraries = %{blaslib}%{blasvar}
library_dirs = %{_libdir}
EOF
%if 0%{?fedora}
# Unbundle libdivide
sed -i 's,"numpy/libdivide/libdivide.h",<libdivide.h>,' \
numpy/_core/src/umath/loops.c.src
%endif
%generate_buildrequires
%pyproject_buildrequires -R -Csetup-args=-Dblas=flexiblas -Csetup-args=-Dlapack=lapack
%build
%set_build_flags
# Allow libdivide to use vector instructions where possible
%ifarch x86_64
%if 0%{?rhel} > 9
# x86_64-v3
sed -i '/libdivide\.h/i#define LIBDIVIDE_AVX2' numpy/_core/src/umath/loops.c.src
%else
# x86_64-v1 or x86_64-v2
sed -i '/libdivide\.h/i#define LIBDIVIDE_SSE2' numpy/_core/src/umath/loops.c.src
%endif
%elifarch aarch64
sed -i '/libdivide\.h/i#define LIBDIVIDE_NEON' numpy/_core/src/umath/loops.c.src
%endif
#fix flags for ELN ppc64le
%if 0%{?rhel} >= 10
%ifarch ppc64le
find . -type f -print0 | xargs -0 sed -i s/mcpu=power8/mcpu=power9/
%endif
%endif
%pyproject_wheel -Csetup-args=-Dblas=flexiblas -Csetup-args=-Dlapack=lapack -Ccompile-args=-v
%install
%pyproject_install
pushd %{buildroot}%{_bindir} &> /dev/null
# Remove unversioned binaries
mv f2py f2py%{python3_pkgversion}
popd &> /dev/null
%if 0%{?fedora}
rm %{buildroot}%{python3_sitearch}/numpy/_core/include/numpy/random/libdivide.h
%endif
%check
%if %{with tests}
export PYTHONPATH=%{buildroot}%{python3_sitearch}
# test_ppc64_ibm_double_double128 is unnecessary now that ppc64le has switched long doubles to IEEE format.
# https://github.com/numpy/numpy/issues/21094
%ifarch %{ix86}
# Weird RuntimeWarnings on i686, similar to https://github.com/numpy/numpy/issues/13173
# Some tests also overflow on 32bit
%global ix86_k and not test_vector_matrix_values and not test_matrix_vector_values and not test_identityless_reduction_huge_array and not (TestKind and test_all)
%endif
%ifarch riscv64
# These two tests will always fail in RISC-V
# See https://github.com/numpy/numpy/pull/25246
# Patch from http://fedora.riscv.rocks:3000/rpms/numpy/commit/b34bc42e3455b5b070d96e041ef0a5303bdc8f6c
%global riscv64_k and not test_fpclass and not test_fp_noncontiguous and not (TestBoolCmp and test_float)
%endif
# test_deprecate_... fail on Python 3.13+ due to docstrings being dedented
# Upstream has removed the tests in git HEAD.
%if v"0%{python3_version}" >= v"3.13"
%global py313_k and not test_deprecate_help_indentation and not test_deprecate_preserve_whitespace
%endif
%ifnarch %{ix86}
%{__python3} runtests.py --no-build -- -ra -k 'not test_ppc64_ibm_double_double128 %{?ix86_k} %{?riscv64_k} %{?py313_k}' \
-W "ignore:pkg_resources is deprecated as an API::pkg_resources"
%endif
%endif
%files -n python%{python3_pkgversion}-numpy
%license LICENSE.txt
%doc THANKS.txt
%{python3_sitearch}/%{modname}/__pycache__
%{_bindir}/numpy-config
%dir %{python3_sitearch}/%{modname}
%{python3_sitearch}/%{modname}/*.py*
%{python3_sitearch}/%{modname}/char
%{python3_sitearch}/%{modname}/ctypeslib
%{python3_sitearch}/%{modname}/core
%{python3_sitearch}/%{modname}/doc
%{python3_sitearch}/%{modname}/fft
%{python3_sitearch}/%{modname}/lib
%{python3_sitearch}/%{modname}/linalg
%{python3_sitearch}/%{modname}/ma
%{python3_sitearch}/%{modname}/random
%{python3_sitearch}/%{modname}/rec
%{python3_sitearch}/%{modname}/strings
%{python3_sitearch}/%{modname}/testing
%{python3_sitearch}/%{modname}/tests
%{python3_sitearch}/%{modname}/matrixlib
%{python3_sitearch}/%{modname}/polynomial
%{python3_sitearch}/%{modname}-*.dist-info
%{python3_sitearch}/%{modname}/__init__.pxd
%{python3_sitearch}/%{modname}/__init__.cython-30.pxd
%{python3_sitearch}/%{modname}/py.typed
%{python3_sitearch}/%{modname}/typing/
%{python3_sitearch}/%{modname}/_core/
%{python3_sitearch}/%{modname}/_pyinstaller/
%{python3_sitearch}/%{modname}/_typing/
%{python3_sitearch}/%{modname}/_utils/
%files -n python%{python3_pkgversion}-numpy-f2py
%{_bindir}/f2py%{python3_version}
%{python3_sitearch}/%{modname}/f2py
%changelog
* Thu Oct 23 2025 Tomáš Hrnčiar <thrnciar@redhat.com> - 2.3.4-1
- Initial import
- Fedora contributions by:
Benjamin A. Beasley <code@musicinmybrain.net>
Bill Nottingham <notting@fedoraproject.org>
Charalampos Stratakis <cstratak@redhat.com>
Christian Dersch <lupinix@mailbox.org>
Dan Horák <dan@danny.cz>
David Malcolm <dmalcolm@redhat.com>
David Tardon <dtardon@redhat.com>
Deji Akingunola <deji@fedoraproject.org>
Dennis Gilmore <dennis@ausil.us>
dmalcolm <dmalcolm@fedoraproject.org>
Elliott Sales de Andrade <quantum.analyst@gmail.com>
Gwyn Ciesla <gwync@protonmail.com>
Ignacio Vazquez-Abrams <ivazquez@fedoraproject.org>
Iñaki Úcar <iucar@fedoraproject.org>
Iryna Shcherbina <shcherbina.iryna@gmail.com>
Jarod Wilson <jwilson@fedoraproject.org>
Jaromir Capik <jcapik@redhat.com>
Jef Spaleta <jspaleta@fedoraproject.org>
Jerry James <loganjerry@gmail.com>
Jesse Keating <jkeating@fedoraproject.org>
Kalev Lember <klember@redhat.com>
Karolina Surma <ksurma@redhat.com>
Lukáš Zaoral <lzaoral@redhat.com>
Lumir Balhar <lbalhar@redhat.com>
Merlin Mathesius <mmathesi@redhat.com>
Miro Hrončok <miro@hroncok.cz>
Nikola Forró <nforro@redhat.com>
Orion Poplawski <orion@nwra.com>
Pavel Šimovec <psimovec@redhat.com>
Peter Robinson <pbrobinson@gmail.com>
Robert Kuska <rkuska@redhat.com>
Scott Talbert <swt@techie.net>
Simone Caronni <negativo17@gmail.com>
Songsong Zhang <u2fsdgvkx1@gmail.com>
Thomas Spura <thomas.spura@gmail.com>
Tomáš Hrnčiar <thrnciar@redhat.com>
Tomas Orsava <torsava@redhat.com>
Tomas Tomecek <ttomecek@redhat.com>
Tulio Magno Quites Machado Filho <tuliom@redhat.com>
Ville Skyttä <scop@fedoraproject.org>
Yaakov Selkowitz <yselkowi@redhat.com>