Blame SPECS/ucx.spec

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