diff --git a/.gitignore b/.gitignore index 510fc13..96c3d82 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/mpich-3.2.1.tar.gz +SOURCES/mpich-3.3.2.tar.gz diff --git a/.mpich.metadata b/.mpich.metadata index d18e8d3..1e67273 100644 --- a/.mpich.metadata +++ b/.mpich.metadata @@ -1 +1 @@ -24c53333927d1760db78be2b9ef217f4f3dcf771 SOURCES/mpich-3.2.1.tar.gz +d1b887a6265df846481328bb1a6a0855b5292bef SOURCES/mpich-3.3.2.tar.gz diff --git a/SOURCES/0001-Drop-real128.patch b/SOURCES/0001-Drop-real128.patch new file mode 100644 index 0000000..355bd87 --- /dev/null +++ b/SOURCES/0001-Drop-real128.patch @@ -0,0 +1,74 @@ +From 8f0c71281b5dccd70a3f1d4204e3cc6bc7201ceb Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= + +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 + diff --git a/SOURCES/0001-mpl-limit-scope-on-macos-.local-workaround.patch b/SOURCES/0001-mpl-limit-scope-on-macos-.local-workaround.patch new file mode 100644 index 0000000..f816bda --- /dev/null +++ b/SOURCES/0001-mpl-limit-scope-on-macos-.local-workaround.patch @@ -0,0 +1,34 @@ +From fbb8f503df077c726b0c99d467bc984566273b92 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +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 diff --git a/SOURCES/0002-mpl-do-not-require-non-loopback-networking.patch b/SOURCES/0002-mpl-do-not-require-non-loopback-networking.patch new file mode 100644 index 0000000..dcddf03 --- /dev/null +++ b/SOURCES/0002-mpl-do-not-require-non-loopback-networking.patch @@ -0,0 +1,57 @@ +From ecb72e6699f4f8525115e0b42f81121a1cf8eefa Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +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: + + sh-5.0# hostname +68da8e7c62a2404bb4bf75c9ce643e06 + sh-5.0# module load mpi/mpich-x86_64 + 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) + + sh-5.0# ip a +1: lo: 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; diff --git a/SOURCES/0003-soften-version-check.patch b/SOURCES/0003-soften-version-check.patch deleted file mode 100644 index 6d75cc6..0000000 --- a/SOURCES/0003-soften-version-check.patch +++ /dev/null @@ -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 diff --git a/SOURCES/4320.patch b/SOURCES/4320.patch new file mode 100644 index 0000000..0019f25 --- /dev/null +++ b/SOURCES/4320.patch @@ -0,0 +1,101 @@ +From a1524608b05e6c89e2b99f64923f064d888465ce Mon Sep 17 00:00:00 2001 +From: Hui Zhou +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 +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; + } diff --git a/SOURCES/fix_wrapper_flags.patch b/SOURCES/fix_wrapper_flags.patch new file mode 100644 index 0000000..e555d6d --- /dev/null +++ b/SOURCES/fix_wrapper_flags.patch @@ -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 diff --git a/SPECS/mpich.spec b/SPECS/mpich.spec index 9e86c4a..0d70798 100644 --- a/SPECS/mpich.spec +++ b/SPECS/mpich.spec @@ -1,26 +1,44 @@ Summary: A high-performance implementation of MPI Name: mpich -Version: 3.2.1 +Version: 3.3.2 Release: 9%{?dist} 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 Source2: mpich.pth.py3 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: hwloc-devel >= 1.8 -%ifarch %{valgrind_arches} +BuildRequires: hwloc-devel >= 2.2.0 +%ifnarch s390 %{mips} BuildRequires: valgrind-devel %endif +# For %%{python3_sitearch} +BuildRequires: python3-devel BuildRequires: rpm-mpi-hooks BuildRequires: automake Provides: mpi 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 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 @@ -44,27 +62,25 @@ mpich-autoload package. %package autoload Summary: Load mpich automatically into profile -Group: System Environment/Base -Requires: mpich = %{version}-%{release} +Requires: %{name}%{?_isa} = %{version}-%{release} %description autoload This package contains profile files that make mpich automatically loaded. %package devel Summary: Development files for mpich -Group: Development/Libraries Provides: %{name}-devel-static = %{version}-%{release} -Requires: %{name} = %{version}-%{release} +Requires: %{name}%{?_isa} = %{version}-%{release} Requires: pkgconfig Requires: gcc-gfortran Requires: rpm-mpi-hooks +Requires: redhat-rpm-config %description devel Contains development headers and libraries for mpich %package doc Summary: Documentations and examples for mpich -Group: Documentation BuildArch: noarch Requires: %{name}-devel = %{version}-%{release} @@ -73,75 +89,49 @@ Contains documentations, examples and man-pages for mpich %package -n python3-mpich Summary: mpich support for Python 3 -Group: Development/Libraries - -BuildRequires: python3-devel -Provides: python-mpich +Provides: python-mpich +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: python(abi) = %{python3_version} %description -n python3-mpich 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 -%autosetup -p1 +%setup + +%patch0 -p1 + +%ifarch %{arm} +%patch1 -p1 +%endif +%patch2 -p1 +%patch3 -p1 + +%patch4 -p1 +%patch5 -p1 %build -%configure \ - --enable-sharedlibs=gcc \ - --enable-shared \ - --enable-static=no \ - --enable-lib-depend \ - --disable-rpath \ - --disable-silent-rules \ - --enable-fc \ - --with-device=%{selected_channels} \ - --with-pm=hydra:gforker \ - --includedir=%{_includedir}/%{name}-%{_arch} \ - --bindir=%{_libdir}/%{name}/bin \ - --libdir=%{_libdir}/%{name}/lib \ - --datadir=%{_datadir}/%{name} \ - --mandir=%{_mandir}/%{name}-%{_arch} \ - --docdir=%{_datadir}/%{name}/doc \ - --htmldir=%{_datadir}/%{name}/doc \ - --with-hwloc-prefix=system \ - FC=%{opt_fc} \ - F77=%{opt_f77} \ - CFLAGS="%{m_option} %{optflags} %{?XFLAGS}" \ - 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}" +CONFIGURE_OPTS=( + --enable-sharedlibs=gcc + --enable-shared + --enable-static=no + --enable-lib-depend + --disable-rpath + --disable-silent-rules + --enable-fc + --with-device=ch3:nemesis + --with-pm=hydra:gforker + --includedir=%{_includedir}/%{name}-%{_arch} + --bindir=%{_libdir}/%{name}/bin + --libdir=%{_libdir}/%{name}/lib + --datadir=%{_datadir}/%{name} + --mandir=%{_mandir}/%{name}-%{_arch} + --docdir=%{_datadir}/%{name}/doc + --htmldir=%{_datadir}/%{name}/doc + --with-hwloc-prefix=system +) + +%configure "${CONFIGURE_OPTS[@]}" # Remove rpath 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 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 %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 # Install the module file -mkdir -p %{buildroot}%{_sysconfdir}/modulefiles/mpi +mkdir -p %{buildroot}%{_datadir}/modulefiles/mpi sed -r 's|%{_bindir}|%{_libdir}/%{name}/bin|; s|@LIBDIR@|%{_libdir}/%{name}|; s|@MPINAME@|%{name}|; @@ -169,7 +162,7 @@ sed -r 's|%{_bindir}|%{_libdir}/%{name}/bin|; s|@fortranmoddir@|%{_fmoddir}|; ' \ %{buildroot}%{_sysconfdir}/modulefiles/mpi/%{name}-%{_arch} + >%{buildroot}%{_datadir}/modulefiles/mpi/%{name}-%{_arch} mkdir -p %{buildroot}%{_sysconfdir}/profile.d cat >%{buildroot}%{_sysconfdir}/profile.d/mpich-%{_arch}.sh < - 3.3.2-9 +- Fix a dependency typo +- Related: rhbz#1850080 + +* Thu Oct 15 2020 Honggang Li - 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 - 3.2.1-9 - Use proper distro compile flags throughout build - Related: rhbz#1624144