Sync from SUSE:ALP:Source:Standard:1.0 openmpi1 revision 29dca78b323c76882c84ecffc685a579

This commit is contained in:
Adrian Schröter 2023-06-07 08:17:05 +02:00
commit 1104dc3511
20 changed files with 3147 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 dcff536356827548849a1a6923265f7996543be7
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 68a839804639..be1b8b3738ca 100644
--- configure.ac
+++ configure.ac
@@ -1302,10 +1302,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 00e96b9cf66a9e424e9c60405996123c614a50d9
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 1248f15e3400..c86d8a396c25 100644
--- config/opal_check_cuda.m4
+++ config/opal_check_cuda.m4
@@ -85,8 +85,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.

13
_constraints Normal file
View File

@ -0,0 +1,13 @@
<constraints>
<overwrite>
<conditions>
<arch>ppc64le</arch>
</conditions>
<hardware>
<disk>
<size unit="G">4</size>
</disk>
</hardware>
</overwrite>
</constraints>

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">5e373bf1fdc02114aed5f3cb4da1137e99d9ad9c</param>
</service>
<service name="recompress" mode="disabled">
<param name="file">*openmpi*.tar</param>
<param name="compression">bz2</param>
</service>
</services>

21
macros.hpc-openmpi Normal file
View File

@ -0,0 +1,21 @@
#
# openmpi
#
%hpc_openmpi_init(V:) \
%{-V: %define _mf_ver %{-V*}} \
%{expand: %%global hpc_openmpi_dep_version %%{?_mf_ver}%%{!?_mf_ver:1}} \
%{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

View File

@ -0,0 +1,33 @@
commit e1f77cff04e2403275fbf119fe2685171511aa55
Author: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
Date: Tue Jun 9 10:46:17 2020 +0200
ompi mca: fix duplicated symbol
Add missing extern to avoid duplicated symbol error with GCC10
/usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: .libs/mtl_psm_component.o (symbol from plugin): in function `mca_mtl_psm_component':
(.text+0x0): multiple definition of `mca_mtl_psm_component'; .libs/mtl_psm.o (symbol from plugin):(.text+0x0): first defined here
/usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: .libs/mtl_psm_endpoint.o (symbol from plugin): in function `mca_mtl_psm_endpoint_t_class':
(.text+0x0): multiple definition of `mca_mtl_psm_component'; .libs/mtl_psm.o (symbol from plugin):(.text+0x0): first defined here
/usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: .libs/mtl_psm_probe.o (symbol from plugin): in function `ompi_mtl_psm_iprobe':
(.text+0x0): multiple definition of `mca_mtl_psm_component'; .libs/mtl_psm.o (symbol from plugin):(.text+0x0): first defined here
/usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: .libs/mtl_psm_recv.o (symbol from plugin): in function `ompi_mtl_psm_irecv':
(.text+0x0): multiple definition of `mca_mtl_psm_component'; .libs/mtl_psm.o (symbol from plugin):(.text+0x0): first defined here
/usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: .libs/mtl_psm_send.o (symbol from plugin): in function `ompi_mtl_psm_send':
(.text+0x0): multiple definition of `mca_mtl_psm_component'; .libs/mtl_psm.o (symbol from plugin):(.text+0x0): first defined here
Signed-off-by: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
diff --git ompi/mca/mtl/psm/mtl_psm_types.h ompi/mca/mtl/psm/mtl_psm_types.h
index 734825ce6019..799f6acdf065 100644
--- ompi/mca/mtl/psm/mtl_psm_types.h
+++ ompi/mca/mtl/psm/mtl_psm_types.h
@@ -70,7 +70,7 @@ struct mca_mtl_psm_component_t {
};
typedef struct mca_mtl_psm_component_t mca_mtl_psm_component_t;
-OMPI_DECLSPEC mca_mtl_psm_component_t mca_mtl_psm_component;
+extern OMPI_DECLSPEC mca_mtl_psm_component_t mca_mtl_psm_component;
#define PSM_MAKE_MQTAG(ctxt,rank,utag) \
( (((ctxt)&0xffffULL)<<48)| (((rank)&0xffffULL)<<32)| \

BIN
openmpi-1.10.7.0.5e373bf1fd.tar.bz2 (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,27 @@
diff -Ndur openmpi-1.8.3/ompi/contrib/vt/vt/tools/vtrun/vtrun.in openmpi-1.8.3-fix-bashisms/ompi/contrib/vt/vt/tools/vtrun/vtrun.in
--- openmpi-1.8.3/ompi/contrib/vt/vt/tools/vtrun/vtrun.in 2014-07-11 21:12:19.000000000 +0300
+++ openmpi-1.8.3-fix-bashisms/ompi/contrib/vt/vt/tools/vtrun/vtrun.in 2014-11-29 02:58:46.593455828 +0200
@@ -110,9 +110,9 @@
{
if test $verbose -ge $1; then
if test $mpi -eq 1; then
- echo -e "$EXENAME: [$PID]: $2"
+ echo "$EXENAME: [$PID]: $2"
else
- echo -e "$EXENAME: $2"
+ echo "$EXENAME: $2"
fi
fi
}
@@ -123,9 +123,9 @@
error_msg()
{
if test $mpi -eq 1; then
- echo -e "$EXENAME: [$PID]: $*" >&2
+ echo "$EXENAME: [$PID]: $*" >&2
else
- echo -e "$EXENAME: $*" >&2
+ echo "$EXENAME: $*" >&2
fi
}

View File

@ -0,0 +1,30 @@
From: Egbert Eich <eich@suse.de>
Date: Wed May 17 10:46:11 2017 +0200
Subject: Avoid a date string in compiled code.
Patch-mainline: never
Git-commit: bb0446da315743fe3b6e393641accf8747ee0923
References:
A DATE string in a binary will cause the package to be marked
updated whenever it changes.
Signed-off-by: Egbert Eich <eich@suse.com>
---
ompi/debuggers/ompi_msgq_dll.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/ompi/debuggers/ompi_msgq_dll.c b/ompi/debuggers/ompi_msgq_dll.c
index a89e5f1..350b0e0 100644
--- a/ompi/debuggers/ompi_msgq_dll.c
+++ b/ompi/debuggers/ompi_msgq_dll.c
@@ -194,7 +194,11 @@ static char mqs_version_str[OMPI_MAX_VER_SIZE];
char *mqs_version_string (void)
{
return "Open MPI message queue support for parallel"
+#ifndef OPAL_PACKAGE_STRING
" debuggers compiled on " __DATE__;
+#else
+ " debuggers compiled for " OPAL_PACKAGE_STRING;
+#endif
int offset;
offset = snprintf(mqs_version_str, OMPI_MAX_VER_SIZE-1,
"Open MPI message queue support for parallel debuggers ");

View File

@ -0,0 +1,57 @@
commit 3d7e7549a2aace210b32d0dcd70d836f219ab88e
Author: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
Date: Tue Jun 26 07:46:08 2018 +0200
openmpi btl openib backport device params from master
Backport support for newer HCA from the master branch
Signed-off-by: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
diff --git ompi/mca/btl/openib/mca-btl-openib-device-params.ini ompi/mca/btl/openib/mca-btl-openib-device-params.ini
index 6b1106f94af2..6e852647f391 100644
--- ompi/mca/btl/openib/mca-btl-openib-device-params.ini
+++ ompi/mca/btl/openib/mca-btl-openib-device-params.ini
@@ -234,6 +234,11 @@ use_eager_rdma = 1
mtu = 4096
max_inline_data = 0
+[QLogic FastLinQ QL41000]
+vendor_id = 0x1077
+vendor_part_id = 32880
+receive_queues = P,65536,64
+
############################################################################
# Chelsio's OUI is 0x0743. 0x1425 is the PCI ID.
@@ -262,6 +267,14 @@ mtu = 2048
receive_queues = P,65536,64
max_inline_data = 280
+[Chelsio T6]
+vendor_id = 0x1425
+vendor_part_id = 0x6400,0x6401,0x6402,0x6403,0x6404,0x6405,0x6406,0x6407,0x6408,0x6409,0x640d,0x6410,0x6411,0x6414,0x6415
+use_eager_rdma = 1
+mtu = 2048
+receive_queues = P,65536,64
+max_inline_data = 280
+
############################################################################
# I'm *assuming* that 0x4040 is the PCI ID...
@@ -316,3 +329,15 @@ use_eager_rdma = 1
mtu = 2048
receive_queues = P,65536,64
max_inline_data = 72
+
+############################################################################
+
+# Broadcom NetXtreme-E RDMA Ethernet Controller
+
+[Broadcom Cumulus]
+vendor_id = 0x14e4
+vendor_part_id = 0x16d7
+use_eager_rdma = 1
+mtu = 1024
+receive_queues = P,65536,256,192,128
+max_inline_data = 96

91
openmpi-etc-files.patch Normal file
View File

@ -0,0 +1,91 @@
diff --git ompi/etc/openmpi-totalview.tcl ompi/etc/openmpi-totalview.tcl
index d9b4ab9..27edbc4 100644
--- ompi/etc/openmpi-totalview.tcl
+++ ompi/etc/openmpi-totalview.tcl
@@ -5,14 +5,14 @@
# 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,
+# 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$
-#
+#
# Additional copyrights may follow
-#
+#
# $HEADER$
#
diff --git opal/etc/openmpi-mca-params.conf opal/etc/openmpi-mca-params.conf
index 7a1f923..e491480 100644
--- opal/etc/openmpi-mca-params.conf
+++ opal/etc/openmpi-mca-params.conf
@@ -5,15 +5,15 @@
# 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,
+# 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 Cisco Systems, Inc. All rights reserved.
+# Copyright (c) 2006-2017 Cisco Systems, Inc. All rights reserved
# $COPYRIGHT$
-#
+#
# Additional copyrights may follow
-#
+#
# $HEADER$
#
@@ -54,5 +54,5 @@
# Change component loading path
# component_path = /usr/local/lib/openmpi:~/my_openmpi_components
-# See "ompi_info --param all all" for a full listing of Open MPI MCA
-# parameters available and their default values.
+# See "ompi_info --param all all --level 9" for a full listing of Open
+# MPI MCA parameters available and their default values.
diff --git orte/etc/openmpi-default-hostfile orte/etc/openmpi-default-hostfile
index 0051d15..ad5a0f7 100644
--- orte/etc/openmpi-default-hostfile
+++ orte/etc/openmpi-default-hostfile
@@ -5,21 +5,21 @@
# 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,
+# 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$
-#
+#
# Additional copyrights may follow
-#
+#
# $HEADER$
#
# This is the default hostfile for Open MPI. Notice that it does not
# contain any hosts (not even localhost). This file should only
# contain hosts if a system administrator wants users to always have
# the same set of default hosts, and is not using a batch scheduler
-# (such as SLURM, PBS, etc.).
+# (such as SLURM, PBS, etc.).
#
# Note that this file is *not* used when running in "managed"
# environments (e.g., running in a job under a job scheduler, such as
@@ -32,5 +32,5 @@
# components were able to find any hosts to run on (this behavior can
# be disabled by excluding the localhost RAS component by specifying
# the value "^localhost" [without the quotes] to the "ras" MCA
-# parameter).
+# parameter).

View File

@ -0,0 +1,17 @@
---
test/util/Makefile.am | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: test/util/Makefile.am
===================================================================
--- test/util/Makefile.am.orig 2014-04-22 16:51:00.000000000 +0200
+++ test/util/Makefile.am 2014-04-29 18:37:08.260494412 +0200
@@ -33,7 +33,7 @@ AM_CPPFLAGS = -I$(top_srcdir)/test/suppo
check_PROGRAMS = \
- opal_bit_ops opal_path_nfs
+ opal_bit_ops
TESTS = \
$(check_PROGRAMS)

6
openmpi-rpmlintrc Normal file
View File

@ -0,0 +1,6 @@
# This line is mandatory to access the configuration functions
from Config import *
addFilter("openmpi.* rpath-in-buildconfig")
addFilter("openmpi.* script-without-shebang")
addFilter("openmpi.* shared-lib-calls-exit")

1761
openmpi1.changes Normal file

File diff suppressed because it is too large Load Diff

801
openmpi1.spec Normal file
View File

@ -0,0 +1,801 @@
#
# spec file
#
# Copyright (c) 2022 SUSE LLC
#
# 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 1.10.7
%define _vers 1_10_7
%define m_f_ver 1
%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
%if "%{flavor}" == "standard" && %{suse_version} < 1500
%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.5e373bf1fd
#############################################################################
#
# Preamble Section
#
#############################################################################
Name: %{package_name}%{?testsuite:-testsuite}
Version: %{vers}
Release: 0
Summary: A powerful implementation of MPI
License: BSD-3-Clause
Group: Development/Libraries/Parallel
URL: http://www.open-mpi.org/
Source0: openmpi-%{version}%{git_ver}.tar.bz2
Source1: mpivars.sh
Source2: mpivars.csh
Source3: macros.hpc-openmpi
Source4: openmpi-rpmlintrc
Source5: _multibuild
Patch1: openmpi-avoid-a-date-string-in-compiled-code.patch
Patch2: openmpi-no_network_in_build.patch
Patch3: openmpi-1.8.3-fix-bashisms.patch
Patch4: openmpi-etc-files.patch
Patch5: openmpi-btl-openib-backport-device-params-from-master.patch
Patch6: reproducible.patch
Patch7: ompi-mca-fix-duplicated-symbol.patch
Patch8: Fix-error-with-stricter-quoting-requirements-of-autoconf-2.70.patch
Patch9: Always-include-the-stddef.h-header.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: fdupes
BuildRequires: flex
BuildRequires: libibumad-devel
BuildRequires: libibverbs-devel
BuildRequires: libtool
BuildRequires: zlib-devel
%if 0%{?testsuite}
BuildArch: noarch
BuildRequires: %package_name = %{version}
%endif
# Disable hpc builds for SLE12
%if 0%{?sle_version} > 120200 && 0%{?sle_version} < 150000 && %{with hpc}
ExclusiveArch: do_not_build
%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 < 1.10.7 had no separate config package
%{?with_hpc:Conflicts: openmpi < 1.10.7}
%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}
%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}
%patch1 -p1
%patch2
%patch3 -p1
%patch4
%patch5
%patch7
%patch8
%patch9
%if %{without hpc}
cat > %{_sourcedir}/baselibs.conf <<EOF
openmpi%{m_f_ver}-libs
EOF
%endif
%patch6 -p1
# 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}
# To force rebuilding Makefile.in
rm -f ompi/debuggers/Makefile.in
#Remove bad +x rights on NEWS
chmod 644 NEWS
./autogen.sh
%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 \
--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
--with-threads \
--disable-silent-rules \
--enable-mpirun-prefix-by-default \
--with-package-string="Open MPI Distribution for SUSE"
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
chmod a-x NEWS
%{?with_hpc:%{hpc_setup_compiler}}
make install DESTDIR="%buildroot"
for input in `find %{buildroot}/%{mpi_mandir} -type f -o -type l` ; do
if test -f "$input.gz"; then
#echo "Remove old file $input.gz"
rm -f "$input.gz"
fi
if test -L "$input"; then
link=`perl -e 'print readlink($ARGV[0]);' -- "$input"`
test -d "$link" && continue
test -d "%{buildroot}/$link" && continue
rm -f "$input"
ln -sf "$link.gz" "$input.gz"
else
gzip -nf9 "$input"
fi
ls -l "$input.gz"
done
# 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
rm -f %{buildroot}%{mpi_datadir}/vampirtrace/config.log # differs between builds ; not needed
%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' %{SOURCE1} \
> %{buildroot}%{mpi_bindir}/mpivars.sh
sed -e 's,prefix,%{mpi_prefix},g' -e 's,libdir,%{mpi_libdir},g' %{SOURCE2} \
> %{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} <= 1320
%dir %{mpi_datadir}/openmpi/doc
%{mpi_datadir}/openmpi/doc/COPYRIGHT-ptmalloc2.txt
%endif
#
%{mpi_bindir}/mpirun
%{mpi_bindir}/ompi-clean
%{mpi_bindir}/ompi-ps
%{mpi_bindir}/ompi-server
%{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/mca-coll-ml.config
%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
%{mpi_bindir}/mpiCC
%{mpi_bindir}/mpiCC-vt
%{mpi_bindir}/mpic++
%{mpi_bindir}/mpic++-vt
%{mpi_bindir}/mpicc
%{mpi_bindir}/mpicc-vt
%{mpi_bindir}/mpicxx
%{mpi_bindir}/mpicxx-vt
%{mpi_bindir}/mpiexec
%{mpi_bindir}/mpif77
%{mpi_bindir}/mpif77-vt
%{mpi_bindir}/mpif90
%{mpi_bindir}/mpif90-vt
%{mpi_bindir}/mpifort
%{mpi_bindir}/mpifort-vt
%{mpi_bindir}/opal_wrapper
%{mpi_bindir}/opari
%{mpi_bindir}/ortecc
%{mpi_bindir}/oshcc
%{mpi_bindir}/oshfort
%{mpi_bindir}/otfaux
%{mpi_bindir}/otfconfig
%{mpi_bindir}/otfinfo
%{mpi_bindir}/otfmerge
%{mpi_bindir}/otfmerge-mpi
%{mpi_bindir}/otfprint
%{mpi_bindir}/otfprofile
%{mpi_bindir}/otfprofile-mpi
%{mpi_bindir}/otfshrink
%{mpi_bindir}/otfcompress
%{mpi_bindir}/otfdecompress
%{mpi_bindir}/shmemcc
%{mpi_bindir}/shmemfort
%{mpi_bindir}/vtCC
%{mpi_bindir}/vtc++
%{mpi_bindir}/vtcc
%{mpi_bindir}/vtcxx
%{mpi_bindir}/vtf77
%{mpi_bindir}/vtf90
%{mpi_bindir}/vtfilter
%{mpi_bindir}/vtfilter-mpi
%{mpi_bindir}/vtfiltergen
%{mpi_bindir}/vtfiltergen-mpi
%{mpi_bindir}/vtfort
%{mpi_bindir}/vtrun
%{mpi_bindir}/vtunify
%{mpi_bindir}/vtunify-mpi
%{mpi_bindir}/vtwrapper
#
%{mpi_helpdir}/*.txt
%{mpi_helpdir}/openmpi-valgrind.supp
%dir %{mpi_datadir}/vampirtrace
%{mpi_datadir}/vampirtrace/libtool
%{mpi_datadir}/vampirtrace/*.h
%{mpi_datadir}/vampirtrace/*.txt
%{mpi_datadir}/vampirtrace/*.SPEC
%files docs
%defattr(-, root, root, -)
%{mpi_mandir}
%dir %{mpi_datadir}/vampirtrace
%{mpi_datadir}/vampirtrace/doc
%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

142
reproducible.patch Normal file
View File

@ -0,0 +1,142 @@
Author: Bernhard M. Wiedemann <bwiedemann suse de>
Date: 2017-06-29
make package build reproducible
by sorting entries
and using fixed date + hostname
https://github.com/open-mpi/ompi/issues/3759
Index: openmpi-1.10.7/autogen.pl
===================================================================
--- openmpi-1.10.7.orig/autogen.pl
+++ openmpi-1.10.7/autogen.pl
@@ -83,7 +83,7 @@ if ($^O eq "solaris") {
}
$username = getpwuid($>);
-$full_hostname = `hostname`;
+$full_hostname = "reproduciblehostname";
chomp($full_hostname);
$hostname = $full_hostname;
$hostname =~ s/^([\w\-]+)\..+/\1/;
@@ -314,7 +314,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
@@ -609,7 +609,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 ".");
@@ -696,7 +696,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 ".");
@@ -1105,7 +1105,7 @@ if ($no_ompi_arg == 1 && $no_orte_arg ==
#---------------------------------------------------------------------------
-$full_hostname = `hostname`;
+$full_hostname = "reproduciblehostname";
chomp($full_hostname);
$m4 = "dnl
Index: openmpi-1.10.7/config/opal_functions.m4
===================================================================
--- openmpi-1.10.7.orig/config/opal_functions.m4
+++ openmpi-1.10.7/config/opal_functions.m4
@@ -79,8 +79,8 @@ EOF
#
OPAL_CONFIGURE_USER="`whoami`"
-OPAL_CONFIGURE_HOST="`hostname | head -n 1`"
-OPAL_CONFIGURE_DATE="`date`"
+OPAL_CONFIGURE_HOST="reproduciblehostname"
+OPAL_CONFIGURE_DATE="reproducibledate"
#
# Save these details so that they can be used in ompi_info later
@@ -99,8 +99,8 @@ AC_DEFUN([OPAL_BASIC_SETUP],[
#
OPAL_CONFIGURE_USER="`whoami`"
-OPAL_CONFIGURE_HOST="`hostname | head -n 1`"
-OPAL_CONFIGURE_DATE="`date`"
+OPAL_CONFIGURE_HOST="reproduciblehostname"
+OPAL_CONFIGURE_DATE="reproducibledate"
#
# Make automake clean emacs ~ files for "make clean"
Index: openmpi-1.10.7/config/opal_get_version.m4
===================================================================
--- openmpi-1.10.7.orig/config/opal_get_version.m4
+++ openmpi-1.10.7/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-1.10.7/ompi/tools/ompi_info/Makefile.am
===================================================================
--- openmpi-1.10.7.orig/ompi/tools/ompi_info/Makefile.am
+++ openmpi-1.10.7/ompi/tools/ompi_info/Makefile.am
@@ -25,8 +25,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="\"reproduciblehostname\"" \
+ -DOMPI_BUILD_DATE="\"reproducibledate\"" \
-DOMPI_BUILD_CFLAGS="\"@CFLAGS@\"" \
-DOMPI_BUILD_CPPFLAGS="\"@CPPFLAGS@\"" \
-DOMPI_BUILD_CXXFLAGS="\"@CXXFLAGS@\"" \
Index: openmpi-1.10.7/orte/tools/orte-info/Makefile.am
===================================================================
--- openmpi-1.10.7.orig/orte/tools/orte-info/Makefile.am
+++ openmpi-1.10.7/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="\"reproduciblehostname\"" \
+ -DOMPI_BUILD_DATE="\"reproducibledate\"" \
-DOMPI_BUILD_CFLAGS="\"@CFLAGS@\"" \
-DOMPI_BUILD_CPPFLAGS="\"@CPPFLAGS@\"" \
-DOMPI_BUILD_CXXFLAGS="\"@CXXFLAGS@\"" \
Index: openmpi-1.10.7/oshmem/tools/oshmem_info/Makefile.am
===================================================================
--- openmpi-1.10.7.orig/oshmem/tools/oshmem_info/Makefile.am
+++ openmpi-1.10.7/oshmem/tools/oshmem_info/Makefile.am
@@ -14,8 +14,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="\"reproduciblehostname\"" \
+ -DOMPI_BUILD_DATE="\"reproducibledate\"" \
-DOMPI_BUILD_CFLAGS="\"@CFLAGS@\"" \
-DOMPI_BUILD_CPPFLAGS="\"@CPPFLAGS@\"" \
-DOMPI_BUILD_CXXFLAGS="\"@CXXFLAGS@\"" \