Sync from SUSE:ALP:Source:Standard:1.0 openmpi2 revision e29fdd132dac300d39e91f6dbc911ead

This commit is contained in:
Adrian Schröter 2023-06-07 08:17:17 +02:00
commit a3cc780a2a
17 changed files with 1583 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -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

View File

@ -0,0 +1,30 @@
commit 8ae595d47c49783906e940bd31659ad14006d854
Author: George Bosilca <bosilca@icl.utk.edu>
Date: Fri Mar 12 13:38:10 2021 -0500
Always include the stddef.h header.
Signed-off-by: George Bosilca <bosilca@icl.utk.edu>
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 <sys/time.h> header file.])

View File

@ -0,0 +1,23 @@
commit cb992424a2d67b70aad35925c9027f43e61c1ae6
Author: Christoph Niethammer <niethammer@hlrs.de>
Date: Tue Jan 19 22:56:19 2021 +0100
Fix error with stricter quoting requirements of autoconf-2.70
Signed-off-by: Christoph Niethammer <niethammer@hlrs.de>
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.

6
_multibuild Normal file
View File

@ -0,0 +1,6 @@
<multibuild>
<package>standard</package>
<package>testsuite</package>
<package>gnu-hpc</package>
<package>gnu-hpc-testsuite</package>
</multibuild>

17
_service Normal file
View File

@ -0,0 +1,17 @@
<services>
<service name="tar_scm" mode="disabled">
<param name="scm">git</param>
<param name="url">https://github.com/open-mpi/ompi.git</param>
<param name="package-meta">no</param>
<param name="exclude">.git</param>
<param name="filename">openmpi</param>
<param name="versionformat">@PARENT_TAG@.@TAG_OFFSET@.%h</param>
<param name="versionrewrite-pattern">v(.*)</param>
<param name="versionrewrite-replacement">\1</param>
<param name="revision">d9b9e59e5c5aaf2f071eb18fd05d5f60444f9e20</param>
</service>
<service name="recompress" mode="disabled">
<param name="file">openmpi*.tar</param>
<param name="compression">bz2</param>
</service>
</services>

View File

@ -0,0 +1,26 @@
commit 170b636e7c1823ebe22f6c132a89db3e165109bd
Author: Devesh Sharma <devesh.sharma@broadcom.com>
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 <devesh.sharma@broadcom.com>
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

View File

@ -0,0 +1,53 @@
commit 0776804c3f37250bd0e442197d4cbae820d4d09a
Author: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
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 <nmoreychaisemartin@suse.com>
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

View File

@ -0,0 +1,47 @@
commit 062e6fe4be4db6263372053509f155784fc94cc1
Author: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
Date: Wed Mar 28 11:17:17 2018 +0200
fix rdma component selection
Github issue#4976
bsc#1087031
Signed-off-by: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
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;
}

20
macros.hpc-openmpi Normal file
View File

@ -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

15
mpivars.csh Normal file
View File

@ -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

31
mpivars.sh Normal file
View File

@ -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

BIN
openmpi-2.1.6.0.d9b9e59e5c5a.tar.bz2 (Stored with Git LFS) Normal file

Binary file not shown.

5
openmpi2-rpmlintrc Normal file
View File

@ -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")

362
openmpi2.changes Normal file
View File

@ -0,0 +1,362 @@
-------------------------------------------------------------------
Tue Sep 13 13:51:49 UTC 2022 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
- 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 <nmoreychaisemartin@suse.com>
- 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 <nmoreychaisemartin@suse.com>
- Move rpm macros to %_rpmmacrodir (bsc#1191389)
-------------------------------------------------------------------
Wed Apr 28 11:08:54 UTC 2021 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
- openmpi2 is not the default openmpi anymore for releases > 15.3
-------------------------------------------------------------------
Thu Mar 19 08:23:09 UTC 2020 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
- Drop different package string between SLES and Leap (jsc#SLE-11846)
-------------------------------------------------------------------
Wed Dec 4 15:57:47 UTC 2019 - Michel Normand <normand@linux.vnet.ibm.com>
- 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 <nmoreychaisemartin@suse.com>
- Link against libnuma (bsc#1155120)
-------------------------------------------------------------------
Thu Oct 10 06:06:10 UTC 2019 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
- 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 <normand@linux.vnet.ibm.com>
- Add -ffat-lto-objects in spec to avoid build error
-------------------------------------------------------------------
Mon May 27 07:55:20 UTC 2019 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
- Provide openmpi for suse_version >= 1500
- Add macros package for non hpc flavour
-------------------------------------------------------------------
Mon May 27 06:27:54 UTC 2019 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
- Enable openmpi2 on ppc64
-------------------------------------------------------------------
Tue Apr 23 07:43:07 UTC 2019 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
- Fix bad INCLUDE path in module (bsc#1132949)
-------------------------------------------------------------------
Mon Apr 1 05:20:04 UTC 2019 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
- 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 <bwiedemann@suse.com>
- 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

754
openmpi2.spec Normal file
View File

@ -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 <<EOF
openmpi%{m_f_ver}-libs
EOF
%endif
%patch1 -p1
%patch2
%patch3 -p1
%patch4
%patch5
%patch6
# Live patch the VERSION file
sed -i -e 's/^greek=.*$/greek=%{git_ver}/' -e 's/^repo_rev=.*$/repo_rev=%{version}%{git_ver}/' \
-e 's/^date=.*$/date="OpenMPI %{version} Distribution for SUSE"/' VERSION
#############################################################################
#
# Build Section
#
#############################################################################
%build
%global _lto_cflags %{_lto_cflags} -ffat-lto-objects
export USER=OBS
export HOSTNAME=OBS
%{?with_hpc:%hpc_debug}
./autogen.pl --force
%if %{with hpc}
%{hpc_setup}
%{hpc_configure} \
%else
%{configure} \
--prefix="%{mpi_prefix}" \
--exec-prefix="%{mpi_prefix}" \
--bindir="%{mpi_bindir}" \
--datadir="%{mpi_datadir}" \
--includedir="%{mpi_includedir}" \
--libdir="%{mpi_libdir}" \
--mandir="%{mpi_mandir}" \
%endif
%{?build_static_devel:--enable-static} \
%{!?build_static_devel:--disable-static} \
--enable-builtin-atomics \
--with-libltdl=%{_prefix} \
--with-verbs \
--enable-mpi-thread-multiple \
--disable-wrapper-rpath \
%if 0%{?with_ucx}
--with-ucx \
--with-ucx-libdir=/usr/%_lib \
%endif
%ifarch %{ix86} x86_64
--with-psm \
%endif
%ifarch x86_64
--with-psm2 \
%endif
--disable-silent-rules \
--enable-mpirun-prefix-by-default \
--with-package-string="Open MPI Distribution for SUSE" \
--disable-wrapper-rpath
make %{?_smp_mflags}
%if 0%{?testsuite}
%check
make check
%install
%files
%defattr(-, root, root)
%doc README
%doc test/util/test-suite.log
%else # ?testsuite
#############################################################################
#
# Install Section
#
#############################################################################
%install
%{?with_hpc:%{hpc_setup_compiler}}
make install DESTDIR="%buildroot"
# sanitize .la files
list="$(find %{buildroot} -name "*.la" -printf "%%h\n" | sort | uniq)"
for dir in ${list}
do
deps="${deps} -L${dir##%{buildroot}}"
done
for dir in ${list}
do
%if !0%{?build_static_devel}
rm -f ${dir}/*.la
%else
for file in ${dir}/*.la
do
sed -i -e "s@ [^[:space:]]*home[^[:space:]\']*@${deps}@" \
-e "s@ [^[:space:]]*home[^[:space:]\']*@@g" \
-e "s@-L.*.libs @@g" ${file}
done
%endif
done
##even with disable static this one gets generated
%{!?build_static_devel:rm -f %{buildroot}%{mpi_libdir}/libvt-pomp.a}
# GCC 5 builds the ignore-tkr extension and there is no way to
# turn that off
rm -f %{buildroot}%{mpi_libdir}/mpi_ext.mod
%fdupes %{buildroot}%{mpi_mandir}
%fdupes %{buildroot}%{mpi_datadir}
%fdupes %{buildroot}%{mpi_libdir}/pkgconfig
%if %{without hpc}
# make and install mpivars files
sed -e 's,prefix,%{mpi_prefix},g' -e 's,libdir,%{mpi_libdir},g' %{SOURCE4} \
> %{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 <<EOF >%{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 <<EOF > %{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

View File

@ -0,0 +1,29 @@
From: Michel Normand <normand@linux.vnet.ibm.com>
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 <normand@linux.vnet.ibm.com>
---
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) {

139
reproducible.patch Normal file
View File

@ -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@\"" \