Name: openmpi Version: 4.1.5 Release: 3 Summary: Open Source High Performance Computing License: BSD-3-Clause URL: http://www.open-mpi.org/ Source0: https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-%{version}.tar.bz2 Source1: openmpi.module.in Source2: openmpi.pth.py3 Source3: macros.openmpi Patch1000: add-riscv64-support.patch %ifarch loongarch64 Patch1001: 0001-add-loongarch64-support-for-openmpi.patch %endif BuildRequires: gcc-c++, gcc-gfortran BuildRequires: valgrind-devel, hwloc-devel, java-devel, libfabric-devel, papi-devel BuildRequires: libibverbs-devel >= 1.1.3, opensm-devel > 3.3.0 BuildRequires: librdmacm librdmacm-devel, rdma-core-devel, pmix-devel BuildRequires: hwloc-gui chrpath BuildRequires: perl-generators, perl(Getopt::Long) BuildRequires: python3-devel libevent-devel BuildRequires: automake libtool %ifarch x86_64 BuildRequires: infinipath-psm-devel, libpsm2-devel zlib-devel %endif %ifarch loongarch64 BuildRequires: automake %endif Provides: mpi, %{name}-java Requires: environment(modules), openssh-clients Provides: bundled(libevent) = 2.0.22 Requires: java-headless Obsoletes: %{name}-java %description The Open MPI Project is an open source Message Passing Interface implementation that is developed and maintained by a consortium of academic, research, and industry partners. Open MPI is therefore able to combine the expertise, technologies, and resources from all across the High Performance Computing community in order to build the best MPI library available. %ifarch aarch64 %global name_all openmpi-aarch64 %elifarch riscv64 %global name_all openmpi-riscv64 %else %global name_all openmpi-x86_64 %endif #%global namearch openmpi-%{_arch} %package devel Summary: Development files for openmpi Requires: %{name} = %{version}-%{release}, gcc-gfortran Provides: mpi-devel Requires: java-devel Provides: %{name}-java-devel Obsoletes: %{name}-java-devel %description devel This contains dynamic libraries and header files for the developing of openmpi. %package -n python3-openmpi Summary: openmpi python3 interface Requires: %{name} = %{version}-%{release} %description -n python3-openmpi openmpi python3 interface %package help Summary: Including man files for openmpi Requires: man %description help This contains man files for the using of openmpi. %prep %autosetup -n openmpi-%{version} -p1 ./autogen.pl --force %build ./configure \ --bindir=%{_bindir} \ --libdir=%{_libdir}/%{name}/lib \ --datadir=%{_libdir}/%{name}/share \ --docdir=%{_libdir}/%{name}/share/doc/openmpi \ --includedir=%{_includedir}/%{name_all} \ --sysconfdir=%{_sysconfdir}/%{name_all} \ --disable-silent-rules \ --enable-builtin-atomics \ --enable-memchecker \ --enable-mpi-thread-multiple \ --enable-mpi-cxx \ --enable-mpi-java \ --enable-mpi1-compatibility \ --with-sge \ --with-valgrind \ --enable-memchecker \ --with-hwloc=/usr \ --with-pmix=external \ --with-libevent=external \ --mandir=%{_mandir}/%{name_all} \ CFLAGS="$RPM_OPT_FLAGS" \ CXXFLAGS="$RPM_OPT_FLAGS" \ FC=gfortran \ FCFLAGS="$RPM_OPT_FLAGS" \ LDFLAGS="-Wl,-z,now" %make_build %install %make_install find %{buildroot}%{_libdir}/%{name}/lib -name \*.la -delete find %{buildroot}%{_mandir}/%{name_all} -type f -exec gzip -9 {} \; ln -s mpicc.1.gz %{buildroot}%{_mandir}/%{name_all}/man1/mpiCC.1.gz rm %{buildroot}%{_mandir}/%{name_all}/man1/mpiCC.1 mkdir %{buildroot}%{_mandir}/%{name_all}/man{2,4,5,6,8,9,n} mkdir -p %{buildroot}%{_datadir}/modulefiles/mpi sed 's#@LIBDIR@#%{_libdir}/%{name}#; s#@ETCDIR@#%{_sysconfdir}/%{name_all}#; s#@FMODDIR@#%{_fmoddir}/%{name}#; s#@INCDIR@#%{_includedir}/%{name_all}#; s#@MANDIR@#%{_mandir}/%{name_all}#; s#@PY3SITEARCH@#%{python3_sitearch}/%{name}#; s#@COMPILER@#openmpi-%{_arch}#; s#@SUFFIX@#_openmpi#' \ <%{SOURCE1} \ >%{buildroot}%{_datadir}/modulefiles/mpi/%{name_all} install -Dpm 644 %{SOURCE3} %{buildroot}/%{rpmmacrodir}/macros.%{name_all} install -d %{buildroot}%{_fmoddir}/%{name} for mod in %{buildroot}%{_libdir}/%{name}/lib/*.mod do modname=$(basename $mod) ln -s ../../../%{name}/lib/${modname} %{buildroot}/%{_fmoddir}/%{name}/ done install -d %{buildroot}%{_libdir}/pkgconfig pushd %{buildroot}%{_libdir}/pkgconfig ln -s ../%{name}/lib/pkgconfig/*.pc . popd sed -i -e s/-ldl// -e s/-lhwloc// \ %{buildroot}%{_libdir}/%{name}/share/%{name}/*-wrapper-data.txt install -d %{buildroot}/%{python3_sitearch}/%{name} install -pDm0644 %{SOURCE2} %{buildroot}/%{python3_sitearch}/openmpi.pth file `find %{buildroot}%{_libdir}/openmpi/bin -type f` | grep -w ELF | awk -F : '{print $1}' |xargs chrpath -d file `find %{buildroot}%{_libdir}/openmpi/lib -type f` | grep -w ELF | awk -F : '{print $1}' |xargs chrpath -d mkdir -p %{buildroot}/etc/ld.so.conf.d echo "%{_libdir}/openmpi/lib" > %{buildroot}/etc/ld.so.conf.d/%{name}-%{_arch}.conf %post /sbin/ldconfig %postun /sbin/ldconfig %check make check %files %license LICENSE opal/mca/event/libevent2022/libevent/LICENSE %dir %{_libdir}/%{name} %dir %{_sysconfdir}/%{name_all} %dir %{_libdir}/%{name}/lib %dir %{_libdir}/%{name}/lib/openmpi %dir %{_mandir}/%{name_all} %dir %{_mandir}/%{name_all}/man* %dir %{_libdir}/%{name}/share %dir %{_libdir}/%{name}/share/openmpi %config(noreplace) %{_sysconfdir}/%{name_all}/* %config(noreplace) /etc/ld.so.conf.d/* %{_datadir}/modulefiles/mpi/ %{_bindir}/mpiexec %{_bindir}/mpirun %{_bindir}/ompi* %{_bindir}/orte-* %{_bindir}/orted %{_bindir}/orterun %{_libdir}/%{name}/lib/*.so.* %{_libdir}/%{name}/lib/openmpi/* %{_libdir}/%{name}/lib/mpi.jar %{_libdir}/%{name}/share/openmpi/help*.txt %{_libdir}/%{name}/share/openmpi/amca-param-sets %{_libdir}/%{name}/share/openmpi/mca-btl-openib-device-params.ini %files devel %dir %{_includedir}/%{name_all} %{_includedir}/%{name_all}/* %{_libdir}/%{name}/share/doc/ %{_bindir}/mpic* %{_bindir}/mpiCC %{_bindir}/mpif* %{_bindir}/opal* %{_bindir}/ortecc %{_bindir}/aggregate_profile.pl %{_bindir}/profile2mat.pl %{_bindir}/mpijava* %{_libdir}/%{name}/lib/*.so %{_libdir}/%{name}/lib/*.mod %{_libdir}/%{name}/lib/pkgconfig/ %{_libdir}/%{name}/share/openmpi/*-wrapper-data.txt %{_libdir}/%{name}/share/openmpi/openmpi-valgrind.supp %{_libdir}/pkgconfig/*.pc %{_fmoddir}/%{name}/ %{rpmmacrodir}/macros.%{name_all} %files -n python3-openmpi %dir %{python3_sitearch}/%{name} %{python3_sitearch}/openmpi.pth %files help %{_mandir}/%{name_all}/man*/* %changelog * Wed Jan 10 2024 xu_ping<707078654@qq.com> - 4.1.5-3 - fix build error due to rdma-core separate some packages. * Thu Jul 20 2023 Wenlong Zhang - 4.1.5-2 - fix build error that automake can not be found * Fri Apr 21 2023 wulei - 4.1.5-1 - Upgrade package to version 4.1.5 * Tue Jan 03 2023 misaka00251 - 4.1.4-3 - Add riscv64 support, patch from lvxiaoqian@iscas * Fri Jul 29 2022 wangkai - 4.1.4-2 - Reslove conflict with pmix-devel and update license * Mon Jun 20 2022 wulei - 4.1.4-1 - Upgrade to 4.1.1 * Thu Sep 9 2021 Pengju Jiang - 2.1.1-20 - solve the strip and rpath problem of safe conversion * Mon Nov 2 2020 wangxiao - 2.1.1-19 - delete unnessary file * Wed Oct 21 2020 wangxiao - 2.1.1-18 - drop python2 subpackage * Thu Sep 10 2020 Guoshuai Sun - 2.1.1-17 - As rpm-mpi-hooks is not in buildrequire,we shouldn't pull it in devel packages * Sat Jun 20 2020 Senlin Xia - 2.1.1-16 - remove unnecessary buildrequire: rpm-mpi-hooks * Tue Nov 26 2019 openEuler Buildteam - 2-1.1-15 - Package init