From b631ce466538bdee6e19be3286fb8cbeb5c73de6 Mon Sep 17 00:00:00 2001 From: Honggang Li Date: Thu, 28 Nov 2019 08:23:54 -0500 Subject: [PATCH] Rebase to upstream release v26.1 Signed-off-by: Honggang Li --- .gitignore | 1 + rdma-core.spec | 288 +++++++++++++++++++++++++++++++++++++------------ sources | 2 +- 3 files changed, 223 insertions(+), 68 deletions(-) diff --git a/.gitignore b/.gitignore index fa2fe2c..8dd2450 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ /rdma-core-14.tar.gz /rdma-core-16.2.tar.gz /rdma-core-20.1.tar.gz +/rdma-core-26.1.tar.gz diff --git a/rdma-core.spec b/rdma-core.spec index 24cc194..182345b 100644 --- a/rdma-core.spec +++ b/rdma-core.spec @@ -1,12 +1,8 @@ Name: rdma-core -Version: 20.1 -Release: 4%{?dist} +Version: 26.1 +Release: 1%{?dist} Summary: RDMA core userspace libraries and daemons -%ifnarch s390 %{arm} -%define dma_coherent 1 -%endif - # Almost everything is licensed under the OFA dual GPLv2, 2 Clause BSD license # providers/ipathverbs/ Dual licensed using a BSD license with an extra patent clause # providers/rxe/ Incorporates code from ipathverbs and contains the patent clause @@ -14,6 +10,8 @@ Summary: RDMA core userspace libraries and daemons License: GPLv2 or BSD Url: https://github.com/linux-rdma/rdma-core Source: https://github.com/linux-rdma/rdma-core/releases/download/v%{version}/%{name}-%{version}.tar.gz +# Do not build static libs by default. +%define with_static %{?_with_static: 1} %{?!_with_static: 0} BuildRequires: binutils BuildRequires: cmake >= 2.8.11 @@ -22,25 +20,33 @@ BuildRequires: libudev-devel BuildRequires: pkgconfig BuildRequires: pkgconfig(libnl-3.0) BuildRequires: pkgconfig(libnl-route-3.0) -%ifnarch s390 +BuildRequires: /usr/bin/rst2man BuildRequires: valgrind-devel -%endif BuildRequires: systemd BuildRequires: systemd-devel +%define with_pyverbs %{?_with_pyverbs: 1} %{?!_with_pyverbs: 0} +%if %{with_pyverbs} +BuildRequires: python3-devel +BuildRequires: python3-Cython +%else +%if 0%{?rhel} == 8 || 0%{?fedora} >= 30 BuildRequires: python3 +%else +BuildRequires: python +%endif +%endif +%if 0%{?fedora} >= 21 BuildRequires: perl-generators -BuildRequires: pandoc +%endif -Requires: dracut, kmod, systemd +Requires: dracut, kmod, systemd, pciutils # Red Hat/Fedora previously shipped redhat/ as a stand-alone # package called 'rdma', which we're supplanting here. Provides: rdma = %{version}-%{release} Obsoletes: rdma < %{version}-%{release} -Provides: rdma-ndd = %{version}-%{release} -Obsoletes: rdma-ndd < %{version}-%{release} -Obsoletes: libehca < 1.2.2-7 -# the ndd utility moved from infiniband-diags to rdma-core Conflicts: infiniband-diags <= 1.6.7 +# 32-bit arm is missing required arch-specific memory barriers, +ExcludeArch: %{arm} # Since we recommend developers use Ninja, so should packagers, for consistency. %define CMAKE_FLAGS %{nil} @@ -57,6 +63,11 @@ BuildRequires: make %define cmake_install DESTDIR=%{buildroot} make install %endif +%if 0%{?fedora} >= 25 +# pandoc was introduced in FC25 +BuildRequires: pandoc +%endif + %description RDMA core userspace infrastructure and documentation, including initialization scripts, kernel driver-specific modprobe override configs, IPoIB network @@ -68,70 +79,72 @@ Requires: %{name}%{?_isa} = %{version}-%{release} Requires: libibverbs = %{version}-%{release} Provides: libibverbs-devel = %{version}-%{release} Obsoletes: libibverbs-devel < %{version}-%{release} -Provides: libibverbs-devel-static = %{version}-%{release} -Obsoletes: libibverbs-devel-static < %{version}-%{release} -Obsoletes: libibcm-devel < %{version}-%{release} -Obsoletes: libibcm-static < %{version}-%{release} Requires: libibumad = %{version}-%{release} Provides: libibumad-devel = %{version}-%{release} Obsoletes: libibumad-devel < %{version}-%{release} -Provides: libibumad-static = %{version}-%{release} -Obsoletes: libibumad-static < %{version}-%{release} Requires: librdmacm = %{version}-%{release} Provides: librdmacm-devel = %{version}-%{release} Obsoletes: librdmacm-devel < %{version}-%{release} -Provides: librdmacm-static = %{version}-%{release} -Obsoletes: librdmacm-static < %{version}-%{release} Requires: ibacm = %{version}-%{release} Provides: ibacm-devel = %{version}-%{release} Obsoletes: ibacm-devel < %{version}-%{release} -Provides: libcxgb3-static = %{version}-%{release} -Obsoletes: libcxgb3-static < %{version}-%{release} -Provides: libcxgb4-static = %{version}-%{release} -Obsoletes: libcxgb4-static < %{version}-%{release} -Provides: libhfi1-static = %{version}-%{release} -Obsoletes: libhfi1-static < %{version}-%{release} -Provides: libipathverbs-static = %{version}-%{release} -Obsoletes: libipathverbs-static < %{version}-%{release} -%if 0%{?dma_coherent} -Provides: libmlx4-static = %{version}-%{release} -Obsoletes: libmlx4-static < %{version}-%{release} -Provides: libmlx5-static = %{version}-%{release} -Obsoletes: libmlx5-static < %{version}-%{release} +Requires: infiniband-diags = %{version}-%{release} +Provides: infiniband-diags-devel = %{version}-%{release} +Obsoletes: infiniband-diags-devel < %{version}-%{release} +Provides: libibmad-devel = %{version}-%{release} +Obsoletes: libibmad-devel < %{version}-%{release} +%if %{with_static} +# Since our pkg-config files include private references to these packages they +# need to have their .pc files installed too, even for dynamic linking, or +# pkg-config breaks. +BuildRequires: pkgconfig(libnl-3.0) +BuildRequires: pkgconfig(libnl-route-3.0) %endif -Provides: libnes-static = %{version}-%{release} -Obsoletes: libnes-static < %{version}-%{release} -Provides: libocrdma-static = %{version}-%{release} -Obsoletes: libocrdma-static < %{version}-%{release} -Provides: libi40iw-devel-static = %{version}-%{release} -Obsoletes: libi40iw-devel-static < %{version}-%{release} -Provides: libmthca-static = %{version}-%{release} -Obsoletes: libmthca-static < %{version}-%{release} %description devel RDMA core development libraries and headers. +%package -n infiniband-diags +Summary: InfiniBand Diagnostic Tools +Provides: perl(IBswcountlimits) +Provides: libibmad = %{version}-%{release} +Obsoletes: libibmad < %{version}-%{release} +Obsoletes: openib-diags < 1.3 + +%description -n infiniband-diags +This package provides IB diagnostic programs and scripts needed to diagnose an +IB subnet. infiniband-diags now also provides libibmad. libibmad provides +low layer IB functions for use by the IB diagnostic and management +programs. These include MAD, SA, SMP, and other basic IB functions. + +%package -n infiniband-diags-compat +Summary: OpenFabrics Alliance InfiniBand Diagnostic Tools + +%description -n infiniband-diags-compat +Deprecated scripts and utilities which provide duplicated functionality, most +often at a reduced performance. These are maintained for the time being for +compatibility reasons. + %package -n libibverbs Summary: A library and drivers for direct userspace use of RDMA (InfiniBand/iWARP/RoCE) hardware +%{?systemd_requires} Requires: %{name}%{?_isa} = %{version}-%{release} Provides: libcxgb3 = %{version}-%{release} Obsoletes: libcxgb3 < %{version}-%{release} Provides: libcxgb4 = %{version}-%{release} Obsoletes: libcxgb4 < %{version}-%{release} +Provides: libefa = %{version}-%{release} +Obsoletes: libefa < %{version}-%{release} Provides: libhfi1 = %{version}-%{release} Obsoletes: libhfi1 < %{version}-%{release} Provides: libi40iw = %{version}-%{release} Obsoletes: libi40iw < %{version}-%{release} Provides: libipathverbs = %{version}-%{release} Obsoletes: libipathverbs < %{version}-%{release} -%if 0%{?dma_coherent} Provides: libmlx4 = %{version}-%{release} Obsoletes: libmlx4 < %{version}-%{release} -%ifnarch s390x Provides: libmlx5 = %{version}-%{release} Obsoletes: libmlx5 < %{version}-%{release} -%endif -%endif Provides: libmthca = %{version}-%{release} Obsoletes: libmthca < %{version}-%{release} Provides: libnes = %{version}-%{release} @@ -140,8 +153,6 @@ Provides: libocrdma = %{version}-%{release} Obsoletes: libocrdma < %{version}-%{release} Provides: librxe = %{version}-%{release} Obsoletes: librxe < %{version}-%{release} -Provides: libusnic_verbs = %{version}-%{release} -Obsoletes: libusnic_verbs < %{version}-%{release} %description -n libibverbs libibverbs is a library that allows userspace processes to use RDMA @@ -154,17 +165,19 @@ Device-specific plug-in ibverbs userspace drivers are included: - libcxgb3: Chelsio T3 iWARP HCA - libcxgb4: Chelsio T4 iWARP HCA +- libefa: Amazon Elastic Fabric Adapter - libhfi1: Intel Omni-Path HFI - libhns: HiSilicon Hip06 SoC - libi40iw: Intel Ethernet Connection X722 RDMA - libipathverbs: QLogic InfiniPath HCA -- libmlx4: Mellanox ConnectX-3 InfiniBand HCA (except arm, s390) -- libmlx5: Mellanox Connect-IB/X-4+ InfiniBand HCA (except arm, s390, s390x) +- libmlx4: Mellanox ConnectX-3 InfiniBand HCA +- libmlx5: Mellanox Connect-IB/X-4+ InfiniBand HCA - libmthca: Mellanox InfiniBand HCA - libnes: NetEffect RNIC - libocrdma: Emulex OneConnect RDMA/RoCE Device - libqedr: QLogic QL4xxx RoCE HCA - librxe: A software implementation of the RoCE protocol +- libsiw: A software implementation of the iWarp protocol - libvmw_pvrdma: VMware paravirtual RDMA device %package -n libibverbs-utils @@ -234,6 +247,16 @@ Requires: %{name}%{?_isa} = %{version}-%{release} In conjunction with the kernel ib_srp driver, srp_daemon allows you to discover and use SCSI devices via the SCSI RDMA Protocol over InfiniBand. +%if %{with_pyverbs} +%package -n python3-pyverbs +Summary: Python3 API over IB verbs +%{?python_provide:%python_provide python3-pyverbs} + +%description -n python3-pyverbs +Pyverbs is a Cython-based Python API over libibverbs, providing an +easy, object-oriented access to IB verbs. +%endif + %prep %setup @@ -265,8 +288,21 @@ discover and use SCSI devices via the SCSI RDMA Protocol over InfiniBand. -DCMAKE_INSTALL_RUNDIR:PATH=%{_rundir} \ -DCMAKE_INSTALL_DOCDIR:PATH=%{_docdir}/%{name}-%{version} \ -DCMAKE_INSTALL_UDEV_RULESDIR:PATH=%{_udevrulesdir} \ - %{EXTRA_CMAKE_FLAGS} \ - . + -DCMAKE_INSTALL_PERLDIR:PATH=%{perl_vendorlib} \ + -DENABLE_IBDIAGS_COMPAT:BOOL=True \ +%if %{with_static} + -DENABLE_STATIC=1 \ +%endif + %{EXTRA_CMAKE_FLAGS} \ +%if %{defined __python3} + -DPYTHON_EXECUTABLE:PATH=%{__python3} \ + -DCMAKE_INSTALL_PYTHON_ARCH_LIB:PATH=%{python3_sitearch} \ +%endif +%if %{with_pyverbs} + -DNO_PYVERBS=0 +%else + -DNO_PYVERBS=1 +%endif %make_jobs %install @@ -284,16 +320,14 @@ mkdir -p %{buildroot}%{dracutlibdir}/modules.d/05rdma mkdir -p %{buildroot}%{sysmodprobedir} install -D -m0644 redhat/rdma.conf %{buildroot}/%{_sysconfdir}/rdma/rdma.conf install -D -m0644 redhat/rdma.sriov-vfs %{buildroot}/%{_sysconfdir}/rdma/sriov-vfs -%if 0%{?dma_coherent} install -D -m0644 redhat/rdma.mlx4.conf %{buildroot}/%{_sysconfdir}/rdma/mlx4.conf -install -D -m0644 redhat/rdma.mlx4.sys.modprobe %{buildroot}%{sysmodprobedir}/libmlx4.conf -install -D -m0755 redhat/rdma.mlx4-setup.sh %{buildroot}%{_libexecdir}/mlx4-setup.sh -%endif install -D -m0644 redhat/rdma.service %{buildroot}%{_unitdir}/rdma.service install -D -m0755 redhat/rdma.modules-setup.sh %{buildroot}%{dracutlibdir}/modules.d/05rdma/module-setup.sh install -D -m0644 redhat/rdma.udev-rules %{buildroot}%{_udevrulesdir}/98-rdma.rules +install -D -m0644 redhat/rdma.mlx4.sys.modprobe %{buildroot}%{sysmodprobedir}/libmlx4.conf install -D -m0755 redhat/rdma.kernel-init %{buildroot}%{_libexecdir}/rdma-init-kernel install -D -m0755 redhat/rdma.sriov-init %{buildroot}%{_libexecdir}/rdma-set-sriov-vf +install -D -m0755 redhat/rdma.mlx4-setup.sh %{buildroot}%{_libexecdir}/mlx4-setup.sh # ibacm bin/ib_acme -D . -O @@ -337,12 +371,7 @@ rm -f %{buildroot}/%{_sbindir}/srp_daemon.sh %doc %{_docdir}/%{name}-%{version}/rxe.md %doc %{_docdir}/%{name}-%{version}/udev.md %doc %{_docdir}/%{name}-%{version}/tag_matching.md -%if 0%{?dma_coherent} %config(noreplace) %{_sysconfdir}/rdma/mlx4.conf -%config(noreplace) %{_sysconfdir}/modprobe.d/mlx4.conf -%{sysmodprobedir}/libmlx4.conf -%{_libexecdir}/mlx4-setup.sh -%endif %config(noreplace) %{_sysconfdir}/rdma/modules/infiniband.conf %config(noreplace) %{_sysconfdir}/rdma/modules/iwarp.conf %config(noreplace) %{_sysconfdir}/rdma/modules/opa.conf @@ -351,20 +380,25 @@ rm -f %{buildroot}/%{_sbindir}/srp_daemon.sh %config(noreplace) %{_sysconfdir}/rdma/rdma.conf %config(noreplace) %{_sysconfdir}/rdma/sriov-vfs %config(noreplace) %{_sysconfdir}/udev/rules.d/* +%config(noreplace) %{_sysconfdir}/modprobe.d/mlx4.conf %config(noreplace) %{_sysconfdir}/modprobe.d/truescale.conf %{_unitdir}/rdma-hw.target %{_unitdir}/rdma-load-modules@.service %{_unitdir}/rdma.service %dir %{dracutlibdir}/modules.d/05rdma %{dracutlibdir}/modules.d/05rdma/module-setup.sh +%{_udevrulesdir}/../rdma_rename %{_udevrulesdir}/60-rdma-ndd.rules +%{_udevrulesdir}/60-rdma-persistent-naming.rules %{_udevrulesdir}/75-rdma-description.rules %{_udevrulesdir}/90-rdma-hw-modules.rules %{_udevrulesdir}/90-rdma-ulp-modules.rules %{_udevrulesdir}/90-rdma-umad.rules %{_udevrulesdir}/98-rdma.rules +%{sysmodprobedir}/libmlx4.conf %{_libexecdir}/rdma-init-kernel %{_libexecdir}/rdma-set-sriov-vf +%{_libexecdir}/mlx4-setup.sh %{_libexecdir}/truescale-serdes.cmds %{_bindir}/rxe_cfg %{_sbindir}/rdma-ndd @@ -380,29 +414,141 @@ rm -f %{buildroot}/%{_sbindir}/srp_daemon.sh %dir %{_includedir}/rdma %{_includedir}/infiniband/* %{_includedir}/rdma/* +%if %{with_static} +%{_libdir}/lib*.a +%endif %{_libdir}/lib*.so %{_libdir}/pkgconfig/*.pc +%{_mandir}/man3/efadv* %{_mandir}/man3/ibv_* %{_mandir}/man3/rdma* %{_mandir}/man3/umad* %{_mandir}/man3/*_to_ibv_rate.* %{_mandir}/man7/rdma_cm.* -%if 0%{?dma_coherent} %{_mandir}/man3/mlx5dv* -%{_mandir}/man7/mlx5dv* %{_mandir}/man3/mlx4dv* +%{_mandir}/man7/efadv* +%{_mandir}/man7/mlx5dv* %{_mandir}/man7/mlx4dv* -%endif +%{_mandir}/man3/ibnd_* + +%files -n infiniband-diags-compat +%{_sbindir}/ibcheckerrs +%{_mandir}/man8/ibcheckerrs* +%{_sbindir}/ibchecknet +%{_mandir}/man8/ibchecknet* +%{_sbindir}/ibchecknode +%{_mandir}/man8/ibchecknode* +%{_sbindir}/ibcheckport +%{_mandir}/man8/ibcheckport.* +%{_sbindir}/ibcheckportwidth +%{_mandir}/man8/ibcheckportwidth* +%{_sbindir}/ibcheckportstate +%{_mandir}/man8/ibcheckportstate* +%{_sbindir}/ibcheckwidth +%{_mandir}/man8/ibcheckwidth* +%{_sbindir}/ibcheckstate +%{_mandir}/man8/ibcheckstate* +%{_sbindir}/ibcheckerrors +%{_mandir}/man8/ibcheckerrors* +%{_sbindir}/ibdatacounts +%{_mandir}/man8/ibdatacounts* +%{_sbindir}/ibdatacounters +%{_mandir}/man8/ibdatacounters* +%{_sbindir}/ibdiscover.pl +%{_mandir}/man8/ibdiscover* +%{_sbindir}/ibswportwatch.pl +%{_mandir}/man8/ibswportwatch* +%{_sbindir}/ibqueryerrors.pl +%{_sbindir}/iblinkinfo.pl +%{_sbindir}/ibprintca.pl +%{_mandir}/man8/ibprintca* +%{_sbindir}/ibprintswitch.pl +%{_mandir}/man8/ibprintswitch* +%{_sbindir}/ibprintrt.pl +%{_mandir}/man8/ibprintrt* +%{_sbindir}/set_nodedesc.sh + +%files -n infiniband-diags +%{_sbindir}/ibaddr +%{_mandir}/man8/ibaddr* +%{_sbindir}/ibnetdiscover +%{_mandir}/man8/ibnetdiscover* +%{_sbindir}/ibping +%{_mandir}/man8/ibping* +%{_sbindir}/ibportstate +%{_mandir}/man8/ibportstate* +%{_sbindir}/ibroute +%{_mandir}/man8/ibroute.* +%{_sbindir}/ibstat +%{_mandir}/man8/ibstat.* +%{_sbindir}/ibsysstat +%{_mandir}/man8/ibsysstat* +%{_sbindir}/ibtracert +%{_mandir}/man8/ibtracert* +%{_sbindir}/perfquery +%{_mandir}/man8/perfquery* +%{_sbindir}/sminfo +%{_mandir}/man8/sminfo* +%{_sbindir}/smpdump +%{_mandir}/man8/smpdump* +%{_sbindir}/smpquery +%{_mandir}/man8/smpquery* +%{_sbindir}/saquery +%{_mandir}/man8/saquery* +%{_sbindir}/vendstat +%{_mandir}/man8/vendstat* +%{_sbindir}/iblinkinfo +%{_mandir}/man8/iblinkinfo* +%{_sbindir}/ibqueryerrors +%{_mandir}/man8/ibqueryerrors* +%{_sbindir}/ibcacheedit +%{_mandir}/man8/ibcacheedit* +%{_sbindir}/ibccquery +%{_mandir}/man8/ibccquery* +%{_sbindir}/ibccconfig +%{_mandir}/man8/ibccconfig* +%{_sbindir}/dump_fts +%{_mandir}/man8/dump_fts* +%{_sbindir}/ibhosts +%{_mandir}/man8/ibhosts* +%{_sbindir}/ibswitches +%{_mandir}/man8/ibswitches* +%{_sbindir}/ibnodes +%{_mandir}/man8/ibnodes* +%{_sbindir}/ibrouters +%{_mandir}/man8/ibrouters* +%{_sbindir}/ibfindnodesusing.pl +%{_mandir}/man8/ibfindnodesusing* +%{_sbindir}/ibidsverify.pl +%{_mandir}/man8/ibidsverify* +%{_sbindir}/check_lft_balance.pl +%{_mandir}/man8/check_lft_balance* +%{_sbindir}/dump_lfts.sh +%{_mandir}/man8/dump_lfts* +%{_sbindir}/dump_mfts.sh +%{_mandir}/man8/dump_mfts* +%{_sbindir}/ibclearerrors +%{_mandir}/man8/ibclearerrors* +%{_sbindir}/ibclearcounters +%{_mandir}/man8/ibclearcounters* +%{_sbindir}/ibstatus +%{_mandir}/man8/ibstatus* +%{_mandir}/man8/infiniband-diags* +%{_libdir}/libibmad*.so.* +%{_libdir}/libibnetdisc*.so.* +%{perl_vendorlib}/IBswcountlimits.pm +%config(noreplace) %{_sysconfdir}/infiniband-diags/error_thresholds +%config(noreplace) %{_sysconfdir}/infiniband-diags/ibdiag.conf %files -n libibverbs %dir %{_sysconfdir}/libibverbs.d %dir %{_libdir}/libibverbs +%{_libdir}/libefa.so.* %{_libdir}/libibverbs*.so.* %{_libdir}/libibverbs/*.so -%if 0%{?dma_coherent} %{_libdir}/libmlx5.so.* %{_libdir}/libmlx4.so.* -%endif %config(noreplace) %{_sysconfdir}/libibverbs.d/*.driver %doc %{_docdir}/%{name}-%{version}/libibverbs.md @@ -487,7 +633,15 @@ rm -f %{buildroot}/%{_sbindir}/srp_daemon.sh %{_mandir}/man5/srp_daemon_port@.service.5* %doc %{_docdir}/%{name}-%{version}/ibsrpdm.md +%if %{with_pyverbs} +%files -n python3-pyverbs +%{python3_sitearch}/pyverbs +%endif + %changelog +* Thu Nov 28 2019 Honggang Li - 26.1-1 +- Rebase to upstream release v26.1 + * Fri Jul 26 2019 Fedora Release Engineering - 20.1-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild diff --git a/sources b/sources index 7f2b3bd..371d477 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (rdma-core-20.1.tar.gz) = 0c0939e2efa18a917235f591cc47e34a9036d52b842691291c296660b2d903c5b5bc2bd5c8117b1cb7dbd5037fe79b9f2900d2a5dc27a4895578c4338dafc168 +SHA512 (rdma-core-26.1.tar.gz) = 872c5fade0b184c17f740e8db566972e711fb4d51d74eb4a11bbaf685ad2fd455d97feb595f892a9436b839b594983d9364dcc981ca89651e9f0a178d9b0a901