%global with_mpich 1 %global MPICH 1 %global OPENMPI 1 %global FULLTESTS 0 Name: mpi4py Version: 4.0.1 Release: 1 Summary: Python bindings of the Message Passing Interface (MPI) License: BSD-2-Clause URL: https://mpi4py.readthedocs.io/en/stable/ Source0: https://github.com/mpi4py/mpi4py/archive/%{version}/%{name}-%{version}.tar.gz ExcludeArch: %{ix86} BuildRequires: python%{python3_pkgversion}-devel BuildRequires: python%{python3_pkgversion}-setuptools BuildRequires: python%{python3_pkgversion}-Cython BuildRequires: environment-modules %global _description %{expand: This package is constructed on top of the MPI-1/MPI-2 specification and provides an object oriented interface which closely follows MPI-2 C++ bindings. It supports point-to-point (sends, receives) and collective (broadcasts, scatters, gathers) communications of any picklable Python object as well as optimized communications of Python object exposing the single-segment buffer interface (NumPy arrays, built-in bytes/string/array objects).} %description %_description %package docs Summary: Documentation for %{name} Requires: %{name}-common = %{version}-%{release} BuildArch: noarch %description docs This package contains the documentation and examples for %{name}. %package -n python%{python3_pkgversion}-mpi4py Requires: %{name}-common = %{version}-%{release} Summary: Python %{python3_version} bindings of the Message Passing Interface (MPI) %{?python_provide:%python_provide python%{python3_pkgversion}-mpi4py} %description -n python%{python3_pkgversion}-mpi4py %_description %package -n python%{python3_pkgversion}-mpi4py-openmpi BuildRequires: openmpi-devel Requires: %{name}-common = %{version}-%{release} Requires: python%{python3_pkgversion}-openmpi%{?_isa} Summary: Python %{python3_version} bindings of MPI, Open MPI version Provides: python%{python3_pkgversion}-mpi4py-runtime = %{version}-%{release} %{?python_provide:%python_provide python%{python3_pkgversion}-mpi4py-openmpi} %description -n python%{python3_pkgversion}-mpi4py-openmpi %_description This package contains %{name} compiled against Open MPI. %if %{with_mpich} %package -n python%{python3_pkgversion}-mpi4py-mpich BuildRequires: mpich-devel Requires: %{name}-common = %{version}-%{release} Requires: python%{python3_pkgversion}-mpich%{?_isa} Summary: Python %{python3_version} bindings of MPI, MPICH version Provides: python%{python3_pkgversion}-mpi4py-runtime = %{version}-%{release} Provides: python%{python3_pkgversion}-%{name}-mpich2 = %{version}-%{release} Obsoletes: python%{python3_pkgversion}-%{name}-mpich2 < 1.3-8 %{?python_provide:%python_provide python%{python3_pkgversion}-mpi4py-mpich} %description -n python%{python3_pkgversion}-mpi4py-mpich %_description This package contains %{name} compiled against MPICH. %endif %package common Summary: Common files for mpi4py packages BuildArch: noarch Requires: %{name}-common = %{version}-%{release} %description common This package contains the license file shared between the subpackages of %{name}. %prep %autosetup -p1 %{?commit:-n %{name}-%{name}-%{shortcommit}} rm -r docs/source for file in $(find | grep runtests.bat); do sed -i 's/\r//' $file done cp src/mpi4py/__init__.py .__init__mpich.py cp src/mpi4py/__init__.py .__init__openmpi.py python3 conf/cythonize.py %build export CC=mpicc export CXX=mpicxx %{_openmpi_load} %{_libdir}/openmpi/bin/ompi_info cp .__init__openmpi.py src/mpi4py/__init__.py %py3_build mv build openmpi %{_openmpi_unload} %if %{with_mpich} %{_mpich_load} cp .__init__mpich.py src/mpi4py/__init__.py %py3_build mv build mpich %{_mpich_unload} %endif %install %{_openmpi_load} cp .__init__openmpi.py src/mpi4py/__init__.py mv openmpi build %py3_install mkdir -p %{buildroot}%{python3_sitearch}/openmpi mv %{buildroot}%{python3_sitearch}/%{name}/ %{buildroot}%{python3_sitearch}/%{name}*.egg-info %{buildroot}%{python3_sitearch}/openmpi mv build openmpi %{_openmpi_unload} %if %{with_mpich} %{_mpich_load} cp .__init__mpich.py src/mpi4py/__init__.py mv mpich build %py3_install mkdir -p %{buildroot}%{python3_sitearch}/mpich mv %{buildroot}%{python3_sitearch}/%{name}/ %{buildroot}%{python3_sitearch}/%{name}*.egg-info %{buildroot}%{python3_sitearch}/mpich mv build mpich %{_mpich_unload} %endif %files common %license LICENSE.rst %doc CHANGES.rst DESCRIPTION.rst README.rst %files -n python%{python3_pkgversion}-mpi4py-openmpi %{python3_sitearch}/openmpi/%{name}-*.egg-info %{python3_sitearch}/openmpi/%{name} %if %{with_mpich} %files -n python%{python3_pkgversion}-mpi4py-mpich %{python3_sitearch}/mpich/%{name}-*.egg-info %{python3_sitearch}/mpich/%{name} %endif %files docs %doc docs/* demo %changelog * Tue Aug 5 2025 mimanchiok - 4.0.1-1 - Update to 4.0.1 * Fri Apr 15 2022 tanyulong - 3.1.3-2 - rebuild * Thu Mar 24 2022 tanyulong - 3.1.3-1 - init package for openEuler