diff --git a/mpi4py-3.1.4.tar.gz b/mpi4py-3.1.4.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..eeb14cfd68b91cdf41230cc3ee2e91e7fcd0059d Binary files /dev/null and b/mpi4py-3.1.4.tar.gz differ diff --git a/mpi4py.spec b/mpi4py.spec new file mode 100644 index 0000000000000000000000000000000000000000..255484f14d8416ca4f8c15a76e79c72b973e2381 --- /dev/null +++ b/mpi4py.spec @@ -0,0 +1,163 @@ +%define anolis_release 1 + +%global with_mpich 1 + +Name: mpi4py +Version: 3.1.4 +Release: %{anolis_release}%{?dist} +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 + +BuildRequires: python%{python3_pkgversion}-devel +BuildRequires: python%{python3_pkgversion}-setuptools +BuildRequires: python%{python3_pkgversion}-Cython >= 0.22 +# For testing +BuildRequires: python%{python3_pkgversion}-numpy +BuildRequires: python%{python3_pkgversion}-simplejson +BuildRequires: python%{python3_pkgversion}-yaml +BuildRequires: python%{python3_pkgversion}-dill + +%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 +rm -r docs/source + +# work around "wrong-file-end-of-line-encoding" +for file in $(find | grep runtests.bat); do + sed -i 's/\r//' $file +done + +# Save current src/__init__.py for mpich +cp src/mpi4py/__init__.py .__init__mpich.py +cp src/mpi4py/__init__.py .__init__openmpi.py + + +%build +# Build parallel versions: set compiler variables to MPI wrappers +export CC=mpicc +export CXX=mpicxx + +# Build OpenMPI version +%{_openmpi_load} +ompi_info +cp .__init__openmpi.py src/mpi4py/__init__.py +%py3_build +mv build openmpi +%{_openmpi_unload} + +%if %{with_mpich} +# Build mpich version +%{_mpich_load} +cp .__init__mpich.py src/mpi4py/__init__.py +%py3_build +mv build mpich +%{_mpich_unload} +%endif + + + +%install +# Install OpenMPI version +%{_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} +# Install MPICH version +%{_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 +* Thu Jun 15 2023 Chunmei Xu - 3.1.4-1 +- init from upstream