From a3cc780a2a6d582fc96826ab203150c5989ea01b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Schr=C3=B6ter?= Date: Wed, 7 Jun 2023 08:17:17 +0200 Subject: [PATCH] Sync from SUSE:ALP:Source:Standard:1.0 openmpi2 revision e29fdd132dac300d39e91f6dbc911ead --- .gitattributes | 23 + Always-include-the-stddef.h-header.patch | 30 + ...uoting-requirements-of-autoconf-2.70.patch | 23 + _multibuild | 6 + _service | 17 + add-gen-p5-chip-pci-id-to-ini-file.patch | 26 + ...penib-Add-support-for-newer-hardware.patch | 53 ++ fix-rdma-component-selection.patch | 47 ++ macros.hpc-openmpi | 20 + mpivars.csh | 15 + mpivars.sh | 31 + openmpi-2.1.6.0.d9b9e59e5c5a.tar.bz2 | 3 + openmpi2-rpmlintrc | 5 + openmpi2.changes | 362 +++++++++ openmpi2.spec | 754 ++++++++++++++++++ ...mpi_disable_opal_fifo_test_issue5470.patch | 29 + reproducible.patch | 139 ++++ 17 files changed, 1583 insertions(+) create mode 100644 .gitattributes create mode 100644 Always-include-the-stddef.h-header.patch create mode 100644 Fix-error-with-stricter-quoting-requirements-of-autoconf-2.70.patch create mode 100644 _multibuild create mode 100644 _service create mode 100644 add-gen-p5-chip-pci-id-to-ini-file.patch create mode 100644 btl-openib-Add-support-for-newer-hardware.patch create mode 100644 fix-rdma-component-selection.patch create mode 100644 macros.hpc-openmpi create mode 100644 mpivars.csh create mode 100644 mpivars.sh create mode 100644 openmpi-2.1.6.0.d9b9e59e5c5a.tar.bz2 create mode 100644 openmpi2-rpmlintrc create mode 100644 openmpi2.changes create mode 100644 openmpi2.spec create mode 100644 openmpi_disable_opal_fifo_test_issue5470.patch create mode 100644 reproducible.patch diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..fecc750 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/Always-include-the-stddef.h-header.patch b/Always-include-the-stddef.h-header.patch new file mode 100644 index 0000000..6170f19 --- /dev/null +++ b/Always-include-the-stddef.h-header.patch @@ -0,0 +1,30 @@ +commit 8ae595d47c49783906e940bd31659ad14006d854 +Author: George Bosilca +Date: Fri Mar 12 13:38:10 2021 -0500 + + Always include the stddef.h header. + + Signed-off-by: George Bosilca + +diff --git configure.ac configure.ac +index 88c42ac5548e..50c894117b52 100644 +--- configure.ac ++++ configure.ac +@@ -1281,10 +1281,13 @@ OPAL_SETUP_WRAPPER_FINAL + # autoconf macro defines in mpi.h. Since AC sometimes changes whether + # things are defined as null tokens or an integer result, two projects + # with different versions of AC can cause problems. +-if test $ac_cv_header_stdc = yes; then +- AC_DEFINE(OPAL_STDC_HEADERS, 1, +- [Do not use outside of mpi.h. Define to 1 if you have the ANSI C header files.]) +-fi ++ ++# According to the autoconf 2.67 documentation the AC_HEADER_STDC macro, ++# and therefore the ac_cv_header_stdc cache variable, is obsolescent, as ++# current systems have conforming header files. Instead of removing the ++# protection completely, let's just make sure it is always on. ++AC_DEFINE(OPAL_STDC_HEADERS, 1, ++ [Do not use outside of mpi.h. Define to 1 if you have the ANSI C header files.]) + if test $ac_cv_header_sys_time_h = yes ; then + AC_DEFINE(OPAL_HAVE_SYS_TIME_H, 1, + [Do not use outside of mpi.h. Define to 1 if you have the header file.]) diff --git a/Fix-error-with-stricter-quoting-requirements-of-autoconf-2.70.patch b/Fix-error-with-stricter-quoting-requirements-of-autoconf-2.70.patch new file mode 100644 index 0000000..9e269a9 --- /dev/null +++ b/Fix-error-with-stricter-quoting-requirements-of-autoconf-2.70.patch @@ -0,0 +1,23 @@ +commit cb992424a2d67b70aad35925c9027f43e61c1ae6 +Author: Christoph Niethammer +Date: Tue Jan 19 22:56:19 2021 +0100 + + Fix error with stricter quoting requirements of autoconf-2.70 + + Signed-off-by: Christoph Niethammer + +diff --git config/opal_check_cuda.m4 config/opal_check_cuda.m4 +index fd7816e3ea7a..67059a8c851e 100644 +--- config/opal_check_cuda.m4 ++++ config/opal_check_cuda.m4 +@@ -91,8 +91,8 @@ AS_IF([test "$opal_check_cuda_happy" = "yes"], + # If we have CUDA support, check to see if we have support for SYNC_MEMOPS + # which was first introduced in CUDA 6.0. + AS_IF([test "$opal_check_cuda_happy"="yes"], +- AC_CHECK_DECL([CU_POINTER_ATTRIBUTE_SYNC_MEMOPS], [CUDA_SYNC_MEMOPS=1], [CUDA_SYNC_MEMOPS=0], +- [#include <$opal_cuda_incdir/cuda.h>]), ++ [AC_CHECK_DECL([CU_POINTER_ATTRIBUTE_SYNC_MEMOPS], [CUDA_SYNC_MEMOPS=1], [CUDA_SYNC_MEMOPS=0], ++ [#include <$opal_cuda_incdir/cuda.h>])], + []) + + # If we have CUDA support, check to see if we have CUDA 6.0 or later. diff --git a/_multibuild b/_multibuild new file mode 100644 index 0000000..fe6aeba --- /dev/null +++ b/_multibuild @@ -0,0 +1,6 @@ + + standard + testsuite + gnu-hpc + gnu-hpc-testsuite + diff --git a/_service b/_service new file mode 100644 index 0000000..5e25099 --- /dev/null +++ b/_service @@ -0,0 +1,17 @@ + + + git + https://github.com/open-mpi/ompi.git + no + .git + openmpi + @PARENT_TAG@.@TAG_OFFSET@.%h + v(.*) + \1 + d9b9e59e5c5aaf2f071eb18fd05d5f60444f9e20 + + + openmpi*.tar + bz2 + + diff --git a/add-gen-p5-chip-pci-id-to-ini-file.patch b/add-gen-p5-chip-pci-id-to-ini-file.patch new file mode 100644 index 0000000..a5721b3 --- /dev/null +++ b/add-gen-p5-chip-pci-id-to-ini-file.patch @@ -0,0 +1,26 @@ +commit 170b636e7c1823ebe22f6c132a89db3e165109bd +Author: Devesh Sharma +Date: Fri Mar 22 11:06:59 2019 -0400 + + add gen p5 chip pci id to ini file + + Adding the PF pci id for new gen p5 chip to openmpi code. + There is no PR associate to master in this patch because + in master openib BTL is deprecated. This patch should be + cherry picked to 4.0.x as well. + + Signed-off-by: Devesh Sharma + +diff --git opal/mca/btl/openib/mca-btl-openib-device-params.ini opal/mca/btl/openib/mca-btl-openib-device-params.ini +index a28e0c23e88b..faf1244fb3a3 100644 +--- opal/mca/btl/openib/mca-btl-openib-device-params.ini ++++ opal/mca/btl/openib/mca-btl-openib-device-params.ini +@@ -336,7 +336,7 @@ max_inline_data = 72 + + [Broadcom BCM57XXX] + vendor_id = 0x14e4 +-vendor_part_id = 0x1605,0x1606,0x1614,0x16c0,0x16c1,0x16ce,0x16cf,0x16d6,0x16d7,0x16d8,0x16d9,0x16df,0x16e2,0x16e3,0x16e5,0x16eb,0x16ed,0x16ef,0x16f0,0x16f1 ++vendor_part_id = 0x1605,0x1606,0x1614,0x16c0,0x16c1,0x16ce,0x16cf,0x16d6,0x16d7,0x16d8,0x16d9,0x16df,0x16e2,0x16e3,0x16e5,0x16eb,0x16ed,0x16ef,0x16f0,0x16f1,0x1750 + use_eager_rdma = 1 + mtu = 1024 + receive_queues = P,65536,256,192,128 diff --git a/btl-openib-Add-support-for-newer-hardware.patch b/btl-openib-Add-support-for-newer-hardware.patch new file mode 100644 index 0000000..5a6ad38 --- /dev/null +++ b/btl-openib-Add-support-for-newer-hardware.patch @@ -0,0 +1,53 @@ +commit 0776804c3f37250bd0e442197d4cbae820d4d09a +Author: Nicolas Morey-Chaisemartin +Date: Tue Sep 13 15:49:51 2022 +0200 + + btl: openib: Add support for newer hardware + + - ConnectX4 VF + - ConnectX5 VF + - ConnectX6 VF + - New broadcom PCI Ids + + Signed-off-by: Nicolas Morey-Chaisemartin + +diff --git opal/mca/btl/openib/mca-btl-openib-device-params.ini opal/mca/btl/openib/mca-btl-openib-device-params.ini +index faf1244fb3a3..b9949de235b8 100644 +--- opal/mca/btl/openib/mca-btl-openib-device-params.ini ++++ opal/mca/btl/openib/mca-btl-openib-device-params.ini +@@ -174,7 +174,7 @@ max_inline_data = 256 + + [Mellanox ConnectX4] + vendor_id = 0x2c9,0x5ad,0x66a,0x8f1,0x1708,0x03ba,0x15b3,0x119f +-vendor_part_id = 4115 ++vendor_part_id = 4115,4116,4117,4118 + use_eager_rdma = 1 + mtu = 4096 + max_inline_data = 256 +@@ -183,7 +183,16 @@ max_inline_data = 256 + + [Mellanox ConnectX5] + vendor_id = 0x2c9,0x5ad,0x66a,0x8f1,0x1708,0x03ba,0x15b3,0x119f +-vendor_part_id = 4119,4121 ++vendor_part_id = 4119,4120,4121,4122 ++use_eager_rdma = 1 ++mtu = 4096 ++max_inline_data = 256 ++ ++############################################################################ ++ ++[Mellanox ConnectX6] ++vendor_id = 0x2c9,0x5ad,0x66a,0x8f1,0x1708,0x03ba,0x15b3,0x119f ++vendor_part_id = 4123,4124 + use_eager_rdma = 1 + mtu = 4096 + max_inline_data = 256 +@@ -336,7 +345,7 @@ max_inline_data = 72 + + [Broadcom BCM57XXX] + vendor_id = 0x14e4 +-vendor_part_id = 0x1605,0x1606,0x1614,0x16c0,0x16c1,0x16ce,0x16cf,0x16d6,0x16d7,0x16d8,0x16d9,0x16df,0x16e2,0x16e3,0x16e5,0x16eb,0x16ed,0x16ef,0x16f0,0x16f1,0x1750 ++vendor_part_id = 0x1605,0x1606,0x1614,0x16c0,0x16c1,0x16ce,0x16cf,0x16d6,0x16d7,0x16d8,0x16d9,0x16df,0x16e2,0x16e3,0x16e5,0x16eb,0x16ed,0x16ef,0x16f0,0x16f1 + use_eager_rdma = 1 + mtu = 1024 + receive_queues = P,65536,256,192,128 diff --git a/fix-rdma-component-selection.patch b/fix-rdma-component-selection.patch new file mode 100644 index 0000000..6444146 --- /dev/null +++ b/fix-rdma-component-selection.patch @@ -0,0 +1,47 @@ +commit 062e6fe4be4db6263372053509f155784fc94cc1 +Author: Nicolas Morey-Chaisemartin +Date: Wed Mar 28 11:17:17 2018 +0200 + + fix rdma component selection + + Github issue#4976 + bsc#1087031 + + Signed-off-by: Nicolas Morey-Chaisemartin + +diff --git ompi/mca/osc/rdma/osc_rdma_component.c ompi/mca/osc/rdma/osc_rdma_component.c +index b5c544a58f99..337742fabb9c 100644 +--- ompi/mca/osc/rdma/osc_rdma_component.c ++++ ompi/mca/osc/rdma/osc_rdma_component.c +@@ -356,6 +356,8 @@ static int ompi_osc_rdma_component_query (struct ompi_win_t *win, void **base, s + int flavor) + { + ++ int rc; ++ + if (MPI_WIN_FLAVOR_SHARED == flavor) { + return -1; + } +@@ -369,15 +371,18 @@ static int ompi_osc_rdma_component_query (struct ompi_win_t *win, void **base, s + } + #endif /* OPAL_CUDA_SUPPORT */ + +- if (OMPI_SUCCESS == ompi_osc_rdma_query_mtls ()) { ++ rc = ompi_osc_rdma_query_mtls (); ++ rc = comm->c_coll.coll_allreduce(MPI_IN_PLACE, &rc, 1, MPI_INT, MPI_MIN, comm, comm->c_coll.coll_allreduce_module); ++ if (OMPI_SUCCESS == rc) { + return 5; /* this has to be lower that osc pt2pt default priority */ + } +- +- if (OMPI_SUCCESS != ompi_osc_rdma_query_btls (comm, NULL)) { ++ ++ rc = ompi_osc_rdma_query_btls (comm, NULL); ++ rc = comm->c_coll.coll_allreduce(MPI_IN_PLACE, &rc, 1, MPI_INT, MPI_MIN, comm, comm->c_coll.coll_allreduce_module); ++ if (OMPI_SUCCESS != rc) { + return -1; + } + +- + return mca_osc_rdma_component.priority; + } + diff --git a/macros.hpc-openmpi b/macros.hpc-openmpi new file mode 100644 index 0000000..1a047af --- /dev/null +++ b/macros.hpc-openmpi @@ -0,0 +1,20 @@ +# +# openmpi +# + +%hpc_openmpi_init(V:) \ + %{-V: %define _mf_ver %{-V*}} \ + %{expand: %%global hpc_openmpi_dep_version %%{?_mf_ver}%%{?!_mf_ver:2}} \ + %{expand: %%global hpc_openmpi_dir openmpi%{hpc_openmpi_dep_version}} \ + %{expand: %%global hpc_openmpi_pack_version %{hpc_openmpi_dep_version}} \ + %{expand: %%global _hpc_openmpi_modules openmpi} + +# We may have to add a version here. +%hpc_setup_openmpi \ + module load openmpi + +%hpc_openmpi_requires \ +Requires: libopenmpi%{hpc_openmpi_dep_version}-%{hpc_compiler_family}%{hpc_cf_pack_version}-hpc + +%hpc_openmpi_requires_devel \ +Requires: openmpi%{hpc_openmpi_dep_version}-%{hpc_compiler_family}%{hpc_cf_pack_version}-hpc-devel diff --git a/mpivars.csh b/mpivars.csh new file mode 100644 index 0000000..71dc80b --- /dev/null +++ b/mpivars.csh @@ -0,0 +1,15 @@ +set -f path= ( prefix/bin $path ) + +if ($?MANPATH) then + if ( "$MANPATH" !~ *prefix/man* ) then + setenv MANPATH prefix/man:$MANPATH + endif +else + setenv MANPATH prefix/man: +endif + +if ($?LD_LIBRARY_PATH) then + setenv LD_LIBRARY_PATH libdir:$LD_LIBRARY_PATH +else + setenv LD_LIBRARY_PATH libdir +endif diff --git a/mpivars.sh b/mpivars.sh new file mode 100644 index 0000000..53306c1 --- /dev/null +++ b/mpivars.sh @@ -0,0 +1,31 @@ +case $PATH in + *prefix/bin*) + true + ;; + *) + PATH=prefix/bin:$PATH +esac + + +case $MANPATH in + *prefix/share/man*) + true + ;; + *) + MANPATH=prefix/share/man:$MANPATH + export MANPATH +esac + + +case $LD_LIBRARY_PATH in + *libdir*) + true + ;; + *) + if [ -z "$LD_LIBRARY_PATH" ]; then + LD_LIBRARY_PATH=libdir + else + LD_LIBRARY_PATH="libdir:$LD_LIBRARY_PATH" + fi + export LD_LIBRARY_PATH +esac diff --git a/openmpi-2.1.6.0.d9b9e59e5c5a.tar.bz2 b/openmpi-2.1.6.0.d9b9e59e5c5a.tar.bz2 new file mode 100644 index 0000000..4104eba --- /dev/null +++ b/openmpi-2.1.6.0.d9b9e59e5c5a.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:712c06b473c6b187ef47ae9767b7f272225ca3760c508f6d974bbfa1cb6daf14 +size 12913691 diff --git a/openmpi2-rpmlintrc b/openmpi2-rpmlintrc new file mode 100644 index 0000000..c8b2e40 --- /dev/null +++ b/openmpi2-rpmlintrc @@ -0,0 +1,5 @@ +# This line is mandatory to access the configuration functions +from Config import * + +addFilter("openmpi2-libs.* rpath-in-buildconfig") +addFilter("openmpi2-devel.* shared-lib-calls-exit") diff --git a/openmpi2.changes b/openmpi2.changes new file mode 100644 index 0000000..75fe7fb --- /dev/null +++ b/openmpi2.changes @@ -0,0 +1,362 @@ +------------------------------------------------------------------- +Tue Sep 13 13:51:49 UTC 2022 - Nicolas Morey-Chaisemartin + +- Add patch btl-openib-Add-support-for-newer-hardware.patch to support + newer RDMA hardware (ConnectX 4 and 5 VF, ConnectX6 PF + VF and Broadcom adapters) + +------------------------------------------------------------------- +Mon Jun 13 06:38:32 UTC 2022 - Nicolas Morey-Chaisemartin + +- Backport upstream patches to fix compilation with autoconf >= 2.70 + - Fix-error-with-stricter-quoting-requirements-of-autoconf-2.70.patch + - Always-include-the-stddef.h-header.patch + +------------------------------------------------------------------- +Tue Oct 19 15:23:32 UTC 2021 - Nicolas Morey-Chaisemartin + +- Move rpm macros to %_rpmmacrodir (bsc#1191389) + +------------------------------------------------------------------- +Wed Apr 28 11:08:54 UTC 2021 - Nicolas Morey-Chaisemartin + +- openmpi2 is not the default openmpi anymore for releases > 15.3 + +------------------------------------------------------------------- +Thu Mar 19 08:23:09 UTC 2020 - Nicolas Morey-Chaisemartin + +- Drop different package string between SLES and Leap (jsc#SLE-11846) + +------------------------------------------------------------------- +Wed Dec 4 15:57:47 UTC 2019 - Michel Normand + +- Add openmpi_disable_opal_fifo_test_issue5470.patch + as long as upstream issue#5470 not solved for PowerPC + https://github.com/open-mpi/ompi/issues/5470 + +------------------------------------------------------------------- +Fri Oct 25 15:26:36 UTC 2019 - Nicolas Morey-Chaisemartin + +- Link against libnuma (bsc#1155120) + +------------------------------------------------------------------- +Thu Oct 10 06:06:10 UTC 2019 - Nicolas Morey-Chaisemartin + +- Fix conflict with other opoenmpi*-macros-devel +- Add conflict with older provider name to avoid issues during updates +- Add openmpi_prefix macro to openmpi-macros-devel + +------------------------------------------------------------------- +Mon Sep 16 17:00:14 UTC 2019 - Michel Normand + +- Add -ffat-lto-objects in spec to avoid build error + +------------------------------------------------------------------- +Mon May 27 07:55:20 UTC 2019 - Nicolas Morey-Chaisemartin + +- Provide openmpi for suse_version >= 1500 +- Add macros package for non hpc flavour + +------------------------------------------------------------------- +Mon May 27 06:27:54 UTC 2019 - Nicolas Morey-Chaisemartin + +- Enable openmpi2 on ppc64 + +------------------------------------------------------------------- +Tue Apr 23 07:43:07 UTC 2019 - Nicolas Morey-Chaisemartin + +- Fix bad INCLUDE path in module (bsc#1132949) + +------------------------------------------------------------------- +Mon Apr 1 05:20:04 UTC 2019 - Nicolas Morey-Chaisemartin + +- Add add-gen-p5-chip-pci-id-to-ini-file.patch: + - Adds support for Broadcom 57500 adapters (bsc#1125651) + +------------------------------------------------------------------- +Thu Feb 14 06:53:05 UTC 2019 - nmoreychaisemartin@suse.com + +- Update to openmpi 2.1.6 (bsc#1094689) + - Many bug fixes. See NEWS for a complete list + +------------------------------------------------------------------- +Tue Nov 27 10:53:24 UTC 2018 - Bernhard Wiedemann + +- Add reproducible.patch to make package build reproducible + (boo#1047218, boo#1041090, boo#1084909) + +------------------------------------------------------------------- +Sun Nov 18 14:23:29 UTC 2018 - eich@suse.com + +- Add macro _hpc_openmpi_modules for modules support (bsc#1116458). + +------------------------------------------------------------------- +Mon Oct 15 07:48:00 UTC 2018 - nmoreychaisemartin@suse.com + +- Update to openmpi 2.1.5 (fate#326157) + - Many bug fixes. See NEWS for a complete list +- Drop openmpi2-add-HCAs-to-mca-ini.patch as it was + merged upstream. + +------------------------------------------------------------------- +Mon Sep 10 12:15:41 UTC 2018 - nmoreychaisemartin@suse.com + +- Remove bashism in preun scriptlet + +------------------------------------------------------------------- +Wed Sep 5 06:53:23 UTC 2018 - nmoreychaisemartin@suse.com + +- Fix handling of mpi-selector during updates (bsc#1098653) + +------------------------------------------------------------------- +Sun Aug 19 09:24:10 UTC 2018 - eich@suse.com + +- macros.hpc-openmpi2: + replace %%compiler_family by %%hpc_compiler_family + +------------------------------------------------------------------- +Thu Jun 7 13:06:01 UTC 2018 - jjolly@suse.com + +- Updated openmpi2-add-HCAs-to-mca-ini.patch + * Adds Broadcom BCM57414 NetXtreme-E RDMA Ethernet Controller (bsc#1094689) + +------------------------------------------------------------------- +Fri May 18 13:38:38 UTC 2018 - jjolly@suse.com + +- Added openmpi2-add-HCAs-to-mca-ini.patch + * Adds necessary parameters for QLogic Corp. FastLinQ QL41000 (bsc#1092257) + +------------------------------------------------------------------- +Wed May 2 18:20:59 UTC 2018 - eich@suse.com + +- Create missing docs master package (bsc#1091714) + +------------------------------------------------------------------- +Tue Mar 27 06:39:04 UTC 2018 - nmoreychaisemartin@suse.com + +- Update to openmpi 2.1.3 + - Update internal PMIx version to 1.2.5. + - Fix a problem with ompi_info reporting using param option. + - Correct PMPI_Aint_{add|diff} to be functions (not subroutines) + in the Fortran mpi_f08 module. + - Fix a problem when doing MPI I/O using data types with large + extents in conjunction with MPI_TYPE_CREATE_SUBARRAY. Thanks to + - Fix a problem when opening many files using MPI_FILE_OPEN. + - Fix a problem with debuggers failing to attach to a running job. + - Fix a problem when using madvise and the OpenIB BTL. + - Fix a problem in the Vader BTL that resulted in failures of + IMB under certain circumstances. + - Fix a problem preventing Open MPI from working under Cygwin. + - Reduce some verbosity being emitted by the USNIC BTL under certain + circumstances. + - Fix a problem with misdirection of SIGKILL. + - Replace use of posix_memalign with malloc for small allocations. + - Fix a problem with Open MPI's out of band TCP network for file descriptors + greater than 32767. + - Plug a memory leak in MPI_Mem_free(). +- Drop btl-vader-change-the-way-fast-boxes-are-used.patch as it + merged upstream. +- Add fix-rdma-component-selection.patch to fix bad rdma component selection + which can cause stall when running on multiple IB nodes (bsc#1087031) + +------------------------------------------------------------------- +Mon Mar 26 11:30:52 UTC 2018 - nmoreychaisemartin@suse.com + +- Enable --enable-mpirun-prefix-by-default (bsc#1086821) + +------------------------------------------------------------------- +Fri Feb 9 11:43:30 UTC 2018 - cgoll@suse.com + +- Fix summary in module files (bnc#1080259) + +------------------------------------------------------------------- +Tue Jan 30 20:12:31 UTC 2018 - eich@suse.com + +- Use macro in mpivars.(c)sh to be independent of changes to the module + setup for the compiler (boo#1078364). + +------------------------------------------------------------------- +Wed Jan 17 09:55:44 UTC 2018 - nmoreychaisemartin@suse.com + +- Switch from gcc6 to gcc7 as additional compiler flavor for HPC on SLES. +- Fix library package requires - use HPC macro (boo#1074890) +- Fix rpm macro file. +- Only build openmpi2-config for the standard flavor + +------------------------------------------------------------------- +Thu Dec 7 10:58:31 UTC 2017 - nmoreychaisemartin@suse.com + +- Add btl-vader-change-the-way-fast-boxes-are-used.patch to + fix a SEGV on i386 systems + +------------------------------------------------------------------- +Fri Oct 13 12:39:09 UTC 2017 - nmoreychaisemartin@suse.com + +- Fix pre/post install call to ldconfig + +------------------------------------------------------------------- +Tue Oct 10 13:15:22 UTC 2017 - nmoreychaisemartin@suse.com + +- Add a ringdisabled flag to allow building only the standard flavor + so not all flavors are pulled into staging rings +- Fix baselibs.conf generation (wrong directory and name) + +------------------------------------------------------------------- +Fri Oct 6 13:56:53 UTC 2017 - nmoreychaisemartin@suse.com + +- Add conflicts between the macros-devel packages + +------------------------------------------------------------------- +Mon Sep 25 09:56:27 UTC 2017 - nmoreychaisemartin@suse.com + +- Convert to multibuild. +- Move all the doc to the docs RPM +- Add HPC build using environment modules (FATE#321711). +- Resync spec with openmpi and openmpi3 + +------------------------------------------------------------------- +Mon Sep 25 09:21:25 UTC 2017 - nmoreychaisemartin@suse.com + +- Update to OpenMPI 2.1.2 + * Many bug fixes. See NEWS +- Fix VERSION file during build so that ompi_info reports good infos + +------------------------------------------------------------------- +Tue Sep 19 14:36:31 UTC 2017 - nmoreychaisemartin@suse.com + +- Remove --disable-mca-dso + Related bug was due to openmpi/*.so wrongly packaged as devel + +------------------------------------------------------------------- +Fri Sep 15 13:39:33 UTC 2017 - nmoreychaisemartin@suse.com + +- Reenable fortan08 bindings as gcc >= 5 is now the default +- Remove devel-headers configure option (reserved for MPI plugins developers) + +------------------------------------------------------------------- +Tue Sep 12 16:12:29 UTC 2017 - nmoreychaisemartin@suse.com + +- Update to 2.1.1.186.9a3ac9803c +- Drop openmpi-pmix-configure-ac.patch as it was merged upstream + +------------------------------------------------------------------- +Wed Sep 6 12:09:30 UTC 2017 - nmoreychaisemartin@suse.com + +- Update to 2.1.1.176.7aa585d4ff (2.1.2rc3) + * Too many bug fixes to list. See NEWS + * ppc64be support was dropped +- Drop btl-vader-work-around-ob1-pending-fragment-bug.patch and + pml-ob1-do-not-access-fragment-after-calling-btl-rget.patch as + they were merged upstream. +- Package NEWS file +- Add openmpi-pmix-configure-ac.patch to fix + a compilation issue on Leap 42.3/SLE12 SP3 + +------------------------------------------------------------------- +Tue Sep 5 16:04:49 UTC 2017 - nmoreychaisemartin@suse.com + +- Update _service to allow auto updates from github + +------------------------------------------------------------------- +Sun Aug 13 11:17:00 UTC 2017 - schwab@linux-m68k.org + +- Enable ucx only on supported platforms + +------------------------------------------------------------------- +Wed Jul 19 15:18:49 UTC 2017 - nmoreychaisemartin@suse.com + +- Fix module file name + +------------------------------------------------------------------- +Wed Jul 12 08:02:32 UTC 2017 - nmoreychaisemartin@suse.com + +- Add pml-ob1-do-not-access-fragment-after-calling-btl-rget.patch and + btl-vader-work-around-ob1-pending-fragment-bug.patch + to fix upstream bug https://github.com/open-mpi/ompi/issues/3821 + which causes openmpi2 to fail the IMB test suite + +------------------------------------------------------------------- +Tue Jul 11 09:44:34 UTC 2017 - nmoreychaisemartin@suse.com + +- Do not require openucx libs for suse_version < 1320 + +------------------------------------------------------------------- +Fri Jul 7 07:59:13 UTC 2017 - nmoreychaisemartin@suse.com + +- Cleanup upstream spec file +- Disable rpath in configure + +------------------------------------------------------------------- +Thu Jun 29 07:59:20 UTC 2017 - nmoreychaisemartin@suse.com + +- Build with openucx support when it is available +- Buid plugins as part of the MPI library. Fixes: + * Missing shmem support + * Missing Requires in RPM +- Build with libfabric support on x86 + +------------------------------------------------------------------- +Wed Jun 28 06:31:04 UTC 2017 - jengelh@inai.de + +- Trim filler wording from description +- Replace uses of old $RPM_ variables, remove redundant %clean + section, abolish %__-type macro indirection, + remove excess piping to xargs +- Add missing %_smp_mflags. + +------------------------------------------------------------------- +Thu Jun 15 12:06:33 UTC 2017 - nmoreychaisemartin@suse.com + +- Add support for openmpi2 over PSM2 and libfabric +- Reference baselibs.conf and openmpi2-rpmlintrc in spec +- Add _service to fetch from upstream github repo + +------------------------------------------------------------------- +Thu Jun 8 11:39:44 UTC 2017 - nmoreychaisemartin@suse.com + +- Remove version dependencies to libibumad and libibverbs + +------------------------------------------------------------------- +Wed May 31 12:30:39 UTC 2017 - nmoreychaisemartin@suse.com + +- Fix module file paths + +------------------------------------------------------------------- +Tue May 30 14:21:28 UTC 2017 - nmoreychaisemartin@suse.com + +- Add openmpi2-config package which contains runtime configuration + files for OpenMPI 1 and/or 2 + +------------------------------------------------------------------- +Wed May 17 09:17:16 UTC 2017 - nmoreychaisemartin@suse.com + +- Update to OpenMPI 2.1.1 + * Fix a problem with one of Open MPI's fifo data structures which led to + hangs in a make check test. + * Add missing MPI_AINT_ADD/MPI_AINT_DIFF function definitions to mpif.h. + * Fix the error return from MPI_WIN_LOCK when rank argument is invalid. + * Fix a problem with mpirun/orterun when started under a debugger. + * Add configury option to disable use of CMA by the vader BTL. + * Add configury check for MPI_DOUBLE_COMPLEX datatype support. + * Fix memory allocated by MPI_WIN_ALLOCATE_SHARED to + be 64 byte aligned. + * Update MPI_WTICK man page to reflect possibly higher + resolution than 10e-6. + * Add missing MPI_T_PVAR_SESSION_NULL definition to mpi.h + include file. + * Enhance the Open MPI spec file to install modulefile in /opt + if installed in a non-default location. + * Fix a problem with conflicting PMI symbols when linking statically. + * S390/S390x support +- Drop openmpi2-ia32-fix-atomic.patch openmpi2-s390.patch as they are now + fixed/supported upstream. + +------------------------------------------------------------------- +Tue May 2 15:45:26 UTC 2017 - nmoreychaisemartin@suse.com + +- Add testsuite package + +------------------------------------------------------------------- +Mon Apr 24 18:22:22 UTC 2017 - nmoreychaisemartin@suse.com + +- Initial packaging of OpenMPI 2.1.0 + diff --git a/openmpi2.spec b/openmpi2.spec new file mode 100644 index 0000000..52af886 --- /dev/null +++ b/openmpi2.spec @@ -0,0 +1,754 @@ +# +# spec file +# +# Copyright (c) 2022 SUSE LLC +# Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +# University Research and Technology +# Corporation. All rights reserved. +# Copyright (c) 2004-2005 The University of Tennessee and The University +# of Tennessee Research Foundation. All rights +# reserved. +# Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +# University of Stuttgart. All rights reserved. +# Copyright (c) 2004-2005 The Regents of the University of California. +# All rights reserved. +# Copyright (c) 2006-2016 Cisco Systems, Inc. All rights reserved. +# Copyright (c) 2013 Mellanox Technologies, Inc. +# All rights reserved. +# Copyright (c) 2015 Research Organization for Information Science +# and Technology (RIST). All rights reserved. +# Copyright (c) 2003, The Regents of the University of California, through +# Lawrence Berkeley National Laboratory (subject to receipt of any +# required approvals from the U.S. Dept. of Energy). All rights reserved. +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%global flavor @BUILD_FLAVOR@%{nil} + +# Static libraries are disabled by default +# for non HPC builds +# To enable them, simply uncomment: +# % define build_static_devel 1 + +%define pname openmpi +%define vers 2.1.6 +%define _vers 2_1_6 +%define m_f_ver 2 +%bcond_with ringdisabled + +%if "%flavor" == "" +ExclusiveArch: do_not_build + %{bcond_with hpc} + %define package_name %pname%{m_f_ver} +%else + # Trickery for OBS Staging. If _with_ringdisabled is set + # we only want to build the flavors required by other rings packages. + # Do not build any other ones + %if %{with ringdisabled} + %if "%flavor" != "standard" +ExclusiveArch: do_not_build + %endif + %endif + + %if "%flavor" == "standard" || "%flavor" == "testsuite" + %define package_name %{pname}%{m_f_ver} + %bcond_with hpc + %if "%flavor" == "testsuite" + %define testsuite 1 + %endif + %else + %bcond_without hpc +# Needs to be defined here to avoid hen/egg problem with test packages. + %define package_name %{pname}_%{_vers}-%{compiler_family}%{?c_f_ver}-hpc + %define build_static_devel 1 + %endif +%endif + +%if "%flavor" == "gnu-hpc" +%define compiler_family gnu +%undefine c_f_ver +%endif + +%if "%flavor" == "gnu7-hpc" +%define compiler_family gnu +%define c_f_ver 7 +%endif + +%if "%flavor" == "gnu-hpc-testsuite" +%define compiler_family gnu +%undefine c_f_ver +%define testsuite 1 +%endif + +%if "%flavor" == "gnu7-hpc-testsuite" +%define compiler_family gnu +%define c_f_ver 7 +%define testsuite 1 +%endif + +%if 0%{?suse_version} >= 1320 +%ifarch aarch64 %power64 x86_64 s390x +%define with_ucx 1 +%endif +%endif + +# Detect whether we are the default openMPI implemantation or not +# openmpi2 is default for SLE/Leap 15.[0-3] +%if "%{flavor}" == "standard" && %{suse_version} == 1500 && 0%{?sle_version} <= 150300 +%define default_openmpi 1 +%else +%define default_openmpi 0 +%endif + +%if %{with hpc} +%{!?compiler_family:%global compiler_family gnu} +%{hpc_init -M -c %compiler_family %{?c_f_ver:-v %{c_f_ver}} -m openmpi %{?mpi_f_ver:-V %{mpi_f_ver}}} + +%global hpc_openmpi_dep_version %(VER=%m_f_ver; echo -n ${VER}) +%global hpc_openmpi_dir openmpi%{hpc_openmpi_dep_version} +%global hpc_openmpi_pack_version %{hpc_openmpi_dep_version} +%endif + +%define git_ver .0.d9b9e59e5c5a + +############################################################################# +# +# Preamble Section +# +############################################################################# + +Name: %{package_name}%{?testsuite:-testsuite} +Version: %{vers} +Release: 0 +Summary: An implementation of MPI/SHMEM +License: BSD-3-Clause +Group: Development/Libraries/Parallel +URL: http://www.open-mpi.org/ +Source0: openmpi-%{version}%{git_ver}.tar.bz2 +Source2: openmpi2-rpmlintrc +Source3: macros.hpc-openmpi +Source4: mpivars.sh +Source5: mpivars.csh +Patch0: fix-rdma-component-selection.patch +Patch1: reproducible.patch +Patch2: add-gen-p5-chip-pci-id-to-ini-file.patch +Patch3: openmpi_disable_opal_fifo_test_issue5470.patch +Patch4: Fix-error-with-stricter-quoting-requirements-of-autoconf-2.70.patch +Patch5: Always-include-the-stddef.h-header.patch +Patch6: btl-openib-Add-support-for-newer-hardware.patch +Provides: mpi +BuildRoot: %{_tmppath}/%{name}-%{version}-build +BuildRequires: autoconf +BuildRequires: automake +BuildRequires: fdupes +BuildRequires: flex +BuildRequires: libibumad-devel +BuildRequires: libibverbs-devel +BuildRequires: libtool +# net-tools is required to run hostname +BuildRequires: net-tools +%if 0%{?testsuite} +BuildArch: noarch +BuildRequires: %{package_name} = %{version} +%endif +%if 0%{?with_ucx} +BuildRequires: libucm-devel +BuildRequires: libucp-devel +BuildRequires: libucs-devel +BuildRequires: libuct-devel +%endif +%if %{without hpc} +BuildRequires: Modules +BuildRequires: gcc-c++ +BuildRequires: gcc-fortran +BuildRequires: mpi-selector +Requires: mpi-selector +Requires(preun):mpi-selector +Requires: %{package_name}-libs = %{version} +%else +BuildRequires: %{compiler_family}%{?c_f_ver}-compilers-hpc-macros-devel +BuildRequires: lua-lmod +BuildRequires: suse-hpc +%if 0%{!?testsuite:1} +Requires: lib%{package_name} = %{version} +%endif +%hpc_requires +%endif + +%ifarch %{ix86} x86_64 +BuildRequires: infinipath-psm-devel +BuildRequires: libfabric-devel +%endif + +%ifarch x86_64 +BuildRequires: libnuma-devel +BuildRequires: libpsm2-devel +BuildRequires: numactl +%endif + +Requires: openmpi-runtime-config +Recommends: openmpi%{m_f_ver}-config +%if 0%{?default_openmpi} +Provides: openmpi = %{version} +%endif +# OpenMPI requires ssh (or rsh) to run even on a single host +# Force ssh to make sure the install works out of the box +Requires: openssh + +%if %{without hpc} +%define mpi_prefix %{_libdir}/mpi/gcc/openmpi%{m_f_ver} + +%define mpi_bindir %{mpi_prefix}/bin +%define mpi_libdir %{mpi_prefix}/%{_lib} +%define mpi_datadir %{mpi_prefix}/share +%define mpi_helpdir %{mpi_datadir}/%{pname}%{m_f_ver} +%define mpi_includedir %{mpi_prefix}/include +%define mpi_mandir %{mpi_prefix}/share/man +%else +%define mpi_prefix %hpc_prefix + +%define mpi_bindir %hpc_bindir +%define mpi_libdir %hpc_libdir +%define mpi_datadir %hpc_datadir +%define mpi_helpdir %{mpi_datadir}/openmpi +%define mpi_includedir %hpc_includedir +%define mpi_mandir %hpc_mandir + +%endif + +%description +%if 0%{?testsuite} +This package is just needed to run the testsuite and does not contain +anything interesting. +%else +OpenMPI is an implementation of the Message Passing Interface, a +standardized API typically used for parallel and/or distributed +computing. OpenMPI is the merged result of four prior implementations +where the team found for them to excel in one or more areas, +such as latency or throughput. + +OpenMPI also includes an implementation of the OpenSHMEM parallel +programming API, which is a Partitioned Global Address Space (PGAS) +abstraction layer providing inter-process communication using +one-sided communication techniques. + +This package provides general tools (mpirun, mpiexec, etc.) and the +Module Component Architecture (MCA) base and plugins necessary for +running Open MPI/OpenSHMEM jobs. +%endif + +%if 0%{!?testsuite:1} +%package %{!?with_hpc:libs}%{?with_hpc:-n lib%{name}} +Summary: OpenMPI runtime libraries for OpenMPI %{?with_hpc:HPC} version %{version} +Group: System/Libraries +Requires: %{name} = %{version} +%if 0%{?default_openmpi} +Provides: openmpi-libs = %{version} +%endif +%{?with_hpc:%hpc_requires} + +%description %{!?with_hpc:libs}%{?with_hpc:-n lib%{name}} +OpenMPI is an implementation of the Message Passing Interface, a +standardized API typically used for parallel and/or distributed +computing. OpenMPI is the merged result of four prior implementations +where the team found for them to excel in one or more areas, +such as latency or throughput. + +OpenMPI also includes an implementation of the OpenSHMEM parallel +programming API, which is a Partitioned Global Address Space (PGAS) +abstraction layer providing inter-process communication using +one-sided communication techniques. + +This subpackage provides the OpenMPI shared libraries. + +%package devel +Summary: SDK for openMPI %{?with_hpc:HPC} version %{version} +Group: Development/Libraries/Parallel +Requires: libibumad-devel +Requires: libibverbs-devel +%if %{without hpc} +Requires: libstdc++-devel +%if 0%{?default_openmpi} +Provides: openmpi-devel = %{version} +%endif +%else +%hpc_requires_devel +%endif +Requires: %{name} = %{version} + +%description devel +OpenMPI is an implementation of the Message Passing Interface, a +standardized API typically used for parallel and/or distributed +computing. OpenMPI is the merged result of four prior implementations +where the team found for them to excel in one or more areas, +such as latency or throughput. + +OpenMPI also includes an implementation of the OpenSHMEM parallel +programming API, which is a Partitioned Global Address Space (PGAS) +abstraction layer providing inter-process communication using +one-sided communication techniques. + +This subpackage provides the development files for Open MPI/OpenSHMEM, +such as wrapper compilers and header files for MPI/OpenSHMEM +development. + +%package docs +Summary: Documentation for Open MPI/SHMEM %{?with_hpc:HPC} version %{version} +Group: Development/Documentation +Requires: %{name} = %{version} + +%description docs +OpenMPI is an implementation of the Message Passing Interface, a +standardized API typically used for parallel and/or distributed +computing. OpenMPI is the merged result of four prior implementations +where the team found for them to excel in one or more areas, +such as latency or throughput. + +OpenMPI also includes an implementation of the OpenSHMEM parallel +programming API, which is a Partitioned Global Address Space (PGAS) +abstraction layer providing inter-process communication using +one-sided communication techniques. + +This subpackage provides the documentation for Open MPI/OpenSHMEM. + +%package macros-devel +Summary: Macros for openMPI version %{version} +Group: Development/Libraries/Parallel +Requires: %{name}-devel = %{version} +# Make sure no two openmpi macro file can be installed at once +Provides: %{pname}-macros-provider = %{version} +Conflicts: otherproviders(%{pname}-macros-provider) +# Conflict (without providing) with the older openmpi-hpc-macros-devel flag +# to avoid issue with older packages +Conflicts: otherproviders(%{pname}-hpc-macros-devel) + +%if 0%{?default_openmpi} +Provides: openmpi-macros-devel = %{version} +%endif + +%description macros-devel +Macros for building RPM packages for OpenMPI version %{version}. + +%if 0%{?build_static_devel} +%package devel-static +Summary: Static libraries for openMPI %{?with_hpc:HPC} version %{version} +Group: Development/Libraries/Parallel +Requires: %{name}-devel = %{version} +%if 0%{?default_openmpi} +Provides: openmpi-devel-static = %{version} +%endif + +%description devel-static +OpenMPI is an implementation of the Message Passing Interface, a +standardized API typically used for parallel and/or distributed +computing. OpenMPI is the merged result of four prior implementations +where the team found for them to excel in one or more areas, +such as latency or throughput. + +This RPM contains the static library files, which are packaged separately from +the dynamic library and headers. +%endif + +%if %{without hpc} +%package -n %{pname}%{m_f_ver}-config +Summary: Runtime configuration files for openMPI %{?with_hpc:HPC} version %{version} +Group: Development/Libraries/Parallel +Provides: openmpi-runtime-config = %{version} +Conflicts: otherproviders(openmpi-runtime-config) + +%description -n %{pname}%{m_f_ver}-config +OpenMPI is an implementation of the Message Passing Interface, a +standardized API typically used for parallel and/or distributed +computing. OpenMPI is the merged result of four prior implementations +where the team found for them to excel in one or more areas, +such as latency or throughput. + +This RPM contains the configuration files for OpenMPI runtime (Version 1 or 2). +%endif + +%if %{with hpc} +%{hpc_master_package -L -a} +%{hpc_master_package -l} +%{hpc_master_package devel} +%{hpc_master_package docs} +%{hpc_master_package macros-devel} +%{hpc_master_package -a devel-static} +%endif # ?with_hpc +%endif # !testsuite + +############################################################################# +# +# Prepatory Section +# +############################################################################# +%prep +echo FLAVOR %{flavor} +%if %{with hpc} +echo with HPC +%endif +%if %{without hpc} +echo without HPC +%endif +%setup -q -n openmpi-%{version}%{git_ver} +%patch0 +%if %{without hpc} +cat > %{_sourcedir}/baselibs.conf < %{buildroot}%{mpi_bindir}/mpivars.sh +sed -e 's,prefix,%{mpi_prefix},g' -e 's,libdir,%{mpi_libdir},g' %{SOURCE5} \ + > %{buildroot}%{mpi_bindir}/mpivars.csh + +mkdir -p %{buildroot}%{_datadir}/modules/gnu-openmpi +cat << EOF > %{buildroot}%{_datadir}/modules/gnu-openmpi/%{version} +#%%Module +proc ModulesHelp { } { + global dotversion + puts stderr "\tLoads the gnu - openmpi %{version} Environment" +} + +module-whatis "Loads the gnu openmpi %{version} Environment." +conflict gnu-openmpi +prepend-path PATH %{mpi_bindir} +prepend-path INCLUDE %{mpi_includedir} +prepend-path INCLUDE %{mpi_libdir} +prepend-path MANPATH %{mpi_mandir} +prepend-path LD_LIBRARY_PATH %{mpi_libdir} + +EOF + +mkdir -p %{buildroot}%{_rpmmacrodir} +cat <%{buildroot}%{_rpmmacrodir}/macros.openmpi +# +# openmpi +# +%openmpi_prefix %{mpi_prefix} +%setup_openmpi source %{mpi_bindir}/mpivars.sh + +%openmpi_requires Requires: %{name}-libs +%openmpi_devel_requires Requires: %{name}-devel + +EOF +%else +%hpc_write_modules_files +#%%Module1.0##################################################################### + +proc ModulesHelp { } { + +puts stderr " " +puts stderr "This module loads the %{pname} library built with the %{compiler_family} toolchain." +puts stderr "\nVersion %{version}\n" + +} +module-whatis "Name: %{pname} built with %{compiler_family} toolchain" +module-whatis "Version: %{version}" +module-whatis "Category: runtime library" +module-whatis "Description: %{SUMMARY:0}" +module-whatis "URL: %{url}" + +set version %{version} + +setenv MPI_DIR %{hpc_mpi_install_path} +prepend-path PATH %{hpc_bindir} +prepend-path MANPATH %{hpc_mandir} +prepend-path LD_LIBRARY_PATH %{hpc_libdir} +prepend-path MODULEPATH %{hpc_modulepath} +%{hpc_modulefile_add_pkgconfig_path} + +family "MPI" +EOF +cat < %{buildroot}/%{mpi_bindir}/mpivars.sh +%hpc_setup_compiler +module load %{hpc_mpi_family}%{?pack_suff}/%{version} +EOF +sed -e "s/export/setenv/" -e "s/=/ /" \ + %{buildroot}/%{mpi_bindir}/mpivars.sh > \ + %{buildroot}/%{mpi_bindir}/mpivars.csh +mkdir -p %{buildroot}%{_rpmmacrodir} +cp %{S:3} %{buildroot}%{_rpmmacrodir} + +# Drop the files that should go into %{pname}-config as we only package them +# in the non HPC build +rm -f %{buildroot}%{_sysconfdir}/openmpi-default-hostfile +rm -f %{buildroot}%{_sysconfdir}/openmpi-mca-params.conf +rm -f %{buildroot}%{_sysconfdir}/openmpi-totalview.tcl +%endif + +%if %{without hpc} +%post +# Always register. We might be already registered in the case of an udate +# but mpi-selector handles it fine +/usr/bin/mpi-selector \ + --register %{name} \ + --source-dir %{mpi_bindir} \ + --yes + +%preun +# Only unregister when uninstalling +if [ "$1" = "0" ]; then + /usr/bin/mpi-selector --unregister %{name} --yes + # Deregister the default if we are uninstalling it + if [ "$(/usr/bin/mpi-selector --system --query)" = "%{name}" ]; then + /usr/bin/mpi-selector --system --unset --yes + fi +fi + +%post libs -p /sbin/ldconfig +%postun libs -p /sbin/ldconfig +%else #!?with_hpc +# make it default +%post -n lib%{name} -p /sbin/ldconfig +%postun -n lib%{name} -p /sbin/ldconfig + +%postun +%hpc_module_delete_if_default +%endif #!?with_hpc + +%files +%defattr(-, root, root) +%doc NEWS README AUTHORS +%license LICENSE +%dir %{mpi_prefix} +%dir %{mpi_bindir} +%dir %{mpi_libdir} +%dir %{mpi_datadir} +%dir %{mpi_mandir} +%{mpi_bindir}/mpivars.csh +%{mpi_bindir}/mpivars.sh + +%if %{without hpc} +%dir %{_libdir}/mpi +%dir %{_libdir}/mpi/gcc +%dir %{_datadir}/modules/gnu-openmpi +%{_datadir}/modules/gnu-openmpi/%{version} +%else # with hpc +%hpc_mpi_dirs +%hpc_modules_files +%endif # with hpc +# +%if 0%{?suse_version} <= 1315 && 0%{?sle_version} <= 120200 +%dir %{mpi_datadir}/openmpi/doc +%{mpi_datadir}/openmpi/doc/COPYRIGHT-ptmalloc2.txt +%endif +# +%{mpi_bindir}/mpirun +%{mpi_bindir}/ompi-clean +%{mpi_bindir}/ompi-dvm +%{mpi_bindir}/ompi-ps +%{mpi_bindir}/ompi-server +%{mpi_bindir}/ompi-submit +%{mpi_bindir}/ompi-top +%{mpi_bindir}/ompi_info +%{mpi_bindir}/orte-clean +%{mpi_bindir}/orte-dvm +%{mpi_bindir}/orte-info +%{mpi_bindir}/orte-ps +%{mpi_bindir}/orte-server +%{mpi_bindir}/orte-submit +%{mpi_bindir}/orte-top +%{mpi_bindir}/orted +%{mpi_bindir}/orterun +%{mpi_bindir}/oshmem_info +%{mpi_bindir}/oshrun +%{mpi_bindir}/shmemrun + +%dir %{mpi_datadir}/openmpi +%dir %{mpi_datadir}/openmpi/amca-param-sets +%{mpi_datadir}/openmpi/amca-param-sets/btl-openib-benchmark +%{mpi_datadir}/openmpi/amca-param-sets/example.conf +%{mpi_datadir}/openmpi/mca-btl-openib-device-params.ini +%{mpi_datadir}/openmpi/*-data.txt +%{mpi_datadir}/openmpi/help-*.txt + +%files %{!?with_hpc:libs}%{?with_hpc:-n lib%{name}} +%defattr(-,root,root) +%dir %mpi_prefix/ +%dir %mpi_libdir/ +%mpi_libdir/*.so.* +%{mpi_libdir}/openmpi/*.so + +%files devel +%defattr(-, root, root) +%dir %{mpi_libdir}/openmpi +%dir %{mpi_libdir}/pkgconfig +%{mpi_includedir} +%{mpi_libdir}/*.so +%{mpi_libdir}/pkgconfig/*.pc +%{mpi_libdir}/mpi.mod +%if 0%{?suse_version} >= 1320 +%{mpi_libdir}/mpi_f08*.mod +%{mpi_libdir}/pmpi_f08*.mod +%endif +%{mpi_bindir}/mpiCC +%{mpi_bindir}/mpic++ +%{mpi_bindir}/mpicc +%{mpi_bindir}/mpicxx +%{mpi_bindir}/mpiexec +%{mpi_bindir}/mpif77 +%{mpi_bindir}/mpif90 +%{mpi_bindir}/mpifort +%{mpi_bindir}/opal_wrapper +%{mpi_bindir}/ortecc +%{mpi_bindir}/oshcc +%{mpi_bindir}/oshfort +%{mpi_bindir}/shmemcc +%{mpi_bindir}/shmemfort +%{mpi_datadir}/openmpi/openmpi-valgrind.supp + +%files docs +%defattr(-, root, root, -) +%{mpi_mandir} + +%files macros-devel +%defattr(-,root,root,-) +%if %{with hpc} +%config %{_rpmmacrodir}/macros.hpc-openmpi +%else +%config %{_rpmmacrodir}/macros.openmpi +%endif + +%if 0%{?build_static_devel} +%files devel-static +%defattr(-, root, root) +%{mpi_libdir}/*.la +%{mpi_libdir}/openmpi/*.la +%{mpi_libdir}/*.a +%{mpi_libdir}/openmpi/*.a +%endif + +%if %{without hpc} +%files -n %{pname}%{m_f_ver}-config +%config %{_sysconfdir}/openmpi-default-hostfile +%config %{_sysconfdir}/openmpi-mca-params.conf +%{_sysconfdir}/openmpi-totalview.tcl +%endif + +%endif # !?testsuite + +%changelog diff --git a/openmpi_disable_opal_fifo_test_issue5470.patch b/openmpi_disable_opal_fifo_test_issue5470.patch new file mode 100644 index 0000000..31d1f18 --- /dev/null +++ b/openmpi_disable_opal_fifo_test_issue5470.patch @@ -0,0 +1,29 @@ +From: Michel Normand +Subject: openmpi disable opal fifo test issue5470 +Date: Wed, 04 Dec 2019 16:55:45 +0100 + +openmpi disable opal fifo test for PowerPC as per upstream issue +https://github.com/open-mpi/ompi/issues/5470 + +Signed-off-by: Michel Normand +--- + test/class/opal_fifo.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +Index: openmpi-2.1.6.0.d9b9e59e5c5a/test/class/opal_fifo.c +=================================================================== +--- openmpi-2.1.6.0.d9b9e59e5c5a.orig/test/class/opal_fifo.c ++++ openmpi-2.1.6.0.d9b9e59e5c5a/test/class/opal_fifo.c +@@ -121,6 +121,12 @@ int main (int argc, char *argv[]) { + double timing; + int rc; + ++#ifdef __powerpc64__ ++ printf ("disable test that hang as per\nhttps://github.com/open-mpi/ompi/issues/5470\n"); ++ test_success (); ++ return test_finalize (); ++#endif ++ + rc = opal_init_util (&argc, &argv); + test_verify_int(OPAL_SUCCESS, rc); + if (OPAL_SUCCESS != rc) { diff --git a/reproducible.patch b/reproducible.patch new file mode 100644 index 0000000..b6763a1 --- /dev/null +++ b/reproducible.patch @@ -0,0 +1,139 @@ +=> merged https://github.com/open-mpi/ompi/pull/3755 sort ; backport in 3756 +=> merged https://github.com/open-mpi/ompi/pull/5653 user+host +https://github.com/open-mpi/ompi/issues/3759 + + +Index: openmpi-2.1.1/autogen.pl +=================================================================== +--- openmpi-2.1.1.orig/autogen.pl ++++ openmpi-2.1.1/autogen.pl +@@ -85,7 +85,7 @@ if ($^O eq "solaris") { + } + + $username = getpwuid($>); +-$full_hostname = `hostname`; ++$full_hostname = $ENV{HOSTNAME} || `hostname`; + chomp($full_hostname); + $hostname = $full_hostname; + $hostname =~ s/^([\w\-]+)\..+/\1/; +@@ -316,7 +316,7 @@ sub mca_process_framework { + $mca_found->{$pname}->{$framework}->{found} = 1; + opendir(DIR, $dir) || + my_die "Can't open $dir directory"; +- foreach my $d (readdir(DIR)) { ++ foreach my $d (sort(readdir(DIR))) { + # Skip any non-directory, "base", or any dir that + # begins with "." + next +@@ -628,7 +628,7 @@ sub mpiext_run_global { + my $dir = "$topdir/$ext_prefix"; + opendir(DIR, $dir) || + my_die "Can't open $dir directory"; +- foreach my $d (readdir(DIR)) { ++ foreach my $d (sort(readdir(DIR))) { + # Skip any non-directory, "base", or any dir that begins with "." + next + if (! -d "$dir/$d" || $d eq "base" || substr($d, 0, 1) eq "."); +@@ -715,7 +715,7 @@ sub mpicontrib_run_global { + my $dir = "$topdir/$contrib_prefix"; + opendir(DIR, $dir) || + my_die "Can't open $dir directory"; +- foreach my $d (readdir(DIR)) { ++ foreach my $d (sort(readdir(DIR))) { + # Skip any non-directory, "base", or any dir that begins with "." + next + if (! -d "$dir/$d" || $d eq "base" || substr($d, 0, 1) eq "."); +@@ -1144,9 +1144,6 @@ if (-e "orcm") { + + #--------------------------------------------------------------------------- + +-$full_hostname = `hostname`; +-chomp($full_hostname); +- + $m4 = "dnl + dnl \$HEADER\$ + dnl +Index: openmpi-2.1.1/config/opal_functions.m4 +=================================================================== +--- openmpi-2.1.1.orig/config/opal_functions.m4 ++++ openmpi-2.1.1/config/opal_functions.m4 +@@ -95,8 +95,8 @@ EOF + # + + OPAL_CONFIGURE_USER="`whoami`" +-OPAL_CONFIGURE_HOST="`hostname | head -n 1`" +-OPAL_CONFIGURE_DATE="`date`" ++OPAL_CONFIGURE_HOST="${HOSTNAME:-`hostname | head -n 1`}" ++OPAL_CONFIGURE_DATE="reproducibledate" + + # + # Save these details so that they can be used in opal_info later +@@ -115,8 +115,8 @@ AC_DEFUN([OPAL_BASIC_SETUP],[ + # + + OPAL_CONFIGURE_USER="`whoami`" +-OPAL_CONFIGURE_HOST="`hostname | head -n 1`" +-OPAL_CONFIGURE_DATE="`date`" ++OPAL_CONFIGURE_HOST="${HOSTNAME:-`hostname | head -n 1`}" ++OPAL_CONFIGURE_DATE="reproducibledate" + + # + # Make automake clean emacs ~ files for "make clean" +Index: openmpi-2.1.1/config/opal_get_version.m4 +=================================================================== +--- openmpi-2.1.1.orig/config/opal_get_version.m4 ++++ openmpi-2.1.1/config/opal_get_version.m4 +@@ -91,7 +91,7 @@ m4_define([OPAL_GET_VERSION],[ + $2_REPO_REV=`git describe --tags --always` + fi + else +- $2_REPO_REV="date`date '+%Y-%m-%d'`" ++ $2_REPO_REV="date" + fi + fi + +Index: openmpi-2.1.1/ompi/tools/ompi_info/Makefile.am +=================================================================== +--- openmpi-2.1.1.orig/ompi/tools/ompi_info/Makefile.am ++++ openmpi-2.1.1/ompi/tools/ompi_info/Makefile.am +@@ -26,8 +26,8 @@ AM_CFLAGS = \ + -DOPAL_CONFIGURE_HOST="\"@OPAL_CONFIGURE_HOST@\"" \ + -DOPAL_CONFIGURE_DATE="\"@OPAL_CONFIGURE_DATE@\"" \ + -DOMPI_BUILD_USER="\"$$USER\"" \ +- -DOMPI_BUILD_HOST="\"`hostname`\"" \ +- -DOMPI_BUILD_DATE="\"`date`\"" \ ++ -DOMPI_BUILD_HOST="\"$${HOSTNAME:-`hostname`}\"" \ ++ -DOMPI_BUILD_DATE="\"reproducibledate\"" \ + -DOMPI_BUILD_CFLAGS="\"@CFLAGS@\"" \ + -DOMPI_BUILD_CPPFLAGS="\"@CPPFLAGS@\"" \ + -DOMPI_BUILD_CXXFLAGS="\"@CXXFLAGS@\"" \ +Index: openmpi-2.1.1/orte/tools/orte-info/Makefile.am +=================================================================== +--- openmpi-2.1.1.orig/orte/tools/orte-info/Makefile.am ++++ openmpi-2.1.1/orte/tools/orte-info/Makefile.am +@@ -23,8 +23,8 @@ AM_CFLAGS = \ + -DOPAL_CONFIGURE_HOST="\"@OPAL_CONFIGURE_HOST@\"" \ + -DOPAL_CONFIGURE_DATE="\"@OPAL_CONFIGURE_DATE@\"" \ + -DOMPI_BUILD_USER="\"$$USER\"" \ +- -DOMPI_BUILD_HOST="\"`hostname`\"" \ +- -DOMPI_BUILD_DATE="\"`date`\"" \ ++ -DOMPI_BUILD_HOST="\"$${HOSTNAME:-`hostname`}\"" \ ++ -DOMPI_BUILD_DATE="\"reproducibledate\"" \ + -DOMPI_BUILD_CFLAGS="\"@CFLAGS@\"" \ + -DOMPI_BUILD_CPPFLAGS="\"@CPPFLAGS@\"" \ + -DOMPI_BUILD_CXXFLAGS="\"@CXXFLAGS@\"" \ +Index: openmpi-2.1.1/oshmem/tools/oshmem_info/Makefile.am +=================================================================== +--- openmpi-2.1.1.orig/oshmem/tools/oshmem_info/Makefile.am ++++ openmpi-2.1.1/oshmem/tools/oshmem_info/Makefile.am +@@ -15,8 +15,8 @@ AM_CPPFLAGS = \ + -DOPAL_CONFIGURE_HOST="\"@OPAL_CONFIGURE_HOST@\"" \ + -DOPAL_CONFIGURE_DATE="\"@OPAL_CONFIGURE_DATE@\"" \ + -DOMPI_BUILD_USER="\"$$USER\"" \ +- -DOMPI_BUILD_HOST="\"`hostname`\"" \ +- -DOMPI_BUILD_DATE="\"`date`\"" \ ++ -DOMPI_BUILD_HOST="\"$${HOSTNAME:-`hostname`}\"" \ ++ -DOMPI_BUILD_DATE="\"reproducibledate\"" \ + -DOMPI_BUILD_CFLAGS="\"@CFLAGS@\"" \ + -DOMPI_BUILD_CPPFLAGS="\"@CPPFLAGS@\"" \ + -DOMPI_BUILD_CXXFLAGS="\"@CXXFLAGS@\"" \