import mpich-3.3.2-9.el8

This commit is contained in:
CentOS Sources 2021-03-30 11:52:12 -04:00 committed by Stepan Oksanichenko
parent 4fbeca2b34
commit b4113bff95
9 changed files with 515 additions and 95 deletions

2
.gitignore vendored
View File

@ -1 +1 @@
SOURCES/mpich-3.2.1.tar.gz SOURCES/mpich-3.3.2.tar.gz

View File

@ -1 +1 @@
24c53333927d1760db78be2b9ef217f4f3dcf771 SOURCES/mpich-3.2.1.tar.gz d1b887a6265df846481328bb1a6a0855b5292bef SOURCES/mpich-3.3.2.tar.gz

View File

@ -0,0 +1,74 @@
From 8f0c71281b5dccd70a3f1d4204e3cc6bc7201ceb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?=
<zbyszek@arm03-packager01.cloud.fedoraproject.org>
Date: Wed, 28 Aug 2019 10:57:55 +0000
Subject: [PATCH] Drop real128
https://github.com/pmodels/mpich/issues/4005
---
.../fortran/use_mpi_f08/mpi_f08_types.f90 | 24 -------------------
1 file changed, 24 deletions(-)
diff --git a/src/binding/fortran/use_mpi_f08/mpi_f08_types.f90 b/src/binding/fortran/use_mpi_f08/mpi_f08_types.f90
index f8b0fa811..46bdf6972 100644
--- a/src/binding/fortran/use_mpi_f08/mpi_f08_types.f90
+++ b/src/binding/fortran/use_mpi_f08/mpi_f08_types.f90
@@ -248,10 +248,8 @@ interface MPI_Sizeof
module procedure MPI_Sizeof_xint64
module procedure MPI_Sizeof_xreal32
module procedure MPI_Sizeof_xreal64
- module procedure MPI_Sizeof_xreal128
module procedure MPI_Sizeof_xcomplex32
module procedure MPI_Sizeof_xcomplex64
- module procedure MPI_Sizeof_xcomplex128
end interface
private :: MPI_Sizeof_character
@@ -263,10 +261,8 @@ private :: MPI_Sizeof_xint32
private :: MPI_Sizeof_xint64
private :: MPI_Sizeof_xreal32
private :: MPI_Sizeof_xreal64
-private :: MPI_Sizeof_xreal128
private :: MPI_Sizeof_xcomplex32
private :: MPI_Sizeof_xcomplex64
-private :: MPI_Sizeof_xcomplex128
contains
@@ -350,16 +346,6 @@ subroutine MPI_Sizeof_xreal64 (x, size, ierror)
ierror = 0
end subroutine MPI_Sizeof_xreal64
-subroutine MPI_Sizeof_xreal128 (x, size, ierror)
- use,intrinsic :: iso_fortran_env, only: real128
- real(real128),dimension(..) :: x
- integer, intent(out) :: size
- integer, optional, intent(out) :: ierror
-
- size = storage_size(x)/8
- ierror = 0
-end subroutine MPI_Sizeof_xreal128
-
subroutine MPI_Sizeof_xcomplex32 (x, size, ierror)
use,intrinsic :: iso_fortran_env, only: real32
complex(real32),dimension(..) :: x
@@ -380,16 +366,6 @@ subroutine MPI_Sizeof_xcomplex64 (x, size, ierror)
ierror = 0
end subroutine MPI_Sizeof_xcomplex64
-subroutine MPI_Sizeof_xcomplex128 (x, size, ierror)
- use,intrinsic :: iso_fortran_env, only: real128
- complex(real128),dimension(..) :: x
- integer, intent(out) :: size
- integer, optional, intent(out) :: ierror
-
- size = storage_size(x)/8
- ierror = 0
-end subroutine MPI_Sizeof_xcomplex128
-
subroutine MPI_Status_f2f08(f_status, f08_status, ierror)
integer, intent(in) :: f_status(MPI_STATUS_SIZE)
type(MPI_Status), intent(out) :: f08_status
--
2.21.0

View File

@ -0,0 +1,34 @@
From fbb8f503df077c726b0c99d467bc984566273b92 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
Date: Tue, 15 Sep 2020 14:20:17 +0200
Subject: [PATCH 1/2] mpl: limit scope on macos .local workaround
This was added in 62f4178981617384fc116da4c839baf469bef512.
Assuming that "localhost" is equivalent to any name ending in .local
is unwarranted. RFC6762 reserves the ".local" suffix for MulticastDNS use,
but it is also used in other context for "local network" addresses and such.
So let's at least limit the scope to not hurt other systems.
---
src/mpl/src/sock/mpl_sockaddr.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/mpl/src/sock/mpl_sockaddr.c b/src/mpl/src/sock/mpl_sockaddr.c
index 51e9f9973f..9334cc4fb2 100644
--- a/src/mpl/src/sock/mpl_sockaddr.c
+++ b/src/mpl/src/sock/mpl_sockaddr.c
@@ -75,6 +75,7 @@ int MPL_get_sockaddr(const char *s_hostname, MPL_sockaddr_t * p_addr)
struct addrinfo *ai_list;
int ret;
+#ifdef __APPLE__
/* Macos adds .local to hostname when network is unavailable or limited.
* This will result in long timeout in getaddrinfo below.
* Bypass it by resetting the hostname to "localhost"
@@ -83,6 +84,7 @@ int MPL_get_sockaddr(const char *s_hostname, MPL_sockaddr_t * p_addr)
if (n > 6 && strcmp(s_hostname + n - 6, ".local") == 0) {
s_hostname = "localhost";
}
+#endif
/* NOTE: there is report that getaddrinfo implementations will call kernel
* even when s_hostname is entirely numerical string and it may cause

View File

@ -0,0 +1,57 @@
From ecb72e6699f4f8525115e0b42f81121a1cf8eefa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
Date: Tue, 15 Sep 2020 14:59:58 +0200
Subject: [PATCH 2/2] mpl: do not require non-loopback networking
getaddrinfo(3) says:
If hints.ai_flags includes the AI_ADDRCONFIG flag, then IPv4
addresses are returned in the list pointed to by res only if the
local system has at least one IPv4 address configured, and IPv6
addresses are returned only if the local system has at least one
IPv6 address configured. The loopback address is not considered for
this case as valid as a configured address.
This means that MPL_get_sockaddr() will fail to resolve the local host
(either as "localhost" or by the actual hostname) on a system that has
no non-loopback networking. This break exection of mpirun e.g. in a
container for tests and such.
From https://bugzilla.redhat.com/show_bug.cgi?id=1839007:
<mock-chroot> sh-5.0# hostname
68da8e7c62a2404bb4bf75c9ce643e06
<mock-chroot> sh-5.0# module load mpi/mpich-x86_64
<mock-chroot> sh-5.0# mpirun ./a.out
Fatal error in PMPI_Init: Other MPI error, error stack:
MPIR_Init_thread(586)..............:
MPID_Init(224).....................: channel initialization failed
MPIDI_CH3_Init(105)................:
MPID_nem_init(324).................:
MPID_nem_tcp_init(175).............:
MPID_nem_tcp_get_business_card(404):
MPID_nem_tcp_init(375).............: gethostbyname failed, 68da8e7c62a2404bb4bf75c9ce643e06 (errno 0)
<mock-chroot> sh-5.0# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
---
src/mpl/src/sock/mpl_sockaddr.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/mpl/src/sock/mpl_sockaddr.c b/src/mpl/src/sock/mpl_sockaddr.c
index 9334cc4fb2..c0e991c68d 100644
--- a/src/mpl/src/sock/mpl_sockaddr.c
+++ b/src/mpl/src/sock/mpl_sockaddr.c
@@ -98,7 +98,7 @@ int MPL_get_sockaddr(const char *s_hostname, MPL_sockaddr_t * p_addr)
ai_hint.ai_family = af_type;
ai_hint.ai_socktype = SOCK_STREAM;
ai_hint.ai_protocol = IPPROTO_TCP;
- ai_hint.ai_flags = AI_ADDRCONFIG | AI_V4MAPPED;
+ ai_hint.ai_flags = AI_V4MAPPED;
ret = getaddrinfo(s_hostname, NULL, &ai_hint, &ai_list);
if (ret) {
return ret;

View File

@ -1,13 +0,0 @@
diff --git mpich-3.2/./src/binding/cxx/mpicxx.h.in~ mpich-3.2/./src/binding/cxx/mpicxx.h.in
index 375c081e0e..24f1d6c2cc 100644
--- mpich-3.2/./src/binding/cxx/mpicxx.h.in~
+++ mpich-3.2/./src/binding/cxx/mpicxx.h.in
@@ -17,7 +17,7 @@
// between 3.2.3 and 3.4.3 (!!) Normally such changes
// should only occur at major releases (e.g., version 3 to 4)
#ifdef __GNUC__
-# if __GNUC__ >= @GNUCXX_VERSION@
+# if __GNUC__ >= @GNUCXX_VERSION@ && @GNUCXX_VERSION@ == 3
# if __GNUC_MINOR__ > 2 && @GNUCXX_MINORVERSION@ == 2
# error 'Please use the same version of GCC and g++ for compiling MPICH and user MPI programs'
# endif

101
SOURCES/4320.patch Normal file
View File

@ -0,0 +1,101 @@
From a1524608b05e6c89e2b99f64923f064d888465ce Mon Sep 17 00:00:00 2001
From: Hui Zhou <hzhou321@anl.gov>
Date: Mon, 18 Nov 2019 14:52:55 -0600
Subject: [PATCH 1/2] ch3: fix improper error handling from MPL_get_sockaddr
MPL layer does not directly return mpi_errno. Use MPIR_ERR_CHKANDJUMP
macro to create the appropriate return code. See pmodels/mpich#4318.
Cherry-picked from [8d923937ec5d].
---
.../channels/nemesis/netmod/tcp/tcp_init.c | 23 +++++++++++--------
1 file changed, 13 insertions(+), 10 deletions(-)
diff --git a/src/mpid/ch3/channels/nemesis/netmod/tcp/tcp_init.c b/src/mpid/ch3/channels/nemesis/netmod/tcp/tcp_init.c
index 4c2383ed8f..bc58211eb6 100644
--- a/src/mpid/ch3/channels/nemesis/netmod/tcp/tcp_init.c
+++ b/src/mpid/ch3/channels/nemesis/netmod/tcp/tcp_init.c
@@ -307,8 +307,9 @@ static int GetSockInterfaceAddr(int myRank, char *ifname, int maxIfname,
if (MPIR_CVAR_NEMESIS_TCP_NETWORK_IFACE) {
char s[100];
int len;
- mpi_errno = MPL_get_sockaddr_iface(MPIR_CVAR_NEMESIS_TCP_NETWORK_IFACE, p_addr);
- MPIR_ERR_CHKANDJUMP1(mpi_errno, mpi_errno, MPI_ERR_OTHER, "**iface_notfound", "**iface_notfound %s", MPIR_CVAR_NEMESIS_TCP_NETWORK_IFACE);
+ int ret = MPL_get_sockaddr_iface(MPIR_CVAR_NEMESIS_TCP_NETWORK_IFACE, p_addr);
+ MPIR_ERR_CHKANDJUMP1(ret != 0, mpi_errno, MPI_ERR_OTHER, "**iface_notfound",
+ "**iface_notfound %s", MPIR_CVAR_NEMESIS_TCP_NETWORK_IFACE);
MPL_sockaddr_to_str(p_addr, s, 100);
MPL_DBG_MSG_FMT(MPIDI_CH3_DBG_CONNECT, VERBOSE, (MPL_DBG_FDEST,
@@ -354,12 +355,13 @@ static int GetSockInterfaceAddr(int myRank, char *ifname, int maxIfname,
ifname_string = ifname;
- /* If we didn't find a specific name, then try to get an IP address
- directly from the available interfaces, if that is supported on
- this platform. Otherwise, we'll drop into the next step that uses
- the ifname */
- mpi_errno = MPL_get_sockaddr_iface( NULL, p_addr);
- if (mpi_errno) MPIR_ERR_POP(mpi_errno);
+ /* If we didn't find a specific name, then try to get an IP address
+ * directly from the available interfaces, if that is supported on
+ * this platform. Otherwise, we'll drop into the next step that uses
+ * the ifname */
+ int ret = MPL_get_sockaddr_iface(NULL, p_addr);
+ MPIR_ERR_CHKANDJUMP1(ret != 0, mpi_errno, MPI_ERR_OTHER, "**iface_notfound",
+ "**iface_notfound %s", NULL);
ifaddrFound = 1;
}
else {
@@ -369,8 +371,9 @@ static int GetSockInterfaceAddr(int myRank, char *ifname, int maxIfname,
/* If we don't have an IP address, try to get it from the name */
if (!ifaddrFound) {
- mpi_errno = MPL_get_sockaddr(ifname_string, p_addr);
- MPIR_ERR_CHKANDJUMP2(mpi_errno, mpi_errno, MPI_ERR_OTHER, "**gethostbyname", "**gethostbyname %s %d", ifname_string, h_errno);
+ int ret = MPL_get_sockaddr(ifname_string, p_addr);
+ MPIR_ERR_CHKANDJUMP2(ret != 0, mpi_errno, MPI_ERR_OTHER, "**gethostbyname",
+ "**gethostbyname %s %d", ifname_string, h_errno);
}
fn_exit:
From 89157ad35c0885b4758d250d019f0f7cf0f59095 Mon Sep 17 00:00:00 2001
From: Hui Zhou <hzhou321@anl.gov>
Date: Wed, 15 Jan 2020 13:29:56 -0600
Subject: [PATCH 2/2] pmi: fix a wrong condition checking return of
MPL_get_sockaddr
Cherry-picked from [3e6af3c2fbaf]. See pmodels/mpich#4318.
---
src/mpl/include/mpl_sockaddr.h | 3 +++
src/pmi/simple/simple_pmi.c | 2 +-
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/mpl/include/mpl_sockaddr.h b/src/mpl/include/mpl_sockaddr.h
index c0eb749419..a9860c1353 100644
--- a/src/mpl/include/mpl_sockaddr.h
+++ b/src/mpl/include/mpl_sockaddr.h
@@ -21,6 +21,9 @@
typedef struct sockaddr_storage MPL_sockaddr_t;
+/* The following functions when return an int, it returns 0 on success,
+ * non-zero indicates error. It is consistent with posix socket functions.
+ */
void MPL_sockaddr_set_aftype(int type);
int MPL_get_sockaddr(const char *s_hostname, MPL_sockaddr_t * p_addr);
int MPL_get_sockaddr_direct(int type, MPL_sockaddr_t * p_addr);
diff --git a/src/pmi/simple/simple_pmi.c b/src/pmi/simple/simple_pmi.c
index df37a8689f..7f660bdac9 100644
--- a/src/pmi/simple/simple_pmi.c
+++ b/src/pmi/simple/simple_pmi.c
@@ -881,7 +881,7 @@ static int PMII_Connect_to_pm(char *hostname, int portnum)
int q_wait = 1;
ret = MPL_get_sockaddr(hostname, &addr);
- if (!ret) {
+ if (ret) {
PMIU_printf(1, "Unable to get host entry for %s\n", hostname);
return PMI_FAIL;
}

View File

@ -0,0 +1,160 @@
diff -Naur mpich-3.3.2.orig/src/env/mpicc.bash.in mpich-3.3.2/src/env/mpicc.bash.in
--- mpich-3.3.2.orig/src/env/mpicc.bash.in 2020-08-06 00:42:51.089874000 +0000
+++ mpich-3.3.2/src/env/mpicc.bash.in 2020-08-06 00:49:34.849138000 +0000
@@ -214,13 +214,13 @@
fi
fi
-final_cflags="@MPICH_MPICC_CFLAGS@ @WRAPPER_CFLAGS@"
-final_cppflags="@MPICH_MPICC_CPPFLAGS@ @WRAPPER_CPPFLAGS@"
-final_ldflags="@MPICH_MPICC_LDFLAGS@ @WRAPPER_LDFLAGS@"
+final_cflags="@MPICH_MPICC_CFLAGS@ "
+final_cppflags="@MPICH_MPICC_CPPFLAGS@ "
+final_ldflags="@MPICH_MPICC_LDFLAGS@ "
final_libs="@MPICH_MPICC_LIBS@"
if test "@INTERLIB_DEPS@" = "no" -o "${interlib_deps}" = "no" ; then
final_ldflags="${final_ldflags} @LDFLAGS@"
- final_libs="${final_libs} @LIBS@ @WRAPPER_LIBS@"
+ final_libs="${final_libs} @LIBS@ "
fi
# -----------------------------------------------------------------------
diff -Naur mpich-3.3.2.orig/src/env/mpicc.sh.in mpich-3.3.2/src/env/mpicc.sh.in
--- mpich-3.3.2.orig/src/env/mpicc.sh.in 2020-08-06 00:42:51.090874000 +0000
+++ mpich-3.3.2/src/env/mpicc.sh.in 2020-08-06 00:49:34.849138000 +0000
@@ -223,13 +223,13 @@
fi
fi
-final_cflags="@MPICH_MPICC_CFLAGS@ @WRAPPER_CFLAGS@"
-final_cppflags="@MPICH_MPICC_CPPFLAGS@ @WRAPPER_CPPFLAGS@"
-final_ldflags="@MPICH_MPICC_LDFLAGS@ @WRAPPER_LDFLAGS@"
+final_cflags="@MPICH_MPICC_CFLAGS@ "
+final_cppflags="@MPICH_MPICC_CPPFLAGS@ "
+final_ldflags="@MPICH_MPICC_LDFLAGS@ "
final_libs="@MPICH_MPICC_LIBS@"
if test "@INTERLIB_DEPS@" = "no" -o "${interlib_deps}" = "no" ; then
final_ldflags="${final_ldflags} @LDFLAGS@"
- final_libs="${final_libs} @LIBS@ @WRAPPER_LIBS@"
+ final_libs="${final_libs} @LIBS@ "
fi
# -----------------------------------------------------------------------
diff -Naur mpich-3.3.2.orig/src/env/mpicxx.bash.in mpich-3.3.2/src/env/mpicxx.bash.in
--- mpich-3.3.2.orig/src/env/mpicxx.bash.in 2020-08-06 00:42:51.090874000 +0000
+++ mpich-3.3.2/src/env/mpicxx.bash.in 2020-08-06 00:49:34.849138000 +0000
@@ -220,13 +220,13 @@
fi
fi
-final_cxxflags="@MPICH_MPICXX_CXXFLAGS@ @WRAPPER_CXXFLAGS@"
-final_cppflags="@MPICH_MPICXX_CPPFLAGS@ @WRAPPER_CPPFLAGS@"
-final_ldflags="@MPICH_MPICXX_LDFLAGS@ @WRAPPER_LDFLAGS@"
+final_cxxflags="@MPICH_MPICXX_CXXFLAGS@ "
+final_cppflags="@MPICH_MPICXX_CPPFLAGS@ "
+final_ldflags="@MPICH_MPICXX_LDFLAGS@ "
final_libs="@MPICH_MPICXX_LIBS@"
if test "@INTERLIB_DEPS@" = "no" -o "${interlib_deps}" = "no" ; then
final_ldflags="${final_ldflags} @LDFLAGS@"
- final_libs="${final_libs} @LIBS@ @WRAPPER_LIBS@"
+ final_libs="${final_libs} @LIBS@ "
fi
# A temporary statement to invoke the compiler
diff -Naur mpich-3.3.2.orig/src/env/mpicxx.sh.in mpich-3.3.2/src/env/mpicxx.sh.in
--- mpich-3.3.2.orig/src/env/mpicxx.sh.in 2020-08-06 00:42:51.090874000 +0000
+++ mpich-3.3.2/src/env/mpicxx.sh.in 2020-08-06 00:49:34.850138000 +0000
@@ -229,13 +229,13 @@
fi
fi
-final_cxxflags="@MPICH_MPICXX_CXXFLAGS@ @WRAPPER_CXXFLAGS@"
-final_cppflags="@MPICH_MPICXX_CPPFLAGS@ @WRAPPER_CPPFLAGS@"
-final_ldflags="@MPICH_MPICXX_LDFLAGS@ @WRAPPER_LDFLAGS@"
+final_cxxflags="@MPICH_MPICXX_CXXFLAGS@ "
+final_cppflags="@MPICH_MPICXX_CPPFLAGS@ "
+final_ldflags="@MPICH_MPICXX_LDFLAGS@ "
final_libs="@MPICH_MPICXX_LIBS@"
if test "@INTERLIB_DEPS@" = "no" -o "${interlib_deps}" = "no" ; then
final_ldflags="${final_ldflags} @LDFLAGS@"
- final_libs="${final_libs} @LIBS@ @WRAPPER_LIBS@"
+ final_libs="${final_libs} @LIBS@ "
fi
# A temporary statement to invoke the compiler
diff -Naur mpich-3.3.2.orig/src/env/mpif77.bash.in mpich-3.3.2/src/env/mpif77.bash.in
--- mpich-3.3.2.orig/src/env/mpif77.bash.in 2020-08-06 00:42:51.090874000 +0000
+++ mpich-3.3.2/src/env/mpif77.bash.in 2020-08-06 00:49:34.852138000 +0000
@@ -272,12 +272,12 @@
fi
fi
-final_fflags="@MPICH_MPIF77_FFLAGS@ @WRAPPER_FFLAGS@"
-final_ldflags="@MPICH_MPIF77_LDFLAGS@ @WRAPPER_LDFLAGS@"
+final_fflags="@MPICH_MPIF77_FFLAGS@ "
+final_ldflags="@MPICH_MPIF77_LDFLAGS@ "
final_libs="@MPICH_MPIF77_LIBS@"
if test "@INTERLIB_DEPS@" = "no" -o "${interlib_deps}" = "no" ; then
final_ldflags="${final_ldflags} @LDFLAGS@"
- final_libs="${final_libs} @LIBS@ @WRAPPER_LIBS@"
+ final_libs="${final_libs} @LIBS@ "
fi
# A temporary statement to invoke the compiler
diff -Naur mpich-3.3.2.orig/src/env/mpif77.sh.in mpich-3.3.2/src/env/mpif77.sh.in
--- mpich-3.3.2.orig/src/env/mpif77.sh.in 2020-08-06 00:42:51.090874000 +0000
+++ mpich-3.3.2/src/env/mpif77.sh.in 2020-08-06 00:49:34.852138000 +0000
@@ -294,12 +294,12 @@
fi
fi
-final_fflags="@MPICH_MPIF77_FFLAGS@ @WRAPPER_FFLAGS@"
-final_ldflags="@MPICH_MPIF77_LDFLAGS@ @WRAPPER_LDFLAGS@"
+final_fflags="@MPICH_MPIF77_FFLAGS@ "
+final_ldflags="@MPICH_MPIF77_LDFLAGS@ "
final_libs="@MPICH_MPIF77_LIBS@"
if test "@INTERLIB_DEPS@" = "no" -o "${interlib_deps}" = "no" ; then
final_ldflags="${final_ldflags} @LDFLAGS@"
- final_libs="${final_libs} @LIBS@ @WRAPPER_LIBS@"
+ final_libs="${final_libs} @LIBS@ "
fi
# A temporary statement to invoke the compiler
diff -Naur mpich-3.3.2.orig/src/env/mpifort.bash.in mpich-3.3.2/src/env/mpifort.bash.in
--- mpich-3.3.2.orig/src/env/mpifort.bash.in 2020-08-06 00:42:51.090874000 +0000
+++ mpich-3.3.2/src/env/mpifort.bash.in 2020-08-06 00:49:34.854138000 +0000
@@ -313,12 +313,12 @@
FCMODDIRS="${FCMODINC}$modincdir"
fi
-final_fcflags="@MPICH_MPIFORT_FCFLAGS@ @WRAPPER_FCFLAGS@"
-final_ldflags="@MPICH_MPIFORT_LDFLAGS@ @WRAPPER_LDFLAGS@"
+final_fcflags="@MPICH_MPIFORT_FCFLAGS@ "
+final_ldflags="@MPICH_MPIFORT_LDFLAGS@ "
final_libs="@MPICH_MPIFORT_LIBS@"
if test "@INTERLIB_DEPS@" = "no" -o "${interlib_deps}" = "no" ; then
final_ldflags="${final_ldflags} @LDFLAGS@"
- final_libs="${final_libs} @LIBS@ @WRAPPER_LIBS@"
+ final_libs="${final_libs} @LIBS@ "
fi
# A temporary statement to invoke the compiler
diff -Naur mpich-3.3.2.orig/src/env/mpifort.sh.in mpich-3.3.2/src/env/mpifort.sh.in
--- mpich-3.3.2.orig/src/env/mpifort.sh.in 2020-08-06 00:42:51.090874000 +0000
+++ mpich-3.3.2/src/env/mpifort.sh.in 2020-08-06 00:49:34.854138000 +0000
@@ -330,12 +330,12 @@
FCMODDIRS="${FCMODINC}$modincdir"
fi
-final_fcflags="@MPICH_MPIFORT_FCFLAGS@ @WRAPPER_FCFLAGS@"
-final_ldflags="@MPICH_MPIFORT_LDFLAGS@ @WRAPPER_LDFLAGS@"
+final_fcflags="@MPICH_MPIFORT_FCFLAGS@ "
+final_ldflags="@MPICH_MPIFORT_LDFLAGS@ "
final_libs="@MPICH_MPIFORT_LIBS@"
if test "@INTERLIB_DEPS@" = "no" -o "${interlib_deps}" = "no" ; then
final_ldflags="${final_ldflags} @LDFLAGS@"
- final_libs="${final_libs} @LIBS@ @WRAPPER_LIBS@"
+ final_libs="${final_libs} @LIBS@ "
fi
# A temporary statement to invoke the compiler

View File

@ -1,26 +1,44 @@
Summary: A high-performance implementation of MPI Summary: A high-performance implementation of MPI
Name: mpich Name: mpich
Version: 3.2.1 Version: 3.3.2
Release: 9%{?dist} Release: 9%{?dist}
License: MIT License: MIT
URL: http://www.mpich.org/ URL: https://www.mpich.org/
Source0: http://www.mpich.org/static/downloads/%{version}/%{name}-%{version}.tar.gz Source0: https://www.mpich.org/static/downloads/%{version}/%{name}-%{version}.tar.gz
Source1: mpich.macros Source1: mpich.macros
Source2: mpich.pth.py3 Source2: mpich.pth.py3
Patch0: mpich-modules.patch Patch0: mpich-modules.patch
Patch3: 0003-soften-version-check.patch Patch1: 0001-Drop-real128.patch
# fix for #1793563 and #1799473
Patch2: https://github.com/pmodels/mpich/pull/4320.patch
# Drop build flags, e.g. -specs... and -lto from mpi wrappers (mpicc and mpicxx)
# for discussion see:
# https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/message/7TFWEKTDWBYBHEGMIWBVI3AVGORZGNBS/
Patch3: fix_wrapper_flags.patch
Patch4: 0001-mpl-limit-scope-on-macos-.local-workaround.patch
Patch5: 0002-mpl-do-not-require-non-loopback-networking.patch
BuildRequires: gcc
BuildRequires: gcc-c++
BuildRequires: gcc-gfortran BuildRequires: gcc-gfortran
BuildRequires: hwloc-devel >= 1.8 BuildRequires: hwloc-devel >= 2.2.0
%ifarch %{valgrind_arches} %ifnarch s390 %{mips}
BuildRequires: valgrind-devel BuildRequires: valgrind-devel
%endif %endif
# For %%{python3_sitearch}
BuildRequires: python3-devel
BuildRequires: rpm-mpi-hooks BuildRequires: rpm-mpi-hooks
BuildRequires: automake BuildRequires: automake
Provides: mpi Provides: mpi
Requires: environment(modules) Requires: environment(modules)
# Make sure this package is rebuilt with correct Python version when updating
# Otherwise mpi.req from rpm-mpi-hooks doesn't work
# https://bugzilla.redhat.com/show_bug.cgi?id=1705296
Requires: (python(abi) = %{python3_version} if python3)
%description %description
MPICH is a high-performance and widely portable implementation of the Message MPICH is a high-performance and widely portable implementation of the Message
Passing Interface (MPI) standard (MPI-1, MPI-2 and MPI-3). The goals of MPICH Passing Interface (MPI) standard (MPI-1, MPI-2 and MPI-3). The goals of MPICH
@ -44,27 +62,25 @@ mpich-autoload package.
%package autoload %package autoload
Summary: Load mpich automatically into profile Summary: Load mpich automatically into profile
Group: System Environment/Base Requires: %{name}%{?_isa} = %{version}-%{release}
Requires: mpich = %{version}-%{release}
%description autoload %description autoload
This package contains profile files that make mpich automatically loaded. This package contains profile files that make mpich automatically loaded.
%package devel %package devel
Summary: Development files for mpich Summary: Development files for mpich
Group: Development/Libraries
Provides: %{name}-devel-static = %{version}-%{release} Provides: %{name}-devel-static = %{version}-%{release}
Requires: %{name} = %{version}-%{release} Requires: %{name}%{?_isa} = %{version}-%{release}
Requires: pkgconfig Requires: pkgconfig
Requires: gcc-gfortran Requires: gcc-gfortran
Requires: rpm-mpi-hooks Requires: rpm-mpi-hooks
Requires: redhat-rpm-config
%description devel %description devel
Contains development headers and libraries for mpich Contains development headers and libraries for mpich
%package doc %package doc
Summary: Documentations and examples for mpich Summary: Documentations and examples for mpich
Group: Documentation
BuildArch: noarch BuildArch: noarch
Requires: %{name}-devel = %{version}-%{release} Requires: %{name}-devel = %{version}-%{release}
@ -73,75 +89,49 @@ Contains documentations, examples and man-pages for mpich
%package -n python3-mpich %package -n python3-mpich
Summary: mpich support for Python 3 Summary: mpich support for Python 3
Group: Development/Libraries Provides: python-mpich
Requires: %{name}%{?_isa} = %{version}-%{release}
BuildRequires: python3-devel Requires: python(abi) = %{python3_version}
Provides: python-mpich
%description -n python3-mpich %description -n python3-mpich
mpich support for Python 3. mpich support for Python 3.
# We only compile with gcc, but other people may want other compilers.
# Set the compiler here.
%{!?opt_cc: %global opt_cc gcc}
%{!?opt_fc: %global opt_fc gfortran}
%{!?opt_f77: %global opt_f77 gfortran}
# Optional CFLAGS to use with the specific compiler...gcc doesn't need any,
# so uncomment and undefine to NOT use
%{!?opt_cc_cflags: %global opt_cc_cflags %{optflags}}
%{!?opt_fc_fflags: %global opt_fc_fflags %{optflags}}
#%%{!?opt_fc_fflags: %%global opt_fc_fflags %%{optflags} -I%%{_fmoddir}}
%{!?opt_f77_fflags: %global opt_f77_fflags %{optflags}}
%ifarch s390
%global m_option -m31
%else
%global m_option -m%{__isa_bits}
%endif
%ifarch %{arm} aarch64 %{mips}
%global m_option ""
%endif
%global selected_channels ch3:nemesis
%ifarch %{ix86} x86_64 s390 %{arm} aarch64
%global XFLAGS -fPIC
%endif
%prep %prep
%autosetup -p1 %setup
%patch0 -p1
%ifarch %{arm}
%patch1 -p1
%endif
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%build %build
%configure \ CONFIGURE_OPTS=(
--enable-sharedlibs=gcc \ --enable-sharedlibs=gcc
--enable-shared \ --enable-shared
--enable-static=no \ --enable-static=no
--enable-lib-depend \ --enable-lib-depend
--disable-rpath \ --disable-rpath
--disable-silent-rules \ --disable-silent-rules
--enable-fc \ --enable-fc
--with-device=%{selected_channels} \ --with-device=ch3:nemesis
--with-pm=hydra:gforker \ --with-pm=hydra:gforker
--includedir=%{_includedir}/%{name}-%{_arch} \ --includedir=%{_includedir}/%{name}-%{_arch}
--bindir=%{_libdir}/%{name}/bin \ --bindir=%{_libdir}/%{name}/bin
--libdir=%{_libdir}/%{name}/lib \ --libdir=%{_libdir}/%{name}/lib
--datadir=%{_datadir}/%{name} \ --datadir=%{_datadir}/%{name}
--mandir=%{_mandir}/%{name}-%{_arch} \ --mandir=%{_mandir}/%{name}-%{_arch}
--docdir=%{_datadir}/%{name}/doc \ --docdir=%{_datadir}/%{name}/doc
--htmldir=%{_datadir}/%{name}/doc \ --htmldir=%{_datadir}/%{name}/doc
--with-hwloc-prefix=system \ --with-hwloc-prefix=system
FC=%{opt_fc} \ )
F77=%{opt_f77} \
CFLAGS="%{m_option} %{optflags} %{?XFLAGS}" \ %configure "${CONFIGURE_OPTS[@]}"
CXXFLAGS="%{m_option} %{optflags} %{?XFLAGS}" \
FCFLAGS="%{m_option} %{optflags} %{?XFLAGS}" \
FFLAGS="%{m_option} %{optflags} %{?XFLAGS}" \
LDFLAGS="%{build_ldflags}" \
MPICHLIB_CFLAGS="%{?opt_cc_cflags}" \
MPICHLIB_CXXFLAGS="%{optflags}" \
MPICHLIB_FCFLAGS="%{?opt_fc_fflags}" \
MPICHLIB_FFLAGS="%{?opt_f77_fflags}"
# Remove rpath # Remove rpath
sed -r -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool sed -r -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
@ -150,6 +140,9 @@ sed -r -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
#Try and work around 'unused-direct-shlib-dependency' rpmlint warnning #Try and work around 'unused-direct-shlib-dependency' rpmlint warnning
sed -i -e 's| -shared | -Wl,--as-needed\0|g' libtool sed -i -e 's| -shared | -Wl,--as-needed\0|g' libtool
# work-around libtool error: cannot determine absolute directory name of 'system/lib'
mkdir -p system/lib
%make_build VERBOSE=1 %make_build VERBOSE=1
%install %install
@ -160,7 +153,7 @@ mv %{buildroot}%{_includedir}/%{name}-*/*.mod %{buildroot}%{_fmoddir}/%{name}/
sed -r -i 's|^modincdir=.*|modincdir=%{_fmoddir}/%{name}|' %{buildroot}%{_libdir}/%{name}/bin/mpifort sed -r -i 's|^modincdir=.*|modincdir=%{_fmoddir}/%{name}|' %{buildroot}%{_libdir}/%{name}/bin/mpifort
# Install the module file # Install the module file
mkdir -p %{buildroot}%{_sysconfdir}/modulefiles/mpi mkdir -p %{buildroot}%{_datadir}/modulefiles/mpi
sed -r 's|%{_bindir}|%{_libdir}/%{name}/bin|; sed -r 's|%{_bindir}|%{_libdir}/%{name}/bin|;
s|@LIBDIR@|%{_libdir}/%{name}|; s|@LIBDIR@|%{_libdir}/%{name}|;
s|@MPINAME@|%{name}|; s|@MPINAME@|%{name}|;
@ -169,7 +162,7 @@ sed -r 's|%{_bindir}|%{_libdir}/%{name}/bin|;
s|@fortranmoddir@|%{_fmoddir}|; s|@fortranmoddir@|%{_fmoddir}|;
' \ ' \
<src/packaging/envmods/mpich.module \ <src/packaging/envmods/mpich.module \
>%{buildroot}%{_sysconfdir}/modulefiles/mpi/%{name}-%{_arch} >%{buildroot}%{_datadir}/modulefiles/mpi/%{name}-%{_arch}
mkdir -p %{buildroot}%{_sysconfdir}/profile.d mkdir -p %{buildroot}%{_sysconfdir}/profile.d
cat >%{buildroot}%{_sysconfdir}/profile.d/mpich-%{_arch}.sh <<EOF cat >%{buildroot}%{_sysconfdir}/profile.d/mpich-%{_arch}.sh <<EOF
@ -188,11 +181,16 @@ install -pDm0644 %{SOURCE2} %{buildroot}%{python3_sitearch}/%{name}.pth
find %{buildroot} -type f -name "*.la" -delete find %{buildroot} -type f -name "*.la" -delete
%check %check
make check VERBOSE=1 make check VERBOSE=1 \
%ifarch ppc64le
|| :
%endif
# The test results are ignored on ppc64le. The tests started failing
# in the bundled openpa checksuite. Upstream has already removed it,
# so the issue should resolve itself for the next release and I don't
# think it's worth the time to solve it here.
%post -p /sbin/ldconfig %ldconfig_scriptlets
%postun -p /sbin/ldconfig
%files %files
%license COPYRIGHT %license COPYRIGHT
@ -209,7 +207,7 @@ make check VERBOSE=1
%{_libdir}/%{name}/bin/parkill %{_libdir}/%{name}/bin/parkill
%dir %{_mandir}/%{name}-%{_arch} %dir %{_mandir}/%{name}-%{_arch}
%doc %{_mandir}/%{name}-%{_arch}/man1/ %doc %{_mandir}/%{name}-%{_arch}/man1/
%{_sysconfdir}/modulefiles/mpi/ %{_datadir}/modulefiles/mpi/
%files autoload %files autoload
%{_sysconfdir}/profile.d/mpich-%{_arch}.* %{_sysconfdir}/profile.d/mpich-%{_arch}.*
@ -237,6 +235,15 @@ make check VERBOSE=1
%{python3_sitearch}/%{name}.pth %{python3_sitearch}/%{name}.pth
%changelog %changelog
* Thu Oct 15 2020 Honggang Li <honli@redhat.com> - 3.3.2-9
- Fix a dependency typo
- Related: rhbz#1850080
* Thu Oct 15 2020 Honggang Li <honli@redhat.com> - 3.3.2-8
- Sync with Fedora build
- Update to latest upstream release 3.3.2
- Resolves: rhbz#1657316, rhbz#1732982, rhbz#1850080
* Fri Sep 21 2018 Jarod Wilson <jarod@redhat.com> - 3.2.1-9 * Fri Sep 21 2018 Jarod Wilson <jarod@redhat.com> - 3.2.1-9
- Use proper distro compile flags throughout build - Use proper distro compile flags throughout build
- Related: rhbz#1624144 - Related: rhbz#1624144