diff --git a/_multibuild b/_multibuild
index d99ccee..0e1a6ca 100644
--- a/_multibuild
+++ b/_multibuild
@@ -2,6 +2,7 @@
gnu-openmpi-hpc
gnu-openmpi2-hpc
gnu-openmpi3-hpc
+ gnu-openmpi4-hpc
gnu-mvapich2-hpc
gnu-mpich-hpc
diff --git a/mpiP-3.4.1.tar.gz b/mpiP-3.4.1.tar.gz
deleted file mode 100644
index 244f5a1..0000000
--- a/mpiP-3.4.1.tar.gz
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:688bf37d73211e6a915f9fc59c358282a266d166c0a10af07a38a01a473296f0
-size 216045
diff --git a/mpiP-3.5.tgz b/mpiP-3.5.tgz
new file mode 100644
index 0000000..46e677d
--- /dev/null
+++ b/mpiP-3.5.tgz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e366843d53fa016fb03903e51c8aac901aa5155edabe64698a8d6fa618a03bbd
+size 336942
diff --git a/mpiP.changes b/mpiP.changes
index 3384d56..c11228b 100644
--- a/mpiP.changes
+++ b/mpiP.changes
@@ -1,3 +1,71 @@
+-------------------------------------------------------------------
+Sat Nov 28 11:49:04 UTC 2020 - Egbert Eich
+
+- Update to mpiP version 3.5
+ * Update deprecated functions.
+ * Fix ARM typo and add LSE configure test.
+ * Correct pt2pt histogram reporting check.
+ * Address compiler warnings for some mt function return types.
+ * Correct build behavior for testing multi-threaded support
+ with Spectrum MPI.
+ * Missing function argument entry.
+ * Additional I/O routines
+ * currBasetype fix
+ * Update to test suite to include multi-threaded tests
+ * Followup for renaming wrappers.c to mpiP-wrappers.c
+ * Include mpiP in wrappers file name for call site reporting
+ * Clarify stack tracing behavior
+ * Correct autoheader error with HAVE_BFD_GET_SECTION_MACROS.
+ Make define behavior consistent.
+ * Convenience functionality to avoid SMPI libmpiP
+ * Arch files corrections for gcc and opal code.
+ * update to work with binutils-2.34
+ * Fixed report header printing bug with large argument counts.
+ * fix make-wrappers.py indentation and make python 2 and 3 compatible
+ * Re-organized sizeof test to avoid CC defaulting to gcc.
+ Re-organized default compilers.
+ * Add Multi-Threading (MT) test suite
+ * Fix FORTRAN Bindings: properly handle strings
+ * Fix the code accounting the application time
+ * Fix TLS cleanup code
+ * Fix MT timings
+ * Refine statistics reset procedure
+ * Reduce the number of TLS accesses
+ * First cut on multi-threading
+ * Extract callsite code to a separate module
+ * Move nested call check down the stack
+ * Introduce additional statistics layer
+ * First step towards MT support
+ * Refactor global state: remove unneeded component
+ * Preliminary step for adding multi-threaded support
+ * Configury change: introduce mpiP-state.[c|h] files
+ * Get rid of mpiPi.h.in file as unneeded
+ * Adding autoconf PACKAGE defines to address current bfd.h
+ requirement.
+ * Fix mpi.h includes in some of the tests
+ * Indentation fixes only. No actual changes.
+ * Change default stack frame unwinding count.
+ * Remove functions deprecated since MPI-2.0
+ * Avoid LD_PRELOAD symbol conflict between srun and libiberty.
+ * Create README.md
+ * Corrected type issues resulting in compiler warnings in the
+ test suite.
+ * Make PC modification conditional. (Removed for now.)
+ * Adding additional RMA functions to cover all MPI3.1 RMA
+ functions. Expanded test coverage.
+ * Added MPI3 One-sided operation support, from changes by Jeff Hammond.
+ * Additional github migration.
+ * Adding README.md
+ * Added support for non-blocking collectives.
+ * Provide non-NULL error argument for dwarf calls.
+ Remove call to elf_end. Ignore compile units with no
+ function information, rather than abort.
+ * Reduce unnecessary debugging output.
+ * Add count column to top time section.
+ * Adding fortran symbol failure output for debugging configure issues.
+- Add build support for gcc10 to HPC build (bsc#1174439).
+- Add openmpi4 flavors.
+
-------------------------------------------------------------------
Wed May 13 19:38:31 UTC 2020 - Egbert Eich
@@ -8,6 +76,8 @@ Fri Nov 29 19:42:39 UTC 2019 - Egbert Eich
- Add missing openmpi2 build for gcc7.
- Add support for gcc8 and gcc9 (jsc#SLE-7766 & jsc#SLE-8604).
+- Include mpiP wrapper scripts for mpirun and Slurm srun.
+- Package API.
-------------------------------------------------------------------
Thu Nov 28 16:03:47 UTC 2019 - Egbert Eich
diff --git a/mpiP.spec b/mpiP.spec
index af816fd..b1935bb 100644
--- a/mpiP.spec
+++ b/mpiP.spec
@@ -19,12 +19,15 @@
%global flavor @BUILD_FLAVOR@%{nil}
%define pname mpiP
-%define vers 3.4.1
-%define _vers 3_4_1
+%define vers 3.5
+%define _vers 3_5
%if 0%{?sle_version} >= 150200
%define DisOMPI1 ExclusiveArch: do_not_build
%endif
+%if 0%{?sle_version} >= 150300
+%define DisOMPI2 ExclusiveArch: do_not_build
+%endif
%if "%flavor" == ""
ExclusiveArch: do_not_build
@@ -54,6 +57,14 @@ ExclusiveArch: do_not_build
%define mpi_ver 3
%endif
+%if "%{flavor}" == "gnu-openmpi4-hpc"
+%{?DisOMPI4}
+%global compiler_family gnu
+%undefine c_f_ver
+%define mpi_family openmpi
+%define mpi_ver 4
+%endif
+
%if "%{flavor}" == "gnu-mvapich2-hpc"
%global compiler_family gnu
%undefine c_f_ver
@@ -90,6 +101,14 @@ ExclusiveArch: do_not_build
%define mpi_ver 3
%endif
+%if "%{flavor}" == "gnu7-openmpi4-hpc"
+%{?DisOMPI4}
+%global compiler_family gnu
+%define c_f_ver 7
+%define mpi_family openmpi
+%define mpi_ver 4
+%endif
+
%if "%{flavor}" == "gnu7-mvapich2-hpc"
%global compiler_family gnu
%define c_f_ver 7
@@ -110,6 +129,14 @@ ExclusiveArch: do_not_build
%define mpi_ver 1
%endif
+%if "%{flavor}" == "gnu8-openmpi2-hpc"
+%{?DisOMPI3}
+%global compiler_family gnu
+%define c_f_ver 8
+%define mpi_family openmpi
+%define mpi_ver 2
+%endif
+
%if "%{flavor}" == "gnu8-openmpi3-hpc"
%{?DisOMPI3}
%global compiler_family gnu
@@ -118,12 +145,12 @@ ExclusiveArch: do_not_build
%define mpi_ver 3
%endif
-%if "%{flavor}" == "gnu8-openmpi2-hpc"
-%{?DisOMPI3}
+%if "%{flavor}" == "gnu8-openmpi4-hpc"
+%{?DisOMPI4}
%global compiler_family gnu
%define c_f_ver 8
%define mpi_family openmpi
-%define mpi_ver 2
+%define mpi_ver 4
%endif
%if "%{flavor}" == "gnu8-mvapich2-hpc"
@@ -147,7 +174,7 @@ ExclusiveArch: do_not_build
%endif
%if "%{flavor}" == "gnu9-openmpi2-hpc"
-%{?DisOMPI3}
+%{?DisOMPI2}
%global compiler_family gnu
%define c_f_ver 9
%define mpi_family openmpi
@@ -162,6 +189,14 @@ ExclusiveArch: do_not_build
%define mpi_ver 3
%endif
+%if "%{flavor}" == "gnu9-openmpi4-hpc"
+%{?DisOMPI4}
+%global compiler_family gnu
+%define c_f_ver 9
+%define mpi_family openmpi
+%define mpi_ver 4
+%endif
+
%if "%{flavor}" == "gnu9-mvapich2-hpc"
%global compiler_family gnu
%define c_f_ver 9
@@ -174,6 +209,50 @@ ExclusiveArch: do_not_build
%define mpi_family mpich
%endif
+%if "%{flavor}" == "gnu10-openmpi-hpc"
+%{?DisOMPI1}
+%global compiler_family gnu
+%define c_f_ver 10
+%define mpi_family openmpi
+%define mpi_ver 1
+%endif
+
+%if "%{flavor}" == "gnu10-openmpi2-hpc"
+%{?DisOMPI2}
+%global compiler_family gnu
+%define c_f_ver 10
+%define mpi_family openmpi
+%define mpi_ver 2
+%endif
+
+%if "%{flavor}" == "gnu10-openmpi3-hpc"
+%{?DisOMPI3}
+%global compiler_family gnu
+%define c_f_ver 10
+%define mpi_family openmpi
+%define mpi_ver 3
+%endif
+
+%if "%{flavor}" == "gnu10-openmpi4-hpc"
+%{?DisOMPI4}
+%global compiler_family gnu
+%define c_f_ver 10
+%define mpi_family openmpi
+%define mpi_ver 4
+%endif
+
+%if "%{flavor}" == "gnu10-mvapich2-hpc"
+%global compiler_family gnu
+%define c_f_ver 10
+%define mpi_family mvapich2
+%endif
+
+%if "%{flavor}" == "gnu10-mpich-hpc"
+%global compiler_family gnu
+%define c_f_ver 10
+%define mpi_family mpich
+%endif
+
%{?hpc_init:%{hpc_init -c %compiler_family -m %mpi_family %{?c_f_ver:-v %{c_f_ver}} %{?mpi_ver:-V %{mpi_ver}} %{?ext:-e %{ext}}}}
Name: %{?hpc_package_name:%{hpc_package_name %_vers}}%{!?hpc_package_name:%pname}
@@ -182,17 +261,19 @@ License: BSD-3-Clause
Group: Development/Tools/Debuggers
Version: %vers
Release: 0
-URL: http://mpip.sourceforge.net/
-Source0: http://sourceforge.net/projects/mpip/files/mpiP/mpiP-3.4.1/mpiP-%{version}.tar.gz
+URL: https://github.com/LLNL/mpiP
+Source0: https://github.com/LLNL/mpiP/releases/download/%{version}/mpip-%{version}.tgz#/%{pname}-%{version}.tgz
Patch1: mpip.unwinder.patch
BuildRequires: %{compiler_family}%{?c_f_ver}-compilers-hpc-macros-devel
BuildRequires: %{mpi_family}%{?mpi_ver}-%{compiler_family}%{?c_f_ver}-hpc-macros-devel
+BuildRequires: binutils-devel
+BuildRequires: libunwind-devel
BuildRequires: lua-lmod
BuildRequires: python
+BuildRequires: slurm-node
BuildRequires: suse-hpc
-%hpc_requires
-%hpc_requires_devel
+%{?hpc_requires}
%description
mpiP is a profiling library for MPI applications.
@@ -205,10 +286,21 @@ file.
%{hpc_master_package -L}
+%package devel
+Summary: Headers for profiling library for MPI applications
+Group: Development/Libraries/C and C++
+%{?hpc_requires_devel}
+
+%description devel
+mpiP is a profiling library for MPI applications. This packages contains
+the build headers.
+
+%{hpc_master_package devel}
+
%package devel-static
Summary: Static version of profiling library for MPI applications
Group: Development/Libraries/C and C++
-%hpc_requires_devel
+%{?hpc_requires_devel}
%description devel-static
mpiP is a profiling library for MPI applications.
@@ -235,9 +327,9 @@ CC=mpicc
CXX=mpicxx
FC=mpif90
CFLAGS="-D__DATE__=\\\"NODATE\\\" -D__TIME__=\\\"NOTIME\\\""
+export LDFLAGS=-Wl,-soname,libmpiP.so
%hpc_configure \
--enable-demangling \
- --disable-libunwind \
%ifarch aarch64
--enable-setjmp \
%endif
@@ -246,11 +338,19 @@ CFLAGS="-D__DATE__=\\\"NODATE\\\" -D__TIME__=\\\"NOTIME\\\""
make %{?_smp_mflags} shared
%install
-
%hpc_setup
-%make_install
+make install-all DESTDIR=%{?buildroot}
find "%{buildroot}" -type f -name "*.a" -exec chmod a-x {} +
find "%{buildroot}/%{_docdir}" -type f -exec chmod a-x {} +
+find "%{buildroot}/%{hpc_includedir}" -type f -exec chmod a-x {} +
+%{hpc_shebang_sanitize_scripts %{buildroot}%{hpc_bindir}}
+for i in mpirun-mpip srun-mpip; do
+ sed -i \
+ -e "s@\(MPIP_DIR=\).*@\1%{?hpc_prefix}@" \
+ -e "s@\(LD_PRELOAD=\).*:\(.*\)@\1\2@" \
+ -e "s@\(ADDTL_RT_LIBS=.*\)@#\1@" \
+ -e "s@/lib/libmpiP.so@/%{_lib}/libmpiP.so@" %{buildroot}%{hpc_bindir}/$i
+done
%hpc_write_modules_files
#%%Module1.0#####################################################################
@@ -271,7 +371,12 @@ module-whatis "URL %{url}"
set version %{version}
+prepend-path PATH %{hpc_bindir}
prepend-path LD_LIBRARY_PATH %{hpc_libdir}
+if {[file isdirectory %{hpc_includedir}]} {
+prepend-path C_INCLUDE_PATH %{hpc_includedir}
+prepend-path INCLUDE %{hpc_includedir}
+}
setenv %{hpc_upcase %pname}_DIR %{hpc_prefix}
setenv %{hpc_upcase %pname}_LIB %{hpc_libdir}
@@ -282,17 +387,18 @@ EOF
%hpc_module_delete_if_default
%files
-%defattr(-,root,root,-)
%{hpc_dirs}
%{hpc_modules_files}
%{hpc_libdir}/*so
+%{hpc_bindir}
%files doc
-%defattr(0644,root,root,-)
%{_docdir}/%{name}/
+%files devel
+%{hpc_includedir}
+
%files devel-static
-%defattr(0644,root,root,-)
%{hpc_libdir}/*.a
%changelog
diff --git a/mpip.unwinder.patch b/mpip.unwinder.patch
index 1898a69..0fbf4e0 100644
--- a/mpip.unwinder.patch
+++ b/mpip.unwinder.patch
@@ -12,8 +12,8 @@ diff -ruN mpiP-3.4.1.old/Defs.mak.in mpiP-3.4.1/Defs.mak.in
CPPFLAGS += -DIA32
endif
diff -ruN mpiP-3.4.1.old/mpiPi.h.in mpiP-3.4.1/mpiPi.h.in
---- mpiP-3.4.1.old/mpiPi.h.in 2014-03-13 19:46:07.000000000 +0000
-+++ mpiP-3.4.1/mpiPi.h.in 2017-01-10 07:52:48.783447707 +0000
+--- mpiP-3.4.1.old/mpiPi.h 2014-03-13 19:46:07.000000000 +0000
++++ mpiP-3.4.1/mpiPi.h 2017-01-10 07:52:48.783447707 +0000
@@ -276,6 +276,12 @@
#define FramePC(fp) ((void *) *(long *) (((long) fp) + (2 * sizeof (void *))))
#define NextFP(fp) ((void *) *(long *) fp)