diff --git a/.gitignore b/.gitignore index b421779..73b4ea5 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,8 @@ /ucx-1.13.1-1.fc36.src.rpm /ucx-1.13.1.tar.gz /ucx-1.14.1.tar.gz +/ucx-1.15.0.tar.gz +/ucx-1.16.0.tar.gz +/ucx-1.17.0.tar.gz +/ucx-1.18.1.tar.gz +/ucx-1.19.0.tar.gz diff --git a/.packit.yaml b/.packit.yaml new file mode 100644 index 0000000..88d4945 --- /dev/null +++ b/.packit.yaml @@ -0,0 +1,19 @@ +# See the documentation for more information: +# https://packit.dev/docs/configuration/ + +jobs: + +- job: pull_from_upstream + trigger: release + dist_git_branches: + - fedora-rawhide + +- job: koji_build + trigger: commit + dist_git_branches: + - fedora-rawhide + +- job: bodhi_update + trigger: commit + dist_git_branches: + - fedora-branched diff --git a/Avoid-build-failure.patch b/Avoid-build-failure.patch new file mode 100644 index 0000000..cb990b5 --- /dev/null +++ b/Avoid-build-failure.patch @@ -0,0 +1,66 @@ +From 0ee91e1c571668732ee05b1525e7fa8f72427c0f Mon Sep 17 00:00:00 2001 +From: Kamal Heib +Date: Fri, 5 Dec 2025 12:00:49 -0500 +Subject: [PATCH] Avoid build failure + +Signed-off-by: Kamal Heib +--- + src/tools/perf/perftest_params.c | 2 +- + src/ucs/config/parser.c | 2 +- + src/uct/ib/base/ib_device.c | 7 ++++--- + 3 files changed, 6 insertions(+), 5 deletions(-) + +diff --git a/src/tools/perf/perftest_params.c b/src/tools/perf/perftest_params.c +index 9098cdaed2f6..b7a5dcde01e2 100644 +--- a/src/tools/perf/perftest_params.c ++++ b/src/tools/perf/perftest_params.c +@@ -560,7 +560,7 @@ static ucs_status_t init_daemon_params(ucx_perf_params_t *params) + ucs_status_t parse_test_params(perftest_params_t *params, char opt, + const char *opt_arg) + { +- char *optarg2 = NULL; ++ const char *optarg2 = NULL; + test_type_t *test; + unsigned i; + +diff --git a/src/ucs/config/parser.c b/src/ucs/config/parser.c +index 696a4ebd2186..2338ceab0380 100644 +--- a/src/ucs/config/parser.c ++++ b/src/ucs/config/parser.c +@@ -644,7 +644,7 @@ int ucs_config_sprintf_bw(char *buf, size_t max, const void *src, + int ucs_config_sscanf_bw_spec(const char *buf, void *dest, const void *arg) + { + ucs_config_bw_spec_t *dst = (ucs_config_bw_spec_t*)dest; +- char *delim; ++ const char *delim; + + delim = strchr(buf, ':'); + if (!delim) { +diff --git a/src/uct/ib/base/ib_device.c b/src/uct/ib/base/ib_device.c +index bcef1b0a4025..f77809be5a9a 100644 +--- a/src/uct/ib/base/ib_device.c ++++ b/src/uct/ib/base/ib_device.c +@@ -1305,7 +1305,8 @@ ucs_status_t uct_ib_device_find_port(uct_ib_device_t *dev, + const char *ibdev_name; + unsigned port_num; + size_t devname_len; +- char *p; ++ const char *p; ++ char *endptr; + + p = strrchr(resource_dev_name, ':'); + if (p == NULL) { +@@ -1320,8 +1321,8 @@ ucs_status_t uct_ib_device_find_port(uct_ib_device_t *dev, + goto err; /* Device name is wrong */ + } + +- port_num = strtod(p + 1, &p); +- if (*p != '\0') { ++ port_num = strtod(p + 1, &endptr); ++ if (*endptr != '\0') { + goto err; /* Failed to parse port number */ + } + if ((port_num < dev->first_port) || (port_num >= dev->first_port + dev->num_ports)) { +-- +2.51.1 + diff --git a/sources b/sources index a1151e5..03d679f 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (ucx-1.14.1.tar.gz) = 9edb7a2f754094af595c0adf693cd294fc0facc6f08b1235436eea8b3d1b6414c3fb8de8e6619099ba6af99961e47a5441ddc88324207aa123d2c8a3b6faf431 +SHA512 (ucx-1.19.0.tar.gz) = bcd727df3e3e281424bc8da5247bd5396b7b1b0f3113265d4dc2e401442710776aa3c251e05db633321171359c63e3166c95d21b2296207a37eb6e2e29845f90 diff --git a/ucx.spec b/ucx.spec index 8d1a009..065f1da 100644 --- a/ucx.spec +++ b/ucx.spec @@ -5,14 +5,26 @@ %bcond_without ib %bcond_with knem %bcond_without rdmacm -%bcond_with rocm %bcond_with ugni %bcond_with xpmem %bcond_with vfs +%bcond_with mad +%bcond_without mlx5 +%bcond_with efa + +%ifarch x86_64 +%if 0%{?fedora} <= 42 +%bcond_with rocm +%else +%bcond_without rocm +%endif +%else +%bcond_with rocm +%endif Name: ucx -Version: 1.14.1 -Release: 4%{?dist} +Version: 1.19.0 +Release: 3%{?dist} Summary: UCX is a communication library implementing high-performance messaging License: BSD-3-Clause AND MIT AND CC-PDDC AND (BSD-3-Clause OR Apache-2.0) @@ -28,12 +40,13 @@ License: BSD-3-Clause AND MIT AND CC-PDDC AND (BSD-3-Clause OR Apache-2.0) URL: http://www.openucx.org Source: https://github.com/openucx/%{name}/releases/download/v%{version}/ucx-%{version}.tar.gz +Patch: Avoid-build-failure.patch BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) Prefix: %{_prefix} # UCX currently supports only the following architectures -ExclusiveArch: aarch64 ppc64le x86_64 +ExclusiveArch: aarch64 ppc64le x86_64 riscv64 %if %{defined extra_deps} Requires: %{?extra_deps} @@ -54,6 +67,12 @@ BuildRequires: gdrcopy %if %{with ib} BuildRequires: libibverbs-devel %endif +%if %{with mlx5} +BuildRequires: rdma-core-devel +%endif +%if %{with efa} +BuildRequires: rdma-core-devel +%endif %if %{with knem} BuildRequires: knem %endif @@ -61,7 +80,8 @@ BuildRequires: knem BuildRequires: librdmacm-devel %endif %if %{with rocm} -BuildRequires: hsa-rocr-dev +BuildRequires: rocm-hip-devel +BuildRequires: chrpath %endif %if %{with xpmem} BuildRequires: xpmem-devel @@ -69,6 +89,10 @@ BuildRequires: xpmem-devel %if %{with vfs} BuildRequires: fuse3-devel %endif +%if %{with mad} +BuildRequires: libibmad-devel libibumad-devel +%endif + %description UCX is an optimized communication framework for high-performance distributed @@ -94,13 +118,24 @@ Provides header files and examples for developing with UCX. %prep %setup -q +%patch -P0 -p1 +# https://github.com/openucx/ucx/issues/10542 +# With ROCm 6.3+ libhsakmt is bundled with libhsa-runtime64 +# Remove this nonexistent library +sed -i 's@-lhsakmt@@' config/m4/rocm.m4 + +# Relax use of -Werror +sed -i 's@-Werror@@' config/m4/compiler.m4 + +autoreconf -fiv +# https://github.com/openucx/ucx/commit/b0a275a5492125a13020cd095fe9934e0b5e7c6a +# can be removed on release after 1.17.0 +sed -i '/#include /a #include ' src/ucs/time/time.h %build -# Fix incorrect declaration -# https://github.com/openucx/ucx/issues/9115 -# https://github.com/openucx/ucx/commit/8d6032ec864190c9f079d96e731c5004a975e153 -# can be removed for release 1.15 -sed -i 's/unsigned advice)/uct_mem_advice_t advice)/g' src/uct/base/uct_md.c +# may be fixed in 1.19.0 +%set_build_flags +export CFLAGS="$CFLAGS -std=gnu17" %define _with_arg() %{expand:%%{?with_%{1}:--with-%{2}}%%{!?with_%{1}:--without-%{2}}} %define _enable_arg() %{expand:%%{?with_%{1}:--enable-%{2}}%%{!?with_%{1}:--disable-%{2}}} @@ -110,16 +145,21 @@ sed -i 's/unsigned advice)/uct_mem_advice_t advice)/g' src/uct/base/uct_md.c --disable-assertions \ --disable-params-check \ --without-java \ +%if %{with rocm} + --with-rocm=%{_prefix} \ +%endif %_enable_arg cma cma \ %_with_arg cuda cuda \ %_with_arg gdrcopy gdrcopy \ %_with_arg ib verbs \ + %_with_arg mlx5 mlx5 \ + %_with_arg efa efa \ %_with_arg knem knem \ %_with_arg rdmacm rdmacm \ - %_with_arg rocm rocm \ %_with_arg xpmem xpmem \ %_with_arg vfs fuse3 \ %_with_arg ugni ugni \ + %_with_arg mad mad \ %{?configure_options} make %{?_smp_mflags} V=1 @@ -131,13 +171,26 @@ rm -f %{buildroot}%{_libdir}/ucx/*.la rm -f %{buildroot}%{_libdir}/ucx/lib*.so rm -f %{buildroot}%{_libdir}/ucx/lib*.a +%if %{with rocm} +# ERROR 0002: file '/usr/lib64/ucx/libucx_perftest_rocm.so.0.0.0' contains an +# invalid runpath '/usr/hip/lib' in [/usr/hip/lib:/usr/lib:/usr/lib64] +# Build is confused, assumes rocm is part of AMD's release to /opt/rocm/hip/lib +# We install ROCm to system locations, so rpath is not needed, delete them +chrpath -d %{buildroot}%{_libdir}/ucx/libucx_perftest_rocm.so.0.0.0 +chrpath -d %{buildroot}%{_libdir}/ucx/libucm_rocm.so.0.0.0 +chrpath -d %{buildroot}%{_libdir}/ucx/libuct_rocm.so.0.0.0 +%endif + %files %{_libdir}/lib*.so.* %{_bindir}/ucx_info %{_bindir}/ucx_perftest +%{_bindir}/ucx_perftest_daemon %{_bindir}/ucx_read_profile %{_bindir}/io_demo %{_datadir}/ucx +%dir %{_sysconfdir}/ucx +%{_sysconfdir}/ucx/ucx.conf %exclude %{_datadir}/ucx/examples %doc README AUTHORS NEWS %{!?_licensedir:%global license %%doc} @@ -254,8 +307,9 @@ Provides Radeon Open Compute (ROCm) Runtime support for UCX. %files rocm %dir %{_libdir}/ucx -%{_libdir}/ucx/libuct_rocm.so.* %{_libdir}/ucx/libucm_rocm.so.* +%{_libdir}/ucx/libuct_rocm.so.* +%{_libdir}/ucx/libucx_perftest_rocm.so.* %if %{with gdrcopy} %package rocmgdr @@ -316,7 +370,94 @@ status, and more. %{_bindir}/ucx_vfs %endif +%if %{with mlx5} +%package ib-mlx5 +Requires: %{name}%{?_isa} = %{version}-%{release} +Summary: UCX IB MLX5 RDMA provider support +Group: System Environment/Libraries + +%description ib-mlx5 +Provides support for DevX, Direct Verbs and DC transports for Infiniband +devices. + +%files ib-mlx5 +%{_libdir}/ucx/libuct_ib_mlx5.so.* +%endif + +%if %{with efa} +%package ib-efa +Requires: %{name}%{?_isa} = %{version}-%{release} +Summary: UCX EFA device RDMA support +Group: System Environment/Libraries + +%description ib-efa +Provides support for EFA device as an IBTA transport for UCX. + +%files ib-efa +%{_libdir}/ucx/libuct_ib_efa.so.* +%endif + +%if %{with mad} +%package mad +Requires: %{name}%{?_isa} = %{version}-%{release} +Summary: UCX Infiniband MAD support +Group: System Environment/Libraries + +%description mad +Provide Infiniband MAD support for UCX. Enables running perftest using +Infiniband datagrams for out-of-band communications. + +%files mad +%{_libdir}/ucx/libucx_perftest_mad.so.* +%endif + %changelog +* Fri Jul 17 2026 Fedora Release Engineering - 1.19.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild + +* Fri Jan 16 2026 Tom Rix - 1.19.0-2 +- Relax use of -Werror + +* Fri Dec 05 2025 Kamal Heib - 1.19.0-1 +- Update to version 1.19.0 + +* Mon Nov 24 2025 Tom Rix - 1.18.1-3 +- Rebuild + +* Fri Jul 25 2025 Fedora Release Engineering - 1.18.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Wed Jun 25 2025 Kamal Heib - 1.18.1-1 +- Update to version 1.18.1 +- Resolves: rhbz#2328935 + +* Sun Mar 9 2025 Tom Rix - 1.17.0-5 +- ROCm is part of Fedora, so build it. + +* Sun Jan 19 2025 Fedora Release Engineering - 1.17.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Wed Oct 30 2024 David Abdurachmanov - 1.17.0-3 +- Enable riscv64 + +* Sat Jul 20 2024 Fedora Release Engineering - 1.17.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Thu Jun 27 2024 Benson Muite - 1.17.0-1 +- Upgrade to new release bz2280815 + +* Sat Apr 27 2024 Benson Muite - 1.16.0-1 +- Upgrade to new release bz2256073 + +* Sat Jan 27 2024 Fedora Release Engineering - 1.15.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sun Dec 24 2023 Benson Muite - 1.15.0-1 +- Upgrade to new release + +* Sun Dec 24 2023 Benson Muite - 1.14.1-5 +- Add patch to separate C and C++ flags from yselkowitz + * Sat Jul 22 2023 Fedora Release Engineering - 1.14.1-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild