Hello community,

here is the log from the commit of package gasnet for openSUSE:Factory checked 
in at 2020-06-07 21:40:04
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gasnet (Old)
 and      /work/SRC/openSUSE:Factory/.gasnet.new.3606 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gasnet"

Sun Jun  7 21:40:04 2020 rev:14 rq:812242 version:1.32.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/gasnet/gasnet.changes    2019-10-22 
15:46:40.285803250 +0200
+++ /work/SRC/openSUSE:Factory/.gasnet.new.3606/gasnet.changes  2020-06-07 
21:40:11.137805255 +0200
@@ -1,0 +2,5 @@
+Sun Jun  7 13:52:05 UTC 2020 - Nicolas Morey-Chaisemartin 
<[email protected]>
+
+- Add gasnet-fix-multiple-definitions.patch to fix compatibility with GCC10
+
+-------------------------------------------------------------------

New:
----
  gasnet-fix-multiple-definitions.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ gasnet.spec ++++++
--- /var/tmp/diff_new_pack.dM1T1y/_old  2020-06-07 21:40:11.905807689 +0200
+++ /var/tmp/diff_new_pack.dM1T1y/_new  2020-06-07 21:40:11.909807702 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package gasnet
 #
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -25,13 +25,14 @@
 Summary:        A Communication Layer for GAS Languages
 License:        PostgreSQL
 Group:          Productivity/Networking/Other
-Url:            https://gasnet.lbl.gov
+URL:            https://gasnet.lbl.gov
 Source0:        https://gasnet.lbl.gov/download/GASNet-%{version}.tar.gz
 Patch0:         gasnet-date-time.patch
 # PATCH-FIX-OPENSUSE -- have constant BUILD_ID to fix build-compare
 Patch2:         gasnet-build-id.patch
 # PATCH-FIX-OPENSUSE 
https://bitbucket.org/berkeleylab/gasnet/pull-requests/253/allow-to-not-store-build-date-user-and/diff
 Patch3:         gasnet-build-hostname.patch
+Patch4:         gasnet-fix-multiple-definitions.patch
 BuildRequires:  automake
 BuildRequires:  fdupes
 BuildRequires:  gcc-c++
@@ -102,6 +103,7 @@
 %patch0
 %patch2 -p1
 %patch3 -p1
+%patch4
 
 # Avoid unnecessary rebuilds of the package
 FAKE_BUILDDATE=$(LC_ALL=C date -u -r %{_sourcedir}/%{name}.changes '+%%b %%e 
%%Y')
@@ -157,12 +159,12 @@
     [[ ${soname} = libgasnet-ofi-* ]] && libs+=" -L${libdir} -lfabric" &&
           linker=`which mpic++`; \
     [[ ${soname} = libgasnet-*-* ]] && libs+=" -lrt"; \
-    ${linker} -shared -Wl,-soname=${soname}-%{version}.so \
+    (${linker} -shared -Wl,-soname=${soname}-%{version}.so \
         -Wl,--as-needed -Wl,-z,defs -Wl,--rpath-link=. \
         -Wl,--whole-archive ${l} -Wl,--no-whole-archive \
         ${libs} -o ${libdir}/${soname}-%{version}.so && \
     ln -s ${soname}-%{version}.so ${libdir}/${soname}.so && \
-    rm ${l} ; \
+    rm ${l}) || exit 1 ; \
 done
 
 %post -n libgasnet-%{libver} -p /sbin/ldconfig

++++++ gasnet-fix-multiple-definitions.patch ++++++
commit 4b6758330c0040281dbbd1c518555d97d4dd3b4b
Author: Nicolas Morey-Chaisemartin <[email protected]>
Date:   Sun Jun 7 15:08:24 2020 +0200

    gasnet fix multiple definitions
    
    Add missing externs and declations to fix compatibility with GCC10
    
    Signed-off-by: Nicolas Morey-Chaisemartin <[email protected]>

diff --git gasnet_tools.c gasnet_tools.c
index 3cae0d519114..3551f03c9c6e 100644
--- gasnet_tools.c
+++ gasnet_tools.c
@@ -1432,7 +1432,6 @@ static int gasneti_backtrace_userdisabled = 0;
 static const char *gasneti_backtrace_list = 0;
 GASNETT_TENTATIVE_EXTERN
 const char *(*gasneti_backtraceid_fn)(void); /* allow client override of 
backtrace line prefix */
-gasnett_backtrace_type_t gasnett_backtrace_user; /* allow client provided 
backtrace function */
 extern void gasneti_backtrace_init(const char *exename) {
   static int user_is_init = 0;
 
@@ -1457,7 +1456,8 @@ extern void gasneti_backtrace_init(const char *exename) {
     return;
   }
 
-  if (!user_is_init && gasnett_backtrace_user.name && 
gasnett_backtrace_user.fnp) {
+  if (!user_is_init && &gasnett_backtrace_user &&
+         gasnett_backtrace_user.name && gasnett_backtrace_user.fnp) {
     memcpy(&gasneti_backtrace_mechanisms[gasneti_backtrace_mechanism_count++], 
&gasnett_backtrace_user, sizeof(gasnett_backtrace_user));
     user_is_init = 1;
   }
diff --git gasnet_tools.h gasnet_tools.h
index 0331a2b80cfd..5c868ede8608 100644
--- gasnet_tools.h
+++ gasnet_tools.h
@@ -430,7 +430,7 @@ typedef struct {
   int threadsupport; /* does backtrace function handle threads correctly? 
                               -ie backtrace the calling thread and optionally 
others as well */
 } gasnett_backtrace_type_t;
-extern gasnett_backtrace_type_t gasnett_backtrace_user;
+extern gasnett_backtrace_type_t gasnett_backtrace_user __attribute__((weak));
 
 /* 
------------------------------------------------------------------------------------
 */
 /* GASNet tracing/stats support (automatically stubbed out when libgasnet 
absent) */
diff --git ofi-conduit/gasnet_core_internal.h ofi-conduit/gasnet_core_internal.h
index 897d422fb24f..3daa5556a40c 100644
--- ofi-conduit/gasnet_core_internal.h
+++ ofi-conduit/gasnet_core_internal.h
@@ -31,45 +31,6 @@
 #define GASNETC_MAX_NUMHANDLERS   256
 extern gasneti_handler_fn_t gasnetc_handler[GASNETC_MAX_NUMHANDLERS];
 
-/* FI_THREAD_DOMAIN providers in PAR mode */
-#if GASNET_PAR && GASNETC_OFI_USE_THREAD_DOMAIN
-    #define GASNETC_OFI_TRYLOCK(lock) 
gasneti_spinlock_trylock(&gasnetc_ofi_locks.big_lock)
-    #define GASNETC_OFI_LOCK(lock) 
gasneti_spinlock_lock(&gasnetc_ofi_locks.big_lock)
-    #define GASNETC_OFI_UNLOCK(lock) 
gasneti_spinlock_unlock(&gasnetc_ofi_locks.big_lock)
-    /* When using DOMAIN, all locks use the centralized big_lock */
-    #define GASNETC_OFI_PAR_TRYLOCK(lock) GASNETC_OFI_TRYLOCK(lock)
-    #define GASNETC_OFI_PAR_LOCK(lock) GASNETC_OFI_LOCK(lock)
-    #define GASNETC_OFI_PAR_UNLOCK(lock) GASNETC_OFI_UNLOCK(lock)
-/* This is left here for the purpose of supporting future providers that 
require fine
- * grained locking. For now, all supported providers either support 
FI_THREAD_DOMAIN or
- * FI_THREAD_SAFE */
-#elif 0 && GASNET_PAR
-    #define GASNETC_OFI_TRYLOCK(lock) gasneti_spinlock_trylock(lock)
-    #define GASNETC_OFI_LOCK(lock) gasneti_spinlock_lock(lock)
-    #define GASNETC_OFI_UNLOCK(lock) gasneti_spinlock_unlock(lock)
-    #define GASNETC_OFI_PAR_TRYLOCK(lock) gasneti_spinlock_trylock(lock)
-    #define GASNETC_OFI_PAR_LOCK(lock) gasneti_spinlock_lock(lock)
-    #define GASNETC_OFI_PAR_UNLOCK(lock) gasneti_spinlock_unlock(lock)
-#elif GASNET_PAR /* For FI_THREAD_SAFE providers in PAR mode*/
-#define GASNETC_OFI_TRYLOCK(lock) 0
-    #define GASNETC_OFI_LOCK(lock) do{} while(0) 
-    #define GASNETC_OFI_UNLOCK(lock) do{} while(0) 
-    #define GASNETC_OFI_PAR_TRYLOCK(lock) gasneti_spinlock_trylock(lock)
-    #define GASNETC_OFI_PAR_LOCK(lock) gasneti_spinlock_lock(lock)
-    #define GASNETC_OFI_PAR_UNLOCK(lock) gasneti_spinlock_unlock(lock)
-#else /* GASNET_SEQ or GASNET_PARSYNC */
-    #define GASNETC_OFI_TRYLOCK(lock) 0
-    #define GASNETC_OFI_LOCK(lock) do{} while(0) 
-    #define GASNETC_OFI_UNLOCK(lock) do{} while(0) 
-    #define GASNETC_OFI_PAR_TRYLOCK(lock) 0
-    #define GASNETC_OFI_PAR_LOCK(lock) do{} while(0) 
-    #define GASNETC_OFI_PAR_UNLOCK(lock) do{} while(0) 
-#endif
-
-#define GASNETC_OFI_LOCK_EXPR(lock, expr) do { GASNETC_OFI_LOCK(lock); \
-                                               expr; \
-                                               GASNETC_OFI_UNLOCK(lock); \
-                                          } while(0)
 
 /* 
------------------------------------------------------------------------------------
 */
 /* AM category (recommended impl if supporting PSHM) */
@@ -95,37 +56,6 @@ typedef enum {
 #define GASNETC_STAT_EVENT_VAL(name,val) \
     _GASNETI_STAT_EVENT_VAL(C,name,val)
 
-/* Unnamed struct to hold all the locks needed */
-#if GASNET_PAR && GASNETC_OFI_USE_THREAD_DOMAIN
-struct {
-    gasneti_atomic_t big_lock;
-} gasnetc_ofi_locks;
-#elif GASNET_PAR
-struct {
-    gasneti_atomic_t rx_request_cq;
-    char _pad0[GASNETI_CACHE_PAD(sizeof(gasneti_atomic_t))];
-    gasneti_atomic_t rx_reply_cq;
-} gasnetc_ofi_locks;
-/* This is left here for the purpose of supporting future providers that 
require fine
- * grained locking. For now, all supported providers either support 
FI_THREAD_DOMAIN or
- * FI_THREAD_SAFE */
-#elif 0 && GASNET_PAR && !GASNETC_OFI_USE_THREAD_DOMAIN
-struct {
-    gasneti_atomic_t rx_cq;
-    char _pad0[GASNETI_CACHE_PAD(sizeof(gasneti_atomic_t))];
-    gasneti_atomic_t tx_cq;
-    char _pad1[GASNETI_CACHE_PAD(sizeof(gasneti_atomic_t))];
-    gasneti_atomic_t rdma_tx;
-    char _pad2[GASNETI_CACHE_PAD(sizeof(gasneti_atomic_t))];
-    gasneti_atomic_t rdma_rx;
-    char _pad3[GASNETI_CACHE_PAD(sizeof(gasneti_atomic_t))];
-    gasneti_atomic_t am_tx;
-    char _pad4[GASNETI_CACHE_PAD(sizeof(gasneti_atomic_t))];
-    gasneti_atomic_t am_rx;
-
-} gasnetc_ofi_locks;
-#endif
-
 /* These definitions are just to make the polling of the two different AM
  * networks easier to read and understand*/
 #define OFI_POLL_ALL   1
diff --git ofi-conduit/gasnet_ofi.c ofi-conduit/gasnet_ofi.c
index 7088d3515263..dde541bb3120 100644
--- ofi-conduit/gasnet_ofi.c
+++ ofi-conduit/gasnet_ofi.c
@@ -21,6 +21,95 @@
 #include <sys/uio.h> /* For struct iovec */
 #endif
 
+
+/* Globals */
+struct fid_fabric*    gasnetc_ofi_fabricfd;
+struct fid_domain*    gasnetc_ofi_domainfd;
+struct fid_av*        gasnetc_ofi_avfd;
+struct fid_cq*        gasnetc_ofi_tx_cqfd; /* CQ for both AM and RDMA tx ops */
+
+struct fid_ep*        gasnetc_ofi_rdma_epfd;
+struct fid_mr*        gasnetc_ofi_rdma_mrfd;
+
+struct fid_ep*        gasnetc_ofi_request_epfd;
+struct fid_ep*        gasnetc_ofi_reply_epfd;
+struct fid_cq*        gasnetc_ofi_request_cqfd;
+struct fid_cq*        gasnetc_ofi_reply_cqfd;
+
+/* The cut off of when to fully block for a non-blocking put*/
+size_t gasnetc_ofi_bbuf_threshold; 
+
+/* FI_THREAD_DOMAIN providers in PAR mode */
+#if GASNET_PAR && GASNETC_OFI_USE_THREAD_DOMAIN
+    #define GASNETC_OFI_TRYLOCK(lock) 
gasneti_spinlock_trylock(&gasnetc_ofi_locks.big_lock)
+    #define GASNETC_OFI_LOCK(lock) 
gasneti_spinlock_lock(&gasnetc_ofi_locks.big_lock)
+    #define GASNETC_OFI_UNLOCK(lock) 
gasneti_spinlock_unlock(&gasnetc_ofi_locks.big_lock)
+    /* When using DOMAIN, all locks use the centralized big_lock */
+    #define GASNETC_OFI_PAR_TRYLOCK(lock) GASNETC_OFI_TRYLOCK(lock)
+    #define GASNETC_OFI_PAR_LOCK(lock) GASNETC_OFI_LOCK(lock)
+    #define GASNETC_OFI_PAR_UNLOCK(lock) GASNETC_OFI_UNLOCK(lock)
+/* This is left here for the purpose of supporting future providers that 
require fine
+ * grained locking. For now, all supported providers either support 
FI_THREAD_DOMAIN or
+ * FI_THREAD_SAFE */
+#elif 0 && GASNET_PAR
+    #define GASNETC_OFI_TRYLOCK(lock) gasneti_spinlock_trylock(lock)
+    #define GASNETC_OFI_LOCK(lock) gasneti_spinlock_lock(lock)
+    #define GASNETC_OFI_UNLOCK(lock) gasneti_spinlock_unlock(lock)
+    #define GASNETC_OFI_PAR_TRYLOCK(lock) gasneti_spinlock_trylock(lock)
+    #define GASNETC_OFI_PAR_LOCK(lock) gasneti_spinlock_lock(lock)
+    #define GASNETC_OFI_PAR_UNLOCK(lock) gasneti_spinlock_unlock(lock)
+#elif GASNET_PAR /* For FI_THREAD_SAFE providers in PAR mode*/
+#define GASNETC_OFI_TRYLOCK(lock) 0
+    #define GASNETC_OFI_LOCK(lock) do{} while(0) 
+    #define GASNETC_OFI_UNLOCK(lock) do{} while(0) 
+    #define GASNETC_OFI_PAR_TRYLOCK(lock) gasneti_spinlock_trylock(lock)
+    #define GASNETC_OFI_PAR_LOCK(lock) gasneti_spinlock_lock(lock)
+    #define GASNETC_OFI_PAR_UNLOCK(lock) gasneti_spinlock_unlock(lock)
+#else /* GASNET_SEQ or GASNET_PARSYNC */
+    #define GASNETC_OFI_TRYLOCK(lock) 0
+    #define GASNETC_OFI_LOCK(lock) do{} while(0) 
+    #define GASNETC_OFI_UNLOCK(lock) do{} while(0) 
+    #define GASNETC_OFI_PAR_TRYLOCK(lock) 0
+    #define GASNETC_OFI_PAR_LOCK(lock) do{} while(0) 
+    #define GASNETC_OFI_PAR_UNLOCK(lock) do{} while(0) 
+#endif
+
+#define GASNETC_OFI_LOCK_EXPR(lock, expr) do { GASNETC_OFI_LOCK(lock); \
+                                               expr; \
+                                               GASNETC_OFI_UNLOCK(lock); \
+                                          } while(0)
+
+/* Unnamed struct to hold all the locks needed */
+#if GASNET_PAR && GASNETC_OFI_USE_THREAD_DOMAIN
+struct {
+    gasneti_atomic_t big_lock;
+} gasnetc_ofi_locks;
+#elif GASNET_PAR
+struct {
+    gasneti_atomic_t rx_request_cq;
+    char _pad0[GASNETI_CACHE_PAD(sizeof(gasneti_atomic_t))];
+    gasneti_atomic_t rx_reply_cq;
+} gasnetc_ofi_locks;
+/* This is left here for the purpose of supporting future providers that 
require fine
+ * grained locking. For now, all supported providers either support 
FI_THREAD_DOMAIN or
+ * FI_THREAD_SAFE */
+#elif 0 && GASNET_PAR && !GASNETC_OFI_USE_THREAD_DOMAIN
+struct {
+    gasneti_atomic_t rx_cq;
+    char _pad0[GASNETI_CACHE_PAD(sizeof(gasneti_atomic_t))];
+    gasneti_atomic_t tx_cq;
+    char _pad1[GASNETI_CACHE_PAD(sizeof(gasneti_atomic_t))];
+    gasneti_atomic_t rdma_tx;
+    char _pad2[GASNETI_CACHE_PAD(sizeof(gasneti_atomic_t))];
+    gasneti_atomic_t rdma_rx;
+    char _pad3[GASNETI_CACHE_PAD(sizeof(gasneti_atomic_t))];
+    gasneti_atomic_t am_tx;
+    char _pad4[GASNETI_CACHE_PAD(sizeof(gasneti_atomic_t))];
+    gasneti_atomic_t am_rx;
+
+} gasnetc_ofi_locks;
+#endif
+
 typedef struct gasnetc_ofi_recv_metadata {
     struct iovec iov;
     struct fi_msg am_buff_msg;
diff --git ofi-conduit/gasnet_ofi.h ofi-conduit/gasnet_ofi.h
index fc25a260792e..b1d6f74f2672 100644
--- ofi-conduit/gasnet_ofi.h
+++ ofi-conduit/gasnet_ofi.h
@@ -41,21 +41,21 @@ typedef gasnetc_paratomic(t)         gasnetc_paratomic_t;
 #define gasnetc_paratomic_decrement  gasnetc_paratomic(decrement)
 #define gasnetc_paratomic_decrement_and_test  
gasnetc_paratomic(decrement_and_test)
 
-struct fid_fabric*    gasnetc_ofi_fabricfd;
-struct fid_domain*    gasnetc_ofi_domainfd;
-struct fid_av*        gasnetc_ofi_avfd;
-struct fid_cq*        gasnetc_ofi_tx_cqfd; /* CQ for both AM and RDMA tx ops */
+extern struct fid_fabric*    gasnetc_ofi_fabricfd;
+extern struct fid_domain*    gasnetc_ofi_domainfd;
+extern struct fid_av*        gasnetc_ofi_avfd;
+extern struct fid_cq*        gasnetc_ofi_tx_cqfd; /* CQ for both AM and RDMA 
tx ops */
 
-struct fid_ep*        gasnetc_ofi_rdma_epfd;
-struct fid_mr*        gasnetc_ofi_rdma_mrfd;
+extern struct fid_ep*        gasnetc_ofi_rdma_epfd;
+extern struct fid_mr*        gasnetc_ofi_rdma_mrfd;
 
-struct fid_ep*        gasnetc_ofi_request_epfd;
-struct fid_ep*        gasnetc_ofi_reply_epfd;
-struct fid_cq*        gasnetc_ofi_request_cqfd;
-struct fid_cq*        gasnetc_ofi_reply_cqfd;
+extern struct fid_ep*        gasnetc_ofi_request_epfd;
+extern struct fid_ep*        gasnetc_ofi_reply_epfd;
+extern struct fid_cq*        gasnetc_ofi_request_cqfd;
+extern struct fid_cq*        gasnetc_ofi_reply_cqfd;
 
 /* The cut off of when to fully block for a non-blocking put*/
-size_t gasnetc_ofi_bbuf_threshold; 
+extern size_t gasnetc_ofi_bbuf_threshold;
 /* Address table data */
 typedef void*                     conn_entry_t;
 typedef struct
@@ -193,6 +193,6 @@ int gasnetc_rdma_put_non_bulk(gasnet_node_t dest, void* 
dest_addr, void* src_add
 void gasnetc_rdma_put_wait(gasnet_handle_t op);
 void gasnetc_rdma_get_wait(gasnet_handle_t op);
 
-int gasnetc_exit_in_progress;
+extern int gasnetc_exit_in_progress;
 
 #endif /*GASNET_OFI_H*/

Reply via email to