Hello community, here is the log from the commit of package openucx for openSUSE:Factory checked in at 2017-07-12 19:33:54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/openucx (Old) and /work/SRC/openSUSE:Factory/.openucx.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openucx" Wed Jul 12 19:33:54 2017 rev:3 rq:507873 version:1.3+git44 Changes: -------- --- /work/SRC/openSUSE:Factory/openucx/openucx.changes 2016-06-19 10:50:45.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.openucx.new/openucx.changes 2017-07-12 19:33:55.597968264 +0200 @@ -1,0 +2,24 @@ +Fri Jun 30 09:30:58 UTC 2017 - nmoreychaisemar...@suse.com + +- Disable avx at configure level + +------------------------------------------------------------------- +Wed Jun 28 16:46:31 UTC 2017 - nmoreychaisemar...@suse.com + +- Add openucx-s390x-support.patch to fix compilation on s390x +- Compile openucx on s390x + +------------------------------------------------------------------- +Thu Jun 8 12:12:59 UTC 2017 - nmoreychaisemar...@suse.com + +- Fix compilation on ppc + +------------------------------------------------------------------- +Fri May 26 08:29:51 UTC 2017 - jeng...@inai.de + +- Update to snapshot 1.3+git44 + * No changelog was found +- Add -Wno-error and disable AVX/SSE as it is not guaranteed + to exist. + +------------------------------------------------------------------- Old: ---- ucx-0~git1727.tar.xz New: ---- openucx-s390x-support.patch ucx-1.3+git44.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ openucx.spec ++++++ --- /var/tmp/diff_new_pack.POmyGf/_old 2017-07-12 19:33:56.381857665 +0200 +++ /var/tmp/diff_new_pack.POmyGf/_new 2017-07-12 19:33:56.381857665 +0200 @@ -1,7 +1,7 @@ # # spec file for package openucx # -# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,29 +16,32 @@ # -%define version_unconverted 0~git1727 +%define version_unconverted 1.3+git44 Name: openucx Summary: Unifieid Communication X License: BSD-3-Clause Group: Development/Libraries/C and C++ -Version: 0~git1727 +Version: 1.3+git44 Release: 0 Url: http://openucx.org/ #Git-Clone: git://github.com/openucx/ucx #Git-Web: https://github.com/openucx/ucx Source: ucx-%version.tar.xz +Patch0: openucx-s390x-support.patch BuildRequires: autoconf >= 2.63 BuildRequires: automake >= 1.10 +BuildRequires: binutils-devel BuildRequires: doxygen BuildRequires: gcc-c++ BuildRequires: libibverbs-devel +BuildRequires: libnuma-devel BuildRequires: libtool BuildRequires: pkg-config BuildRequires: zlib-devel BuildRoot: %{_tmppath}/%{name}-%{version}-build -ExclusiveArch: aarch64 %power64 x86_64 +ExclusiveArch: aarch64 %power64 x86_64 s390x %description UCX is a communication library implementing high-performance @@ -73,52 +76,52 @@ libucm is a standalone non-unloadable library which installs hooks for virtual memory changes in the current process. -%package -n libucp2 +%package -n libucp0 Summary: Infiniband Unified Communication Protocols Group: System/Libraries -%description -n libucp2 +%description -n libucp0 High-level API uses UCT framework to construct protocols commonly found in applications (MPI, OpenSHMEM, PGAS, etc.) %package -n libucp-devel Summary: Development files for Unified Communication Protocols (UC-P) Group: Development/Libraries/C and C++ -Requires: libucp2 = %version +Requires: libucp0 = %version %description -n libucp-devel High-level API uses UCT framework to construct protocols commonly found in applications (MPI, OpenSHMEM, PGAS, etc.) -%package -n libucs2 +%package -n libucs0 Summary: Infiniband Unicified Communication Services Group: System/Libraries -%description -n libucs2 +%description -n libucs0 This framework provides basic infrastructure for component based programming, memory management, and useful system utilities. %package -n libucs-devel Summary: Development files for Unified Communication Services (UC-S) Group: Development/Libraries/C and C++ -Requires: libucs2 = %version +Requires: libucs0 = %version %description -n libucs-devel This framework provides basic infrastructure for component based programming, memory management, and useful system utilities. -%package -n libuct2 +%package -n libuct0 Summary: Infiniband Unified Communication Transport Group: System/Libraries -%description -n libuct2 +%description -n libuct0 Low-level API that expose basic network operations supported by underlying hardware. %package -n libuct-devel Summary: Development files for Unified Communication Transport (UC-T) Group: Development/Libraries/C and C++ -Requires: libuct2 = %version +Requires: libuct0 = %version %description -n libuct-devel Low-level API that expose basic network operations supported by @@ -126,18 +129,26 @@ %prep %setup -qn ucx-%version +%patch0 %build autoreconf -fi -%configure --disable-static -make %{?_smp_mflags} - -%post -n libucp2 -p /sbin/ldconfig -%postun -n libucp2 -p /sbin/ldconfig -%post -n libucs2 -p /sbin/ldconfig -%postun -n libucs2 -p /sbin/ldconfig -%post -n libuct2 -p /sbin/ldconfig -%postun -n libuct2 -p /sbin/ldconfig +export UCX_CFLAGS="%optflags -Wno-error" +%ifarch x86_64 +export UCX_CFLAGS="$UCX_CFLAGS -mno-avx" +%endif +%ifarch %ix86 +export UCX_CFLAGS="$UCX_CFLAGS -mno-sse -mno-sse2" +%endif +%configure --disable-static --without-avx +make %{?_smp_mflags} V=1 + +%post -n libucp0 -p /sbin/ldconfig +%postun -n libucp0 -p /sbin/ldconfig +%post -n libucs0 -p /sbin/ldconfig +%postun -n libucs0 -p /sbin/ldconfig +%post -n libuct0 -p /sbin/ldconfig +%postun -n libuct0 -p /sbin/ldconfig %post -n libucm0 -p /sbin/ldconfig %postun -n libucm0 -p /sbin/ldconfig @@ -149,6 +160,7 @@ %defattr(-,root,root) %_bindir/ucx_* %_datadir/ucx/ +%_libdir/pkgconfig/ucx.pc %doc LICENSE %files -n libucm0 @@ -160,7 +172,7 @@ %_includedir/ucm/ %_libdir/libucm.so -%files -n libucp2 +%files -n libucp0 %defattr(-,root,root) %_libdir/libucp.so.* @@ -169,7 +181,7 @@ %_includedir/ucp/ %_libdir/libucp.so -%files -n libucs2 +%files -n libucs0 %defattr(-,root,root) %_libdir/libucs.so.* @@ -178,7 +190,7 @@ %_includedir/ucs/ %_libdir/libucs.so -%files -n libuct2 +%files -n libuct0 %defattr(-,root,root) %_libdir/libuct.so.* ++++++ _service ++++++ --- /var/tmp/diff_new_pack.POmyGf/_old 2017-07-12 19:33:56.409853716 +0200 +++ /var/tmp/diff_new_pack.POmyGf/_new 2017-07-12 19:33:56.413853151 +0200 @@ -1,14 +1,14 @@ <services> - <service name="tar_scm" mode="localonly"> + <service name="tar_scm" mode="disabled"> <param name="scm">git</param> <param name="url">git://github.com/openucx/ucx</param> - <param name="revision">6cb0d7189bd53534575a992a2bdb27dd1cb66e22</param> - <param name="parent-tag">20bf38e8c57df29815c512aa19fb194cf0527f3d</param> - <param name="versionformat">0~git@TAG_OFFSET@</param> + <param name="revision">master</param> + <param name="parent-tag">9f8e93fc392a456cc86a60b55f02ef3086a6c616</param> + <param name="versionformat">1.3+git@TAG_OFFSET@</param> </service> - <service name="recompress" mode="localonly"> + <service name="recompress" mode="disabled"> <param name="file">*.tar</param> <param name="compression">xz</param> </service> - <service name="set_version" mode="localonly"/> + <service name="set_version" mode="disabled"/> </services> ++++++ openucx-s390x-support.patch ++++++ diff --git src/ucs/Makefile.am src/ucs/Makefile.am index ba869dbf..c588cd9d 100644 --- src/ucs/Makefile.am +++ src/ucs/Makefile.am @@ -25,6 +25,8 @@ nobase_dist_libucs_la_HEADERS = \ arch/generic/cpu.h \ arch/ppc64/bitops.h \ arch/ppc64/cpu.h \ + arch/s390x/bitops.h \ + arch/s390x/cpu.h \ arch/x86_64/atomic.h \ arch/x86_64/bitops.h \ arch/x86_64/cpu.h \ diff --git src/ucs/arch/atomic.h src/ucs/arch/atomic.h index 7649971b..7bb2bc36 100644 --- src/ucs/arch/atomic.h +++ src/ucs/arch/atomic.h @@ -15,6 +15,8 @@ # include "generic/atomic.h" #elif defined(__aarch64__) # include "generic/atomic.h" +#elif defined(__s390x__) +# include "generic/atomic.h" #else # error "Unsupported architecture" #endif diff --git src/ucs/arch/bitops.h src/ucs/arch/bitops.h index f4dd3ab4..de53bde0 100644 --- src/ucs/arch/bitops.h +++ src/ucs/arch/bitops.h @@ -14,6 +14,8 @@ # include "ppc64/bitops.h" #elif defined(__aarch64__) # include "aarch64/bitops.h" +#elif defined(__s390x__) +# include "s390x/bitops.h" #else # error "Unsupported architecture" #endif diff --git src/ucs/arch/cpu.h src/ucs/arch/cpu.h index d5127b3d..817ac0d2 100644 --- src/ucs/arch/cpu.h +++ src/ucs/arch/cpu.h @@ -52,6 +52,8 @@ typedef enum ucs_cpu_flag { # include "ppc64/cpu.h" #elif defined(__aarch64__) # include "aarch64/cpu.h" +#elif defined(__s390x__) +# include "s390x/cpu.h" #else # error "Unsupported architecture" #endif diff --git src/ucs/arch/s390x/bitops.h src/ucs/arch/s390x/bitops.h new file mode 100644 index 00000000..39ad1251 --- /dev/null +++ src/ucs/arch/s390x/bitops.h @@ -0,0 +1,32 @@ +/** +* Copyright (C) Mellanox Technologies Ltd. 2001-2015. ALL RIGHTS RESERVED. +* +* See file LICENSE for terms. +*/ + +#ifndef UCS_S390X_BITOPS_H_ +#define UCS_S390X_BITOPS_H_ + +#include <stdint.h> + + +static inline unsigned __ucs_ilog2_u32(uint32_t n) +{ + if (!n) + return 0; + return 31 - __builtin_clz(n); +} + +static inline unsigned __ucs_ilog2_u64(uint64_t n) +{ + if (!n) + return 0; + return 63 - __builtin_clz(n); +} + +static inline unsigned ucs_ffs64(uint64_t n) +{ + return __ucs_ilog2_u64(n & -n); +} + +#endif diff --git src/ucs/arch/s390x/cpu.h src/ucs/arch/s390x/cpu.h new file mode 100644 index 00000000..f5131ea3 --- /dev/null +++ src/ucs/arch/s390x/cpu.h @@ -0,0 +1,51 @@ +/** +* Copyright (C) Mellanox Technologies Ltd. 2001-2013. ALL RIGHTS RESERVED. +* Copyright (C) ARM Ltd. 2016-2017. ALL RIGHTS RESERVED. +* +* See file LICENSE for terms. +*/ + + +#ifndef UCS_S390X_CPU_H_ +#define UCS_S390X_CPU_H_ + +#include <ucs/sys/compiler.h> +#include <ucs/arch/generic/cpu.h> +#include <stdint.h> + + +#define UCS_ARCH_CACHE_LINE_SIZE 256 + +/* Assume the worst - weak memory ordering */ +#define ucs_memory_bus_fence() asm volatile (""::: "memory") +#define ucs_memory_bus_store_fence() ucs_memory_bus_fence() +#define ucs_memory_bus_load_fence() ucs_memory_bus_fence() +#define ucs_memory_cpu_fence() ucs_memory_bus_fence() +#define ucs_memory_cpu_store_fence() ucs_memory_bus_fence() +#define ucs_memory_cpu_load_fence() ucs_memory_bus_fence() + + +static inline uint64_t ucs_arch_read_hres_clock() +{ + unsigned long clk; + asm volatile("stck %0" : "=Q" (clk) : : "cc"); + return clk >> 2; +} +#define ucs_arch_get_clocks_per_sec ucs_arch_generic_get_clocks_per_sec + + +static inline ucs_cpu_model_t ucs_arch_get_cpu_model() +{ + return UCS_CPU_MODEL_UNKNOWN; +} + +static inline int ucs_arch_get_cpu_flag() +{ + return UCS_CPU_FLAG_UNKNOWN; +} + +double ucs_arch_get_clocks_per_sec(); + +#define ucs_arch_wait_mem ucs_arch_generic_wait_mem + +#endif