Blame SPECS/ucx.spec

5474aa
%{!?configure_options: %global configure_options %{nil}}
5474aa
%bcond_without cma
5474aa
%bcond_with    cuda
5474aa
%bcond_with    gdrcopy
5474aa
%bcond_without ib
5474aa
%if 0%{?fedora} >= 30 || 0%{?rhel} >= 7
5474aa
%bcond_with ib_cm
5474aa
%else
5474aa
%bcond_without ib_cm
5474aa
%endif
5474aa
%bcond_with    knem
5474aa
%bcond_without rdmacm
5474aa
%bcond_with    rocm
5474aa
%bcond_with    ugni
5474aa
%bcond_with    xpmem
13e9b4
%bcond_with    vfs
5474aa
5474aa
Name: ucx
13e9b4
Version: 1.11.2
13e9b4
Release: 1%{?dist}
5474aa
Summary: UCX is a communication library implementing high-performance messaging
5474aa
5474aa
License: BSD
5474aa
URL: http://www.openucx.org
13e9b4
Source: https://github.com/openucx/%{name}/releases/download/v1.11.2/ucx-1.11.2.tar.gz
5474aa
5474aa
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
5474aa
Prefix: %{_prefix}
5474aa
5474aa
# UCX currently supports only the following architectures
5474aa
ExclusiveArch: aarch64 ppc64le x86_64
5474aa
5474aa
%if %{defined extra_deps}
5474aa
Requires: %{?extra_deps}
5474aa
%endif
5474aa
5474aa
BuildRequires: automake autoconf libtool gcc-c++
5474aa
%if "%{_vendor}" == "suse"
5474aa
BuildRequires: libnuma-devel
5474aa
%else
5474aa
BuildRequires: numactl-devel
5474aa
%endif
5474aa
%if %{with cma}
5474aa
BuildRequires: glibc-devel >= 2.15
5474aa
%endif
5474aa
%if %{with gdrcopy}
5474aa
BuildRequires: gdrcopy
5474aa
%endif
5474aa
%if %{with ib}
5474aa
BuildRequires: libibverbs-devel
5474aa
%endif
5474aa
%if %{with ib_cm}
5474aa
BuildRequires: libibcm-devel
5474aa
%endif
5474aa
%if %{with knem}
5474aa
BuildRequires: knem
5474aa
%endif
5474aa
%if %{with rdmacm}
5474aa
BuildRequires: librdmacm-devel
5474aa
%endif
5474aa
%if %{with rocm}
5474aa
BuildRequires: hsa-rocr-dev
5474aa
%endif
5474aa
%if %{with xpmem}
5474aa
BuildRequires: xpmem-devel
5474aa
%endif
13e9b4
%if %{with vfs}
13e9b4
BuildRequires: fuse3-devel
13e9b4
%endif
5474aa
5474aa
%description
5474aa
UCX is an optimized communication framework for high-performance distributed
5474aa
applications. UCX utilizes high-speed networks, such as RDMA (InfiniBand, RoCE,
5474aa
etc), Cray Gemini or Aries, for inter-node communication. If no such network is
5474aa
available, TCP is used instead. UCX supports efficient transfer of data in
5474aa
either main memory (RAM) or GPU memory (through CUDA and ROCm libraries). In
5474aa
addition, UCX provides efficient intra-node communication, by leveraging the
5474aa
following shared memory mechanisms: posix, sysv, cma, knem, and xpmem.
5474aa
The acronym UCX stands for "Unified Communication X".
5474aa
13e9b4
This package was built from '' branch, commit ef2bbcf.
5474aa
5474aa
%if "%{_vendor}" == "suse"
5474aa
%debug_package
5474aa
%endif
5474aa
5474aa
%package devel
5474aa
Requires: %{name}%{?_isa} = %{version}-%{release}
5474aa
Summary: Header files required for developing with UCX
5474aa
5474aa
%description devel
5474aa
Provides header files and examples for developing with UCX.
5474aa
5474aa
%prep
5474aa
%setup -q
5474aa
5474aa
%build
5474aa
%define _with_arg()   %{expand:%%{?with_%{1}:--with-%{2}}%%{!?with_%{1}:--without-%{2}}}
5474aa
%define _enable_arg() %{expand:%%{?with_%{1}:--enable-%{2}}%%{!?with_%{1}:--disable-%{2}}}
5474aa
%configure --disable-optimizations \
5474aa
           --disable-logging \
5474aa
           --disable-debug \
5474aa
           --disable-assertions \
5474aa
           --disable-params-check \
5474aa
           --without-java \
5474aa
           %_enable_arg cma cma \
5474aa
           %_with_arg cuda cuda \
5474aa
           %_with_arg gdrcopy gdrcopy \
5474aa
           %_with_arg ib verbs \
5474aa
           %_with_arg ib_cm cm \
5474aa
           %_with_arg knem knem \
5474aa
           %_with_arg rdmacm rdmacm \
5474aa
           %_with_arg rocm rocm \
5474aa
           %_with_arg xpmem xpmem \
13e9b4
           %_with_arg vfs fuse3 \
5474aa
           %_with_arg ugni ugni \
5474aa
           %{?configure_options}
5474aa
make %{?_smp_mflags} V=1
5474aa
5474aa
%install
5474aa
make DESTDIR=%{buildroot} install
5474aa
rm -f %{buildroot}%{_libdir}/*.la
5474aa
rm -f %{buildroot}%{_libdir}/*.a
5474aa
rm -f %{buildroot}%{_libdir}/ucx/*.la
5474aa
rm -f %{buildroot}%{_libdir}/ucx/lib*.so
5474aa
rm -f %{buildroot}%{_libdir}/ucx/lib*.a
5474aa
5474aa
%files
5474aa
%{_libdir}/lib*.so.*
13e9b4
%{_bindir}/ucx_info
13e9b4
%{_bindir}/ucx_perftest
13e9b4
%{_bindir}/ucx_read_profile
5474aa
%{_bindir}/io_demo
5474aa
%{_datadir}/ucx
5474aa
%exclude %{_datadir}/ucx/examples
5474aa
%doc README AUTHORS NEWS
5474aa
%{!?_licensedir:%global license %%doc}
5474aa
%license LICENSE
5474aa
5474aa
%files devel
5474aa
%{_includedir}/uc*
5474aa
%{_libdir}/lib*.so
5474aa
%{_libdir}/pkgconfig/ucx.pc
5474aa
%{_datadir}/ucx/examples
5474aa
5474aa
%post -p /sbin/ldconfig
5474aa
%postun -p /sbin/ldconfig
5474aa
5474aa
%if %{with cma}
5474aa
%package cma
5474aa
Requires: %{name}%{?_isa} = %{version}-%{release}
5474aa
Summary: UCX CMA support
5474aa
5474aa
%description cma
5474aa
Provides CMA (Linux cross-memory-attach) transport for UCX. It utilizes the
5474aa
system calls process_vm_readv/writev() for one-shot memory copy from another
5474aa
process.
5474aa
5474aa
%files cma
5474aa
%{_libdir}/ucx/libuct_cma.so.*
5474aa
%endif
5474aa
5474aa
%if %{with cuda}
5474aa
%package cuda
5474aa
Requires: %{name}%{?_isa} = %{version}-%{release}
5474aa
Summary: UCX CUDA support
5474aa
5474aa
%description cuda
5474aa
Provide CUDA (NVIDIA GPU) support for UCX. Enables passing GPU memory pointers
5474aa
to UCX communication routines, and transports taking advantage of GPU-Direct
5474aa
technology for direct data transfer between GPU and RDMA devices.
5474aa
5474aa
%files cuda
5474aa
%{_libdir}/ucx/libucx_perftest_cuda.so.*
5474aa
%{_libdir}/ucx/libucm_cuda.so.*
5474aa
%{_libdir}/ucx/libuct_cuda.so.*
5474aa
%endif
5474aa
5474aa
%if %{with gdrcopy}
5474aa
%package gdrcopy
5474aa
Requires: %{name}-cuda%{?_isa} = %{version}-%{release}
5474aa
Summary: UCX GDRCopy support
5474aa
5474aa
%description gdrcopy
5474aa
Provide GDRCopy support for UCX. GDRCopy is a low-latency GPU memory copy
5474aa
library, built on top of the NVIDIA GPUDirect RDMA technology.
5474aa
5474aa
%files gdrcopy
5474aa
%{_libdir}/ucx/libuct_cuda_gdrcopy.so.*
5474aa
%endif
5474aa
5474aa
%if %{with ib}
5474aa
%package ib
5474aa
Requires: %{name}%{?_isa} = %{version}-%{release}
5474aa
Summary: UCX RDMA support
5474aa
5474aa
%description ib
5474aa
Provides support for IBTA-compliant transports for UCX. This includes RoCE,
5474aa
InfiniBand, OmniPath, and any other transport supported by IB Verbs API.
5474aa
Typically these transports provide RDMA support, which enables a fast and
5474aa
hardware-offloaded data transfer.
5474aa
5474aa
%files ib
5474aa
%{_libdir}/ucx/libuct_ib.so.*
5474aa
%endif
5474aa
5474aa
%if %{with ib_cm}
5474aa
%package ib-cm
5474aa
Requires: %{name}-ib%{?_isa} = %{version}-%{release}
5474aa
Summary: UCX InfiniBand connection-manager support
5474aa
5474aa
%description ib-cm
5474aa
Provides Infiniband Connection Manager (also known as ibcm) support for UCX.
5474aa
5474aa
%files ib-cm
5474aa
%{_libdir}/ucx/libuct_ib_cm.so.*
5474aa
%endif
5474aa
5474aa
%if %{with knem}
5474aa
%package knem
5474aa
Requires: %{name}%{?_isa} = %{version}-%{release}
5474aa
Summary: UCX KNEM transport support
5474aa
5474aa
%description knem
5474aa
Provides KNEM (fast inter-process copy) transport for UCX. KNEM is a Linux
5474aa
kernel module that enables high-performance intra-node MPI communication
5474aa
for large messages.
5474aa
5474aa
%files knem
5474aa
%{_libdir}/ucx/libuct_knem.so.*
5474aa
%endif
5474aa
5474aa
%if %{with rdmacm}
5474aa
%package rdmacm
5474aa
Requires: %{name}%{?_isa} = %{version}-%{release}
5474aa
Summary: UCX RDMA connection manager support
5474aa
5474aa
%description rdmacm
5474aa
Provides RDMA connection-manager support to UCX, which enables client/server
5474aa
based connection establishment for RDMA-capable transports.
5474aa
5474aa
%files rdmacm
5474aa
%{_libdir}/ucx/libuct_rdmacm.so.*
5474aa
%endif
5474aa
5474aa
%if %{with rocm}
5474aa
%package rocm
5474aa
Requires: %{name}%{?_isa} = %{version}-%{release}
5474aa
Summary: UCX ROCm GPU support
5474aa
5474aa
%description rocm
5474aa
Provides Radeon Open Compute (ROCm) Runtime support for UCX.
5474aa
5474aa
%files rocm
5474aa
%{_libdir}/ucx/libuct_rocm.so.*
5474aa
%{_libdir}/ucx/libucm_rocm.so.*
5474aa
5474aa
%if %{with gdrcopy}
5474aa
%package rocmgdr
5474aa
Requires: %{name}-rocm%{?_isa} = %{version}-%{release}
5474aa
Summary: UCX GDRCopy support for ROCM
5474aa
5474aa
%description rocmgdr
5474aa
Provide GDRCopy support for UCX ROCM. GDRCopy is a low-latency GPU memory copy
5474aa
library, built on top of the NVIDIA GPUDirect RDMA technology.
5474aa
5474aa
%files rocmgdr
5474aa
%{_libdir}/ucx/libuct_rocm_gdr.so.*
5474aa
%endif
5474aa
%endif
5474aa
5474aa
%if %{with ugni}
5474aa
%package ugni
5474aa
Requires: %{name}%{?_isa} = %{version}-%{release}
5474aa
Summary: UCX Gemini/Aries transport support.
5474aa
5474aa
%description ugni
5474aa
Provides Gemini/Aries transport for UCX.
5474aa
5474aa
%files ugni
5474aa
%{_libdir}/ucx/libuct_ugni.so.*
5474aa
%endif
5474aa
5474aa
%if %{with xpmem}
5474aa
%package xpmem
5474aa
Requires: %{name}%{?_isa} = %{version}-%{release}
5474aa
Summary: UCX XPMEM transport support.
5474aa
5474aa
%description xpmem
5474aa
Provides XPMEM transport for UCX. XPMEM is a Linux kernel module that enables a
5474aa
process to map the memory of another process into its virtual address space.
5474aa
5474aa
%files xpmem
5474aa
%{_libdir}/ucx/libuct_xpmem.so.*
5474aa
%endif
5474aa
13e9b4
%if %{with vfs}
13e9b4
%package vfs
13e9b4
Requires: %{name}%{?_isa} = %{version}-%{release}
13e9b4
Summary: UCX Virtual Filesystem support.
13e9b4
13e9b4
%description vfs
13e9b4
Provides a virtual filesystem over FUSE which allows real-time monitoring of UCX
13e9b4
library internals, protocol objects, transports status, and more.
13e9b4
13e9b4
%files vfs
13e9b4
%{_libdir}/ucx/libucs_fuse.so.*
13e9b4
%{_bindir}/ucx_vfs
13e9b4
%endif
5474aa
5474aa
%changelog
13e9b4
* Mon Nov 01 2021 Honggang Li <honli@redhat.com> - 1.11.2-1
13e9b4
- Bump version to 1.11.2
13e9b4
- Related: rhbz#2015402
13e9b4
5474aa
* Tue Aug 10 2021 Mohan Boddu <mboddu@redhat.com> - 1.10.1-3
5474aa
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
5474aa
  Related: rhbz#1991688
5474aa
5474aa
* Mon Jul 12 2021 Honggang Li <honli@redhat.com> - 1.10.1-2
5474aa
- Bump version to 1.10.1
5474aa
- Related: rhbz#1858571
5474aa
5474aa
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 1.9.0-2
5474aa
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
5474aa
5474aa
* Mon Nov  2 2020 Orion Poplawski <orion@nwra.com> - 1.9.0-1
5474aa
- Update to 1.9.0
5474aa
5474aa
* Fri Oct 30 2020 Jeff Law <law@redhat.com> 1.8.1-5
5474aa
- Adjust workaround for gcc-11 diagnostic to narrow its scope
5474aa
5474aa
* Thu Oct 29 2020 Jeff Law <law@redhat.com> 1.8.1-4
5474aa
- Disable -Warray-bounds diagnostics for gcc-11
5474aa
5474aa
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.8.1-3
5474aa
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
5474aa
5474aa
* Mon Jul 20 2020 Jeff Law <law@redhat.com> 1.8.1-2
5474aa
- Fix broken configure files compromised by LTO
5474aa
5474aa
* Wed Jul 1 2020 Yossi Itigin <yosefe@mellanox.com> 1.8.1-1
5474aa
- Bump version to 1.8.1
5474aa
* Sun Sep 22 2019 Yossi Itigin <yosefe@mellanox.com> 1.8.0-1
5474aa
- Bump version to 1.8.0
5474aa
* Sun Mar 24 2019 Yossi Itigin <yosefe@mellanox.com> 1.7.0-1
5474aa
- Bump version to 1.7.0
5474aa
* Thu Jan 24 2019 Yossi Itigin <yosefe@mellanox.com> 1.6.0-1
5474aa
- Add cma, knem, and xpmem sub-packages
5474aa
* Tue Nov 20 2018 Yossi Itigin <yosefe@mellanox.com> 1.6.0-1
5474aa
- Bump version to 1.6.0
5474aa
* Tue Nov 6 2018 Andrey Maslennikov <andreyma@mellanox.com> 1.5.0-1
5474aa
- Bump version to 1.5.0
5474aa
- See NEWS for details
5474aa
* Tue Oct 30 2018 Andrey Maslennikov <andreyma@mellanox.com> 1.4.0-1
5474aa
- See NEWS for details
5474aa
* Mon Aug 20 2018 Andrey Maslennikov <andreyma@mellanox.com> 1.3.1-1
5474aa
- See NEWS for details
5474aa
* Thu Aug 16 2018 Andrey Maslennikov <andreyma@mellanox.com> 1.3.0-1
5474aa
- Explicitly set gcc-c++ as requirements
5474aa
* Wed Mar 7 2018 Andrey Maslennikov <andreyma@mellanox.com> 1.3.0-1
5474aa
- See NEWS for details
5474aa
* Mon Aug 21 2017 Andrey Maslennikov <andreyma@mellanox.com> 1.2.1-1
5474aa
- Spec file now complies with Fedora guidelines
5474aa
* Mon Jul 3 2017 Andrey Maslennikov <andreyma@mellanox.com> 1.2.0-1
5474aa
- Fedora package created