Skip to content

Commit

Permalink
package: add rdma-core
Browse files Browse the repository at this point in the history
- Add minimum required libraries and drivers in libibverbs.
- Add helper program ibv_devices and ibv_devinfo

Signed-off-by: Yutong Sun <[email protected]>
  • Loading branch information
ytsssun committed Oct 26, 2024
1 parent a10182f commit 4ad9072
Show file tree
Hide file tree
Showing 6 changed files with 197 additions and 0 deletions.
9 changes: 9 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@ members = [
"packages/pigz",
"packages/policycoreutils",
"packages/procps",
"packages/rdma-core",
"packages/readline",
"packages/release",
"packages/runc",
Expand Down
1 change: 1 addition & 0 deletions kits/bottlerocket-core-kit/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,7 @@ pciutils = { path = "../../packages/pciutils" }
pigz = { path = "../../packages/pigz" }
policycoreutils = { path = "../../packages/policycoreutils" }
procps = { path = "../../packages/procps" }
rdma-core = { path = "../../packages/rdma-core" }
readline = { path = "../../packages/readline" }
release = { path = "../../packages/release" }
runc = { path = "../../packages/runc" }
Expand Down
20 changes: 20 additions & 0 deletions packages/rdma-core/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
[package]
name = "rdma-core"
version = "0.1.0"
edition = "2021"
publish = false
build = "../build.rs"

[lib]
path = "../packages.rs"

[package.metadata.build-package]
releases-url = "https://github.com/linux-rdma/rdma-core/releases"

[[package.metadata.build-package.external-files]]
url = "https://github.com/linux-rdma/rdma-core/releases/download/v53.1/rdma-core-53.1.tar.gz"
sha512 = "d786c6854093fbc1b876aec068ea87d0e5cc2a217c19e515cf48ba2fb7018f3da60b9cd6f204b6f04c1b295fec47ddafdca330cb734a0df7b6d7631d77cca0a9"

[build-dependencies]
glibc = { path = "../glibc" }
libnl = { path = "../libnl" }
1 change: 1 addition & 0 deletions packages/rdma-core/rdma-core-tmpfiles.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
C /etc/libibverbs.d - - - -
165 changes: 165 additions & 0 deletions packages/rdma-core/rdma-core.spec
Original file line number Diff line number Diff line change
@@ -0,0 +1,165 @@
Name: %{_cross_os}rdma-core
Version: 53.1
Release: 1%{?dist}
Summary: RDMA core userspace libraries and daemons
License: MIT OR GPL-2.0-only
Source0: https://github.com/linux-rdma/rdma-core/releases/download/v%{version}/rdma-core-%{version}.tar.gz
Source100: rdma-core-tmpfiles.conf

BuildRequires: cmake >= 2.8.11
BuildRequires: %{_cross_os}libnl-devel
BuildRequires: %{_cross_os}glibc-devel
Requires: %{_cross_os}libnl

%description
%{summary}.

%package devel
Summary: RDMA core development libraries and headers
# For now we are only providing the libibverbs-devel as it
# will be needed to build EFA Device Plugin.
Provides: %{_cross_os}libibverbs-devel

%description devel
%{summary}.

%prep
%autosetup -n rdma-core-%{version} -p1

%build
%{cross_cmake} . \
-DNO_PYVERBS=1 \
-DNO_MAN_PAGES=1 \
-DENABLE_STATIC=1 \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX:PATH=%{_cross_prefix} \
-DCMAKE_INSTALL_LIBDIR:PATH=%{_cross_libdir} \
-DCMAKE_INSTALL_BINDIR:PATH=%{_cross_bindir} \
-DCMAKE_INSTALL_SBINDIR:PATH=%{_cross_sbindir} \
-DCMAKE_INSTALL_INCLUDEDIR:PATH=%{_cross_includedir} \
-DCMAKE_INSTALL_SYSCONFDIR:PATH=%{_cross_sysconfdir} \
-DCMAKE_INSTALL_FULL_SYSCONFDIR:PATH=%{_cross_sysconfdir} \

%make_build

%install
%make_install

install -d %{buildroot}%{_cross_tmpfilesdir}
install -p -m 0644 %{S:100} %{buildroot}%{_cross_tmpfilesdir}/rdma-core.conf

install -d %{buildroot}%{_cross_factorydir}%{_cross_sysconfdir}/libibverbs.d
install -p %{buildroot}%{_cross_sysconfdir}/libibverbs.d/efa.driver %{buildroot}%{_cross_factorydir}%{_cross_sysconfdir}/libibverbs.d

%files
%license COPYING.*
%{_cross_attribution_file}
%{_cross_tmpfilesdir}/rdma-core.conf
%dir %{_cross_factorydir}%{_cross_sysconfdir}/libibverbs.d
%{_cross_factorydir}%{_cross_sysconfdir}/libibverbs.d/efa.driver

# Core EFA libraries
%{_cross_libdir}/libefa.so.*
%{_cross_libdir}/libibverbs.so.*
%{_cross_libdir}/librdmacm.so.*
%dir %{_cross_libdir}/libibverbs
%{_cross_libdir}/libibverbs/libefa-rdmav34.so

# Verification tools
%{_cross_bindir}/ibv_devices
%{_cross_bindir}/ibv_devinfo


# Exclude the bits that are not needed
%exclude %{_cross_datadir}/perl5
%exclude %{_cross_docdir}
%exclude %{_cross_libdir}/udev
%exclude %{_cross_libexecdir}
%exclude %{_cross_pkgconfigdir}
%exclude %{_cross_sbindir}
%exclude %{_cross_sysconfdir}
%exclude %{_cross_unitdir}

# Exclude all the unused libs
%exclude %{_cross_libdir}/*.a
%exclude %{_cross_libdir}/ibacm*
%exclude %{_cross_libdir}/libbnxt*
%exclude %{_cross_libdir}/libcxgb4*
%exclude %{_cross_libdir}/liberdma*
%exclude %{_cross_libdir}/libhfi1*
%exclude %{_cross_libdir}/libhns*
%exclude %{_cross_libdir}/libibmad*
%exclude %{_cross_libdir}/libibnetdisc*
%exclude %{_cross_libdir}/libibumad*
%exclude %{_cross_libdir}/libmana*
%exclude %{_cross_libdir}/libmlx*
%exclude %{_cross_libdir}/libmthca*
%exclude %{_cross_libdir}/libocrdma*
%exclude %{_cross_libdir}/libqedr*
%exclude %{_cross_libdir}/librxe*
%exclude %{_cross_libdir}/libsiw*
%exclude %{_cross_libdir}/libvmw*
%exclude %{_cross_libdir}/rsocket

# Exclude specific RDMA providers (keeping only libefa)
%exclude %{_cross_libdir}/libibverbs/libbnxt_re-rdmav34.so
%exclude %{_cross_libdir}/libibverbs/libcxgb4-rdmav34.so
%exclude %{_cross_libdir}/libibverbs/liberdma-rdmav34.so
%exclude %{_cross_libdir}/libibverbs/libhfi1verbs-rdmav34.so
%exclude %{_cross_libdir}/libibverbs/libhns-rdmav34.so
%exclude %{_cross_libdir}/libibverbs/libipathverbs-rdmav34.so
%exclude %{_cross_libdir}/libibverbs/libirdma-rdmav34.so
%exclude %{_cross_libdir}/libibverbs/libmana-rdmav34.so
%exclude %{_cross_libdir}/libibverbs/libmlx4-rdmav34.so
%exclude %{_cross_libdir}/libibverbs/libmlx5-rdmav34.so
%exclude %{_cross_libdir}/libibverbs/libmthca-rdmav34.so
%exclude %{_cross_libdir}/libibverbs/libocrdma-rdmav34.so
%exclude %{_cross_libdir}/libibverbs/libqedr-rdmav34.so
%exclude %{_cross_libdir}/libibverbs/librxe-rdmav34.so
%exclude %{_cross_libdir}/libibverbs/libsiw-rdmav34.so
%exclude %{_cross_libdir}/libibverbs/libvmw_pvrdma-rdmav34.so

# Exclude udev rules
%exclude %{_cross_udevrulesdir}

# Exclude all the unused binaries
%exclude %{_cross_bindir}/cmtime
%exclude %{_cross_bindir}/ib_acme
%exclude %{_cross_bindir}/ibv_asyncwatch
%exclude %{_cross_bindir}/ibv_rc_pingpong
%exclude %{_cross_bindir}/ibv_srq_pingpong
%exclude %{_cross_bindir}/ibv_uc_pingpong
%exclude %{_cross_bindir}/ibv_ud_pingpong
%exclude %{_cross_bindir}/ibv_xsrq_pingpong
%exclude %{_cross_bindir}/mckey
%exclude %{_cross_bindir}/rcopy
%exclude %{_cross_bindir}/rdma_client
%exclude %{_cross_bindir}/rdma_server
%exclude %{_cross_bindir}/rdma_xclient
%exclude %{_cross_bindir}/rdma_xserver
%exclude %{_cross_bindir}/riostream
%exclude %{_cross_bindir}/rping
%exclude %{_cross_bindir}/rstream
%exclude %{_cross_bindir}/ucmatose
%exclude %{_cross_bindir}/udaddy
%exclude %{_cross_bindir}/udpong

%files devel
%dir %{_cross_includedir}/infiniband
%dir %{_cross_includedir}/rdma
%{_cross_includedir}/infiniband/*
%{_cross_includedir}/rdma/*
# Include the pkg config files
%{_cross_pkgconfigdir}/libefa.pc
%{_cross_pkgconfigdir}/librdmacm.pc
%{_cross_pkgconfigdir}/libibverbs.pc
%{_cross_libdir}/libefa.so
%{_cross_libdir}/libibverbs.so
%{_cross_libdir}/librdmacm.so
# Since we built with static flag, also including the static libs
%{_cross_libdir}/libefa.a
%{_cross_libdir}/libibverbs.a
%{_cross_libdir}/librdmacm.a


%changelog

0 comments on commit 4ad9072

Please sign in to comment.