diff --git a/.gitignore b/.gitignore index 3ca97ee..d89aa68 100644 --- a/.gitignore +++ b/.gitignore @@ -69,3 +69,5 @@ openmpi-1.4.1-RH.tar.bz2 /openmpi-5.0.5.tar.bz2 /openmpi-5.0.6.tar.bz2 /openmpi-5.0.8.tar.bz2 +/openmpi-5.0.9.tar.bz2 +/openmpi-5.0.10.tar.bz2 diff --git a/13281.patch b/13281.patch deleted file mode 100644 index 3bcfaf3..0000000 --- a/13281.patch +++ /dev/null @@ -1,30 +0,0 @@ -From d5c84ea4595ea1fbb5b213621e0966ebe0fd3cc9 Mon Sep 17 00:00:00 2001 -From: Joseph Schuchart -Date: Wed, 28 May 2025 10:11:58 -0400 -Subject: [PATCH] Force alignment of opal_atomic_int128_t to be 16B - -Some architectures will align 128bit integer on 8B but require 16B alignment -for 128bit CAS instructions and otherwise fall back to a lock-based -atomicity model. By forcing 16bit alignment we can ensure that the variables -are properly aligned and the fall-back is not triggered. - -Thanks to Ulrich Weigand for the analysis and proposed fix in https://github.com/open-mpi/ompi/issues/10988#issuecomment-2913388506. - -Signed-off-by: Joseph Schuchart ---- - opal/include/opal_stdatomic.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/opal/include/opal_stdatomic.h b/opal/include/opal_stdatomic.h -index 35437551208..f7dd8353d3b 100644 ---- a/opal/include/opal_stdatomic.h -+++ b/opal/include/opal_stdatomic.h -@@ -72,7 +72,7 @@ typedef _Atomic opal_int128_t opal_atomic_int128_t; - - # else - --typedef volatile opal_int128_t opal_atomic_int128_t; -+typedef volatile opal_int128_t opal_atomic_int128_t __opal_attribute_aligned__(16); - - # endif - diff --git a/openmpi-braces.patch b/openmpi-braces.patch new file mode 100644 index 0000000..61b3c59 --- /dev/null +++ b/openmpi-braces.patch @@ -0,0 +1,16 @@ +diff --git a/oshmem/mca/memheap/base/memheap_base_frame.c b/oshmem/mca/memheap/base/memheap_base_frame.c +index 53a71b27a9..82658e0979 100644 +--- a/oshmem/mca/memheap/base/memheap_base_frame.c ++++ b/oshmem/mca/memheap/base/memheap_base_frame.c +@@ -33,9 +33,9 @@ + + int mca_memheap_base_output = -1; + int mca_memheap_base_key_exchange = 1; +-opal_list_t mca_memheap_base_components_opened = {{0}}; ++opal_list_t mca_memheap_base_components_opened = {}; + int mca_memheap_base_already_opened = 0; +-mca_memheap_map_t mca_memheap_base_map = {{{{0}}}}; ++mca_memheap_map_t mca_memheap_base_map = {}; + int mca_memheap_num_segments_warn = 32; + + static int mca_memheap_base_register(mca_base_register_flag_t flags) diff --git a/openmpi-drop-recommonmark.patch b/openmpi-drop-recommonmark.patch new file mode 100644 index 0000000..9ee88a1 --- /dev/null +++ b/openmpi-drop-recommonmark.patch @@ -0,0 +1,31 @@ +diff -ru openmpi-5.0.10/config/oac/oac_setup_sphinx.m4 openmpi-5.0.10-new/config/oac/oac_setup_sphinx.m4 +--- openmpi-5.0.10/config/oac/oac_setup_sphinx.m4 2026-02-23 21:21:40.731399193 +0100 ++++ openmpi-5.0.10-new/config/oac/oac_setup_sphinx.m4 2026-07-27 17:10:12.450825327 +0200 +@@ -115,7 +115,7 @@ + author = 'Testing' + import sphinx_rtd_theme + # Note the extra quoting needed for square brackets because this is m4 +-extensions = [[ 'recommonmark', 'sphinx_rtd_theme', 'sphinx.ext.extlinks' ]] ++extensions = [[ 'sphinx_rtd_theme', 'sphinx.ext.extlinks' ]] + html_theme = 'sphinx_rtd_theme' + EOF + echo "Hello world" > index.rst +diff -ru openmpi-5.0.10/docs/conf.py openmpi-5.0.10-new/docs/conf.py +--- openmpi-5.0.10/docs/conf.py 2026-02-23 21:21:10.775279351 +0100 ++++ openmpi-5.0.10-new/docs/conf.py 2026-07-27 17:10:34.017830912 +0200 +@@ -174,7 +174,6 @@ + # ones. + import sphinx_rtd_theme + extensions = [ +- 'recommonmark', + "sphinx_rtd_theme", + "sphinx.ext.extlinks", + ] +diff -ru openmpi-5.0.10/docs/requirements.txt openmpi-5.0.10-new/docs/requirements.txt +--- openmpi-5.0.10/docs/requirements.txt 2026-02-23 21:21:10.811279501 +0100 ++++ openmpi-5.0.10-new/docs/requirements.txt 2026-07-27 17:10:43.482113314 +0200 +@@ -1,4 +1,3 @@ + sphinx>=4.2.0 +-recommonmark + docutils + sphinx-rtd-theme diff --git a/openmpi-inline.patch b/openmpi-inline.patch new file mode 100644 index 0000000..dd901e8 --- /dev/null +++ b/openmpi-inline.patch @@ -0,0 +1,13 @@ +diff --git a/ompi/mca/part/persist/part_persist.h b/ompi/mca/part/persist/part_persist.h +index ccc8f8f197..86fb9bac42 100644 +--- a/ompi/mca/part/persist/part_persist.h ++++ b/ompi/mca/part/persist/part_persist.h +@@ -490,7 +490,7 @@ mca_part_persist_psend_init(const void* buf, + return err; + } + +-__opal_attribute_always_inline__ static inline int ++static inline int + mca_part_persist_start(size_t count, ompi_request_t** requests) + { + int err = OMPI_SUCCESS; diff --git a/openmpi.spec b/openmpi.spec index d5f879b..c0ecb85 100644 --- a/openmpi.spec +++ b/openmpi.spec @@ -12,13 +12,7 @@ %bcond_with ucx %endif -# ARM 32-bit is not supported by rdma -# https://bugzilla.redhat.com/show_bug.cgi?id=1780584 -%ifarch %{arm} -%bcond_with rdma -%else %bcond_without rdma -%endif # No more Java on i686 %ifarch %{java_arches} @@ -49,14 +43,22 @@ %bcond_without pmix # Run autogen - needed for some patches -%bcond autogen 0 +%bcond autogen 1 Name: openmpi%{?_cc_name_suffix} -Version: 5.0.8 +Version: 5.0.10 Release: %autorelease Summary: Open Message Passing Interface # Automatically converted from old format: BSD and MIT and Romio - review is highly recommended. -License: LicenseRef-Callaway-BSD AND LicenseRef-Callaway-MIT AND LicenseRef-Romio +# main code is BSD-3-Clause-Open-MPI +# 3rd-party/romio341 is mpich2 +# 3rd-party/treematch is BSD-3-Clause +# oshmem/mca/memheap/ptmalloc/malloc.c is LicenseRef-Fedora-Public-Domain +# opal/util/qsort.c is BSD-4-Clause-UC +# java/ (in subpackage) is Apache-2.0 +# 3rd-party/openpmix/src/mca/psec/munge/psec_munge.c is LGPL-2.0-or-later +# doc/ see bellow in subpackage +License: BSD-3-Clause-Open-MPI AND mpich2 AND BSD-3-Clause AND LicenseRef-Fedora-Public-Domain AND BSD-4-Clause-UC URL: http://www.open-mpi.org/ ExcludeArch: %{ix86} @@ -65,8 +67,12 @@ Source0: https://www.open-mpi.org/software/ompi/v5.0/downloads/openmpi-%{ Source1: openmpi.module.in Source3: openmpi.pth.py3 Source4: macros.openmpi - -Patch0: https://github.com/open-mpi/ompi/pull/13281.patch +# Fix always inline failure - https://github.com/open-mpi/ompi/pull/13756 +Patch: openmpi-inline.patch +# Fix brace initialization - https://github.com/open-mpi/ompi/pull/13758 +Patch: openmpi-braces.patch +# Drop unused recommonmark - https://github.com/open-mpi/ompi/pull/14215 +Patch: openmpi-drop-recommonmark.patch BuildRequires: gcc-c++ BuildRequires: gcc-gfortran @@ -80,7 +86,6 @@ BuildRequires: perl(File::Find) BuildRequires: valgrind-devel %endif %if %{with rdma} -BuildRequires: opensm-devel > 3.3.0 BuildRequires: rdma-core-devel %endif # Doesn't compile: @@ -88,8 +93,6 @@ BuildRequires: rdma-core-devel # loop->getLoopHead()->getStartAddress(), loop_stmts ); #BuildRequires: dyninst-devel BuildRequires: hwloc-devel -# So configure can find lstopo -BuildRequires: hwloc-gui %if %{with java} BuildRequires: java-25-devel %else @@ -97,9 +100,7 @@ Obsoletes: %{name}-java < %{version}-%{release} Obsoletes: %{name}-java-devel < %{version}-%{release} %endif # Old libevent causes issues -%if !0%{?el7} BuildRequires: libevent-devel -%endif BuildRequires: libfabric-devel %ifnarch s390x BuildRequires: papi-devel @@ -113,8 +114,6 @@ BuildRequires: perl(Getopt::Long) %if %{with pmix} BuildRequires: pmix-devel >= 4.2.7 %endif -# For configure to find /usr/bin/prte -BuildRequires: prrte BuildRequires: prrte-devel BuildRequires: python%{python3_pkgversion}-devel %if %{with psm2} @@ -124,21 +123,14 @@ BuildRequires: libpsm2-devel BuildRequires: ucx-devel %endif BuildRequires: zlib-devel -%if !0%{?el7} BuildRequires: rpm-mpi-hooks -%endif %if %{with sphinx} # For docs BuildRequires: /usr/bin/sphinx-build -BuildRequires: python3-recommonmark BuildRequires: python3-sphinx_rtd_theme %endif Provides: mpi -%if 0%{?rhel} == 7 -# Need this for /etc/profile.d/modules.sh -Requires: environment-modules -%endif Requires: environment(modules) Requires: prrte # openmpi currently requires ssh to run @@ -162,19 +154,18 @@ researchers. For more information, see http://www.open-mpi.org/ . Summary: Development files for openmpi Requires: %{name} = %{version}-%{release}, gcc-gfortran Provides: mpi-devel -%if !0%{?el7} Requires: rpm-mpi-hooks # Make sure this package is rebuilt with correct Python version when updating # Otherwise mpi.req from rpm-mpi-hooks doesn't work # https://bugzilla.redhat.com/show_bug.cgi?id=1705296 Requires: (python(abi) = %{python3_version} if python3) -%endif %description devel Contains development headers and libraries for openmpi. %package doc Summary: HTML documentation for openmpi +License: BSD-3-Clause AND BSD-3-Clause-Open-MPI AND mpich2 AND MIT AND (MIT OR GPL-2.0-or-later) AND (OFL-1.1 AND MIT) BuildArch: noarch %description doc @@ -183,6 +174,7 @@ HTML documentation for openmpi. %if %{with java} %package java Summary: Java library +License: Apache-2.0 Requires: %{name} = %{version}-%{release} Requires: java-25-headless @@ -191,6 +183,7 @@ Java library. %package java-devel Summary: Java development files for openmpi +License: Apache-2.0 Requires: %{name}-java = %{version}-%{release} Requires: java-25-devel @@ -241,12 +234,10 @@ OpenMPI support for Python 3. --enable-memchecker \ %endif --with-hwloc=/usr \ -%if !0%{?el7} --with-libevent=external \ %if %{with pmix} --with-pmix=external \ %endif -%endif %make_build V=1 @@ -312,7 +303,6 @@ make check || ( cat test/*/test-suite.log && exit $fail ) %dir %{_libdir}/%{name}/bin %dir %{_libdir}/%{name}/lib %dir %{_libdir}/%{name}/lib/openmpi -%dir %{_libdir}/%{name}/lib/openmpi/cmake %dir %{_libdir}/%{name}/include %dir %{_mandir}/%{namearch} %dir %{_mandir}/%{namearch}/man* @@ -341,9 +331,6 @@ make check || ( cat test/*/test-suite.log && exit $fail ) %{_mandir}/%{namearch}/man7/Open-MPI.7* %{_libdir}/%{name}/lib/*.so.40* %{_libdir}/%{name}/lib/*.so.80* -%if 0%{?el7} -%{_libdir}/%{name}/lib/pmix/ -%endif %{_mandir}/%{namearch}/man1/mpirun.1* %{_mandir}/%{namearch}/man1/mpisync.1* %{_mandir}/%{namearch}/man1/ompi* @@ -356,9 +343,6 @@ make check || ( cat test/*/test-suite.log && exit $fail ) %dir %{_libdir}/%{name}/share/openmpi %{_libdir}/%{name}/share/openmpi/amca-param-sets %{_libdir}/%{name}/share/openmpi/help*.txt -%if 0%{?el7} -%{_libdir}/%{name}/share/pmix/ -%endif %files devel %dir %{_includedir}/%{namearch} diff --git a/sources b/sources index 1083caf..34f655a 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (openmpi-5.0.8.tar.bz2) = de9128edaa1886f90f1452b8cee3c3962d7666beed96d7b95c601278c2debc7d7efecc9403792d428ce12131ce30416d6bc6bb657fb1a5490f53c6b6e369b080 +SHA512 (openmpi-5.0.10.tar.bz2) = 24d29c2e88549e5a59f47dac0a2327db99644c59fd2991441d0ec23edb95aa7328fcd67bd44601ce9f11b0af90d36fddf82643e23f0f6e7c013c99f9bbd9738e