M. Vefa Bicakci 5549fd6849 Debian: Add libbnxt_re Infiniband verbs library
This commit adds the libbnxt_re Infiniband verbs library to Debian-based
StarlingX.

In comparison to commit 9baff8aa884a ("Introduce libbnxt_re version
220.0.5.0") and commit 4112936362c6 ("libbnxt_re: Add support for
rdma-core v37") that introduce the same library to CentOS-based
StarlingX, the only change in this commit was to remove the use of the
"stdatomic.h" header's compatibility-oriented version shipped with
libbxnt_re. This header file is already provided by Debian's newer
toolchain.

The two patches make the library compatible with rdma-core v37 provided
by Mellanox OFED's version of rdma-core. For further information, please
see commit 4112936362c6 ("libbnxt_re: Add support for rdma-core v37").

Verification notes:
- An ISO image with the standard kernel was successfully built with this
  commit and the resulting ISO image was installed onto a physical
  server with a quad-port Broadcom NetXtreme-E network adapter, of which
  the third and fourth ports were connected to each other with a
  loopback cable.

- When we installed the Linux RDMA community's perftest package on
  Debian-based StarlingX with apt-get and attempted to run the benchmark
  programs, we encountered a dynamically-linked library error caused by
  the "libefa.so" Infiniband verbs library (that perftest's utilities
  appear to link against) not existing on the system. This occurs
  because the Mellanox OFED version of the rdma-core package in
  StarlingX does not build the libefa.so library.

  To work around this, we built the perftest package in a Debian
  Bullseye container, after having modified perftest's configure.ac file
  to avoid linking against libefa.so. The resulting binaries were
  successfully used on the aforementioned server to verify the
  libbnxt_re Infiniband verbs library and the bnxt_re driver.

  The test procedure consisted of using a server ib_write_bw instance on
  the 3rd port of the network adapter and another instance as a client
  on the 4th port of the network adapter. (Recall that ports 3 and 4
  were connected to each other.)

- The preempt-rt kernel was not tested due to not being able to generate
  a working ISO image that installed onto a virtual machine. (The
  installation process was aborted with a kickstart file parse error.)

Story: 2009915
Task: 45139

Change-Id: I917c18ef262afdf3ddfaa7e31af2583b8f74300b
Signed-off-by: M. Vefa Bicakci <vefa.bicakci@windriver.com>
2022-04-26 23:45:45 +00:00

54 lines
2.0 KiB
Makefile
Executable File

#!/usr/bin/make -f
#
# Copyright (c) 2022 Wind River Systems, Inc.
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. The ASF licenses this
# file to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
# output every command that modifies files on the build system.
#export DH_VERBOSE = 1
include /usr/share/dpkg/architecture.mk
libdir=/usr/lib/$(DEB_HOST_MULTIARCH)
debdir=debian/libbnxt-re
%:
dh $@
override_dh_auto_install:
dh_auto_install
# Now, the following symbolic link exists:
# /usr/lib/x86_64-linux-gnu/libbnxt_re.so -> libbnxt_re-rdmav34.so
#
# We need to create the following symbolic link as well:
# /usr/lib/x86_64-linux-gnu/libibverbs/libbnxt_re-rdmav34.so -> ../libbnxt_re-rdmav34.so
#
# To avoid hard-coding the version (v34), read the link.
libname="$$(readlink "$(debdir)/$(libdir)/libbnxt_re.so")" && \
mkdir -p "$(debdir)/$(libdir)/libibverbs/" && \
ln -s "../$${libname}" "$(debdir)/$(libdir)/libibverbs/$${libname}"
# Remove static library and libtool archive files.
# - Static library is not necessary given that no other packages statically
# link against the libbnxt_re library.
# - Libtool archive files (*.la) are not recommended to be included in
# Debian packages:
# https://www.debian.org/doc/manuals/maint-guide/advanced.en.html#library
# https://wiki.debian.org/ReleaseGoals/LAFileRemoval
rm -vf \
$(debdir)/$(libdir)/libbnxt_re.a \
$(debdir)/$(libdir)/libbnxt_re.la