ucx/ucx.spec

461 lines
13 KiB
RPMSpec
Raw Normal View History

2018-01-15 09:24:20 +00:00
%{!?configure_options: %global configure_options %{nil}}
2019-08-20 11:15:17 +00:00
%bcond_without cma
%bcond_with cuda
%bcond_with gdrcopy
%bcond_without ib
%bcond_with knem
%bcond_without rdmacm
%bcond_with rocm
%bcond_with ugni
%bcond_with xpmem
%bcond_with vfs
2018-01-15 09:24:20 +00:00
Name: ucx
Version: 1.17.0
Release: 2%{?dist}
2018-08-23 11:36:10 +00:00
Summary: UCX is a communication library implementing high-performance messaging
2018-01-15 09:24:20 +00:00
2023-02-19 05:15:24 +00:00
License: BSD-3-Clause AND MIT AND CC-PDDC AND (BSD-3-Clause OR Apache-2.0)
# CC-PDDC
# src/ucm/ptmalloc286/malloc-2.8.6.h
# src/ucm/ptmalloc286/malloc.c
# MIT
# src/ucs/datastruct/khash.h
# BSD-3-Clause or Apache-2.0
# src/ucs/arch/aarch64/memcpy_thunderx2.S
# BSD-3-Clause
# All other files
2018-01-15 09:24:20 +00:00
URL: http://www.openucx.org
2023-02-18 18:54:25 +00:00
Source: https://github.com/openucx/%{name}/releases/download/v%{version}/ucx-%{version}.tar.gz
# BUILD/CONFIG: Keep CFLAGS and CXXFLAGS separate
# Fixes build for https://fedoraproject.org/wiki/Changes/PortingToModernC
Patch0: 9558.patch
Patch1: UCS-TIME-Fix-undeclared-INFINITY-error-in-ucs_time_u.patch
2021-04-26 17:50:11 +00:00
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
Prefix: %{_prefix}
2018-01-15 09:24:20 +00:00
# UCX currently supports only the following architectures
ExclusiveArch: aarch64 ppc64le x86_64
2020-07-20 06:46:36 +00:00
%if %{defined extra_deps}
Requires: %{?extra_deps}
%endif
2020-04-23 07:21:35 +00:00
BuildRequires: automake autoconf libtool gcc-c++
%if "%{_vendor}" == "suse"
BuildRequires: libnuma-devel
%else
BuildRequires: numactl-devel
%endif
2019-08-20 11:15:17 +00:00
%if %{with cma}
BuildRequires: glibc-devel >= 2.15
%endif
%if %{with gdrcopy}
BuildRequires: gdrcopy
%endif
%if %{with ib}
BuildRequires: libibverbs-devel
%endif
%if %{with knem}
BuildRequires: knem
%endif
%if %{with rdmacm}
BuildRequires: librdmacm-devel
%endif
%if %{with rocm}
BuildRequires: hsa-rocr-dev
%endif
%if %{with xpmem}
BuildRequires: xpmem-devel
%endif
%if %{with vfs}
BuildRequires: fuse3-devel
%endif
2018-01-15 09:24:20 +00:00
%description
UCX is an optimized communication framework for high-performance distributed
applications. UCX utilizes high-speed networks, such as RDMA (InfiniBand, RoCE,
etc), Cray Gemini or Aries, for inter-node communication. If no such network is
available, TCP is used instead. UCX supports efficient transfer of data in
either main memory (RAM) or GPU memory (through CUDA and ROCm libraries). In
addition, UCX provides efficient intra-node communication, by leveraging the
following shared memory mechanisms: posix, sysv, cma, knem, and xpmem.
The acronym UCX stands for "Unified Communication X".
2021-04-26 17:50:11 +00:00
2020-04-23 07:21:35 +00:00
%if "%{_vendor}" == "suse"
%debug_package
%endif
2018-01-15 09:24:20 +00:00
%package devel
Requires: %{name}%{?_isa} = %{version}-%{release}
2019-08-20 11:15:17 +00:00
Summary: Header files required for developing with UCX
2018-01-15 09:24:20 +00:00
%description devel
Provides header files and examples for developing with UCX.
%prep
%setup -q
%patch -P0 -p1
%patch -P1 -p1
autoreconf -fiv
2018-01-15 09:24:20 +00:00
%build
2023-06-22 08:38:44 +00:00
2019-08-20 11:15:17 +00:00
%define _with_arg() %{expand:%%{?with_%{1}:--with-%{2}}%%{!?with_%{1}:--without-%{2}}}
%define _enable_arg() %{expand:%%{?with_%{1}:--enable-%{2}}%%{!?with_%{1}:--disable-%{2}}}
2018-01-15 09:24:20 +00:00
%configure --disable-optimizations \
--disable-logging \
--disable-debug \
--disable-assertions \
--disable-params-check \
2020-07-20 06:46:36 +00:00
--without-java \
2019-08-20 11:15:17 +00:00
%_enable_arg cma cma \
%_with_arg cuda cuda \
%_with_arg gdrcopy gdrcopy \
%_with_arg ib verbs \
%_with_arg knem knem \
%_with_arg rdmacm rdmacm \
%_with_arg rocm rocm \
%_with_arg xpmem xpmem \
%_with_arg vfs fuse3 \
2019-08-20 11:15:17 +00:00
%_with_arg ugni ugni \
2018-01-15 09:24:20 +00:00
%{?configure_options}
2018-08-23 11:36:10 +00:00
make %{?_smp_mflags} V=1
2018-01-15 09:24:20 +00:00
%install
2018-08-23 11:36:10 +00:00
make DESTDIR=%{buildroot} install
2018-01-15 09:24:20 +00:00
rm -f %{buildroot}%{_libdir}/*.la
2019-08-20 11:15:17 +00:00
rm -f %{buildroot}%{_libdir}/*.a
rm -f %{buildroot}%{_libdir}/ucx/*.la
rm -f %{buildroot}%{_libdir}/ucx/lib*.so
rm -f %{buildroot}%{_libdir}/ucx/lib*.a
2018-01-15 09:24:20 +00:00
%files
%{_libdir}/lib*.so.*
%{_bindir}/ucx_info
%{_bindir}/ucx_perftest
%{_bindir}/ucx_perftest_daemon
%{_bindir}/ucx_read_profile
%{_bindir}/io_demo
2018-08-23 11:36:10 +00:00
%{_datadir}/ucx
%exclude %{_datadir}/ucx/examples
%doc README AUTHORS NEWS
%{!?_licensedir:%global license %%doc}
2018-01-15 09:24:20 +00:00
%license LICENSE
%{_sysconfdir}/ucx/ucx.conf
2018-01-15 09:24:20 +00:00
%files devel
%{_includedir}/uc*
%{_libdir}/lib*.so
2022-08-03 07:33:28 +00:00
%{_libdir}/pkgconfig/ucx*.pc
2023-02-19 05:15:24 +00:00
%dir %{_libdir}/cmake/ucx
%{_libdir}/cmake/ucx/*.cmake
2018-08-23 11:36:10 +00:00
%{_datadir}/ucx/examples
2018-01-15 09:24:20 +00:00
2019-08-20 11:15:17 +00:00
%if %{with cma}
%package cma
Requires: %{name}%{?_isa} = %{version}-%{release}
Summary: UCX CMA support
2019-08-20 11:15:17 +00:00
%description cma
Provides CMA (Linux cross-memory-attach) transport for UCX. It utilizes the
system calls process_vm_readv/writev() for one-shot memory copy from another
process.
%files cma
2023-02-19 05:15:24 +00:00
%dir %{_libdir}/ucx
2019-08-20 11:15:17 +00:00
%{_libdir}/ucx/libuct_cma.so.*
%endif
%if %{with cuda}
%package cuda
Requires: %{name}%{?_isa} = %{version}-%{release}
Summary: UCX CUDA support
%description cuda
Provide CUDA (NVIDIA GPU) support for UCX. Enables passing GPU memory pointers
to UCX communication routines, and transports taking advantage of GPU-Direct
technology for direct data transfer between GPU and RDMA devices.
%files cuda
2023-02-19 05:15:24 +00:00
%dir %{_libdir}/ucx
2019-08-20 11:15:17 +00:00
%{_libdir}/ucx/libucx_perftest_cuda.so.*
%{_libdir}/ucx/libucm_cuda.so.*
%{_libdir}/ucx/libuct_cuda.so.*
%endif
%if %{with gdrcopy}
%package gdrcopy
Requires: %{name}-cuda%{?_isa} = %{version}-%{release}
Summary: UCX GDRCopy support
%description gdrcopy
Provide GDRCopy support for UCX. GDRCopy is a low-latency GPU memory copy
library, built on top of the NVIDIA GPUDirect RDMA technology.
%files gdrcopy
2023-02-19 05:15:24 +00:00
%dir %{_libdir}/ucx
2019-08-20 11:15:17 +00:00
%{_libdir}/ucx/libuct_cuda_gdrcopy.so.*
%endif
%if %{with ib}
%package ib
Requires: %{name}%{?_isa} = %{version}-%{release}
Summary: UCX RDMA support
%description ib
Provides support for IBTA-compliant transports for UCX. This includes RoCE,
InfiniBand, OmniPath, and any other transport supported by IB Verbs API.
Typically these transports provide RDMA support, which enables a fast and
hardware-offloaded data transfer.
%files ib
2023-02-19 05:15:24 +00:00
%dir %{_libdir}/ucx
2019-08-20 11:15:17 +00:00
%{_libdir}/ucx/libuct_ib.so.*
%endif
%if %{with knem}
%package knem
Requires: %{name}%{?_isa} = %{version}-%{release}
Summary: UCX KNEM transport support
%description knem
Provides KNEM (fast inter-process copy) transport for UCX. KNEM is a Linux
kernel module that enables high-performance intra-node MPI communication
for large messages.
%files knem
2023-02-19 05:15:24 +00:00
%dir %{_libdir}/ucx
2019-08-20 11:15:17 +00:00
%{_libdir}/ucx/libuct_knem.so.*
%endif
%if %{with rdmacm}
%package rdmacm
Requires: %{name}-ib%{?_isa} = %{version}-%{release}
2023-02-18 18:41:23 +00:00
Requires: ucx-ib = %{version}-%{release}
2019-08-20 11:15:17 +00:00
Summary: UCX RDMA connection manager support
%description rdmacm
Provides RDMA connection-manager support to UCX, which enables client/server
based connection establishment for RDMA-capable transports.
%files rdmacm
2023-02-19 05:15:24 +00:00
%dir %{_libdir}/ucx
2019-08-20 11:15:17 +00:00
%{_libdir}/ucx/libuct_rdmacm.so.*
%endif
%if %{with rocm}
%package rocm
Requires: %{name}%{?_isa} = %{version}-%{release}
Summary: UCX ROCm GPU support
%description rocm
Provides Radeon Open Compute (ROCm) Runtime support for UCX.
%files rocm
2023-02-19 05:15:24 +00:00
%dir %{_libdir}/ucx
2019-08-20 11:15:17 +00:00
%{_libdir}/ucx/libuct_rocm.so.*
%{_libdir}/ucx/libucm_rocm.so.*
%if %{with gdrcopy}
%package rocmgdr
Requires: %{name}-rocm%{?_isa} = %{version}-%{release}
Summary: UCX GDRCopy support for ROCM
%description rocmgdr
2023-02-19 05:15:24 +00:00
Provide GDRCopy support for UCX ROCM. GDRCopy is a low-latency GPU
memory copy library, built on top of the NVIDIA GPUDirect RDMA
technology.
2019-08-20 11:15:17 +00:00
%files rocmgdr
2023-02-19 05:15:24 +00:00
%dir %{_libdir}/ucx
2019-08-20 11:15:17 +00:00
%{_libdir}/ucx/libuct_rocm_gdr.so.*
%endif
%endif
%if %{with ugni}
%package ugni
Requires: %{name}%{?_isa} = %{version}-%{release}
Summary: UCX Gemini/Aries transport support.
%description ugni
Provides Gemini/Aries transport for UCX.
%files ugni
2023-02-19 05:15:24 +00:00
%dir %{_libdir}/ucx
2019-08-20 11:15:17 +00:00
%{_libdir}/ucx/libuct_ugni.so.*
%endif
%if %{with xpmem}
%package xpmem
Requires: %{name}%{?_isa} = %{version}-%{release}
Summary: UCX XPMEM transport support.
%description xpmem
Provides XPMEM transport for UCX. XPMEM is a Linux kernel module that enables a
process to map the memory of another process into its virtual address space.
%files xpmem
2023-02-19 05:15:24 +00:00
%dir %{_libdir}/ucx
2019-08-20 11:15:17 +00:00
%{_libdir}/ucx/libuct_xpmem.so.*
%endif
%if %{with vfs}
%package vfs
Requires: %{name}%{?_isa} = %{version}-%{release}
Summary: UCX Virtual Filesystem support.
%description vfs
2023-02-19 05:15:24 +00:00
Provides a virtual filesystem over FUSE which allows real-time
monitoring of UCX library internals, protocol objects, transports
status, and more.
%files vfs
2023-02-19 05:15:24 +00:00
%dir %{_libdir}/ucx
%{_libdir}/ucx/libucs_fuse.so.*
%{_bindir}/ucx_vfs
%endif
2020-04-23 07:21:35 +00:00
%changelog
* Fri Nov 22 2024 Kamal Heib <kheib@redhat.com> - 1.17.0-2
- Fix Unhandled patch file issue
Resolves: RHEL-24811
* Wed Nov 13 2024 Kamal Heib <kheib@redhat.com> - 1.17.0-1
- Update to upstream release 1.17.0
Resolves: RHEL-24811
* Tue Oct 29 2024 Troy Dawson <tdawson@redhat.com> - 1.15.0-4
- Bump release for October 2024 mass rebuild:
Resolves: RHEL-64018
* Mon Jun 24 2024 Troy Dawson <tdawson@redhat.com> - 1.15.0-3
- Bump release for June 2024 mass rebuild
* Sat Jan 27 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.15.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
2023-12-24 11:13:03 +00:00
* Sun Dec 24 2023 Benson Muite <benson_muite@emailplus.org> - 1.15.0-1
- Upgrade to new release
* Sun Dec 24 2023 Benson Muite <benson_muite@emailplus.org> - 1.14.1-5
2023-12-24 09:52:00 +00:00
- Add patch to separate C and C++ flags from yselkowitz
* Sat Jul 22 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.14.1-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
2023-06-22 08:38:44 +00:00
* Thu Jun 22 2023 Benson Muite <benson_muite@emailplus.org> - 1.14.1-3
- Apply fix to enable building with GCC13
* Fri Jun 02 2023 Benson Muite <benson_muite@emailplus.org> - 1.14.1-2
- Remove changes in patches that have been applied
* Fri Jun 02 2023 Kamal Heib <kheib@redhat.com> - 1.14.1-1
- Update to upstream release 1.14.1
2023-02-19 05:15:24 +00:00
* Sun Feb 19 2023 Benson Muite <benson_muite@emailplus.org> - 1.13.1-4
- List additional licenses used
- Remove unneeded ldconfig calls
2023-02-18 18:41:23 +00:00
* Sat Feb 18 2023 Benson Muite <benson_muite@emailplus.org> - 1.13.1-3
- Fix type declaration error
- Fix to enable use of GCC 13
- Use SPDX license identifier
- Fix build requires #RBZ2166925
* Sat Jan 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
2023-02-18 18:41:23 +00:00
* Sat Dec 24 2022 Benson Muite <benson_muite@emailplus.org> - 1.13.1-1
2022-12-24 15:24:46 +00:00
- Update to upstream release 1.13.0
2022-08-03 07:33:28 +00:00
* Wed Aug 03 2022 Michal Schmidt <mschmidt@redhat.com> - 1.13.0-3
- Update to upstream release 1.13.0
- Drop autogen.sh call. Upstream tarball does not have it anymore.
* Sat Jul 23 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.12.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Sat Jan 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.12.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Mon Dec 13 2021 Honggang Li <honli@redhat.com> - 1.12.0-1
- Bump version to 1.12.0
* Mon Nov 01 2021 Honggang Li <honli@redhat.com> - 1.11.2-1
- Bump version to 1.11.2
2021-08-09 07:14:45 +00:00
* Mon Aug 09 2021 Yurii Shestakov <yuriis@nvidia.com> 1.11.0-1
- Bump version to 1.11.0
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.10.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
2021-05-27 06:54:08 +00:00
* Thu May 27 2021 Yurii Shestakov <yuriis@nvidia.com> 1.10.1-2
- Bump version to 1.10.1
2021-05-27 06:51:57 +00:00
2021-04-26 17:50:11 +00:00
* Mon Apr 26 2021 Yurii Shestakov <yuriis@nvidia.com> 1.10.1-rc1
- Bump version to 1.10.1-rc1
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.9.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
2021-04-26 17:50:11 +00:00
* Wed Nov 11 2020 Yossi Itigin <yosefe@mellanox.com> 1.10.0-1
- Make the RPM relocatable
2020-11-03 03:04:34 +00:00
* Mon Nov 2 2020 Orion Poplawski <orion@nwra.com> - 1.9.0-1
- Update to 1.9.0
* Fri Oct 30 2020 Jeff Law <law@redhat.com> 1.8.1-5
- Adjust workaround for gcc-11 diagnostic to narrow its scope
* Thu Oct 29 2020 Jeff Law <law@redhat.com> 1.8.1-4
- Disable -Warray-bounds diagnostics for gcc-11
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.8.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Mon Jul 20 2020 Jeff Law <law@redhat.com> 1.8.1-2
- Fix broken configure files compromised by LTO
2020-07-20 06:46:36 +00:00
* Wed Jul 1 2020 Yossi Itigin <yosefe@mellanox.com> 1.8.1-1
- Bump version to 1.8.1
2023-02-18 18:41:23 +00:00
2020-04-23 07:21:35 +00:00
* Sun Sep 22 2019 Yossi Itigin <yosefe@mellanox.com> 1.8.0-1
- Bump version to 1.8.0
2023-02-18 18:41:23 +00:00
2020-04-23 07:21:35 +00:00
* Sun Mar 24 2019 Yossi Itigin <yosefe@mellanox.com> 1.7.0-1
- Bump version to 1.7.0
2023-02-18 18:41:23 +00:00
2019-08-20 11:15:17 +00:00
* Thu Jan 24 2019 Yossi Itigin <yosefe@mellanox.com> 1.6.0-1
- Add cma, knem, and xpmem sub-packages
2023-02-18 18:41:23 +00:00
2019-08-20 11:15:17 +00:00
* Tue Nov 20 2018 Yossi Itigin <yosefe@mellanox.com> 1.6.0-1
- Bump version to 1.6.0
2023-02-18 18:41:23 +00:00
* Tue Nov 6 2018 Andrey Maslennikov <andreyma@mellanox.com> 1.5.0-1
- Bump version to 1.5.0
- See NEWS for details
2023-02-18 18:41:23 +00:00
* Tue Oct 30 2018 Andrey Maslennikov <andreyma@mellanox.com> 1.4.0-1
- See NEWS for details
2023-02-18 18:41:23 +00:00
* Mon Aug 20 2018 Andrey Maslennikov <andreyma@mellanox.com> 1.3.1-1
- See NEWS for details
2023-02-18 18:41:23 +00:00
2018-08-23 11:36:10 +00:00
* Thu Aug 16 2018 Andrey Maslennikov <andreyma@mellanox.com> 1.3.0-1
- Explicitly set gcc-c++ as requirements
2023-02-18 18:41:23 +00:00
2018-08-23 11:36:10 +00:00
* Wed Mar 7 2018 Andrey Maslennikov <andreyma@mellanox.com> 1.3.0-1
- See NEWS for details
2023-02-18 18:41:23 +00:00
2018-01-15 09:24:20 +00:00
* Mon Aug 21 2017 Andrey Maslennikov <andreyma@mellanox.com> 1.2.1-1
- Spec file now complies with Fedora guidelines
2023-02-18 18:41:23 +00:00
2018-01-15 09:24:20 +00:00
* Mon Jul 3 2017 Andrey Maslennikov <andreyma@mellanox.com> 1.2.0-1
- Fedora package created