6317642ce6
This is done in order to detect if user wants to build spdk RPMs against DPDK RPMs that might have been installed on the system. This boils down to the following: - if --with-dpdk, with no argument, is detected don't build separate RPM holding DPDK libs since user in this case is most likely interested only in packaging the SPDK so it can coexist with separate DPDK packaging workflow - define install and build requirements for the SPDK RPMs to depend on dpdk-devel RPM Signed-off-by: Michal Berger <michalx.berger@intel.com> Change-Id: I4dd587009da282a114524c74d833fd35ebc5b985 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/8349 Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Karol Latecki <karol.latecki@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
161 lines
4.1 KiB
RPMSpec
161 lines
4.1 KiB
RPMSpec
# Global macros
|
|
%define debug_package %{nil}
|
|
|
|
%{!?deps:%define deps 1}
|
|
%{!?dpdk:%define dpdk 0}
|
|
%{!?dpdk_build_path:%define dpdk_build_path "dpdk/build"}
|
|
%{!?dpdk_path:%define dpdk_path "dpdk"}
|
|
%{!?requirements:%define requirements 0}
|
|
%{!?build_requirements:%define build_requirements 0}
|
|
%{!?shared:%define shared 0}
|
|
|
|
# Spec metadata
|
|
Name: spdk
|
|
Version: %{version}
|
|
Release: %{release}
|
|
Summary: Storage Performance Development Kit
|
|
|
|
# This is a minimal set of requirements needed for SPDK apps to run when built with
|
|
# default configuration. These are also predetermined by rpmbuild. Extra requirements
|
|
# can be defined through a comma-separated list passed via $requirements when building
|
|
# the spec.
|
|
Requires: glibc
|
|
Requires: libaio
|
|
Requires: libgcc
|
|
Requires: libstdc++
|
|
Requires: libuuid
|
|
Requires: ncurses-libs
|
|
Requires: numactl-libs
|
|
Requires: openssl-libs
|
|
Requires: zlib
|
|
|
|
%if %{requirements}
|
|
Requires: %(echo "%{requirements_list}")
|
|
%endif
|
|
|
|
%if %{build_requirements}
|
|
BuildRequires: %(echo "%{build_requirements_list}")
|
|
%endif
|
|
|
|
License: BSD
|
|
URL: https://spdk.io
|
|
Source: spdk-%{version}.tar.gz
|
|
|
|
%description
|
|
|
|
The Storage Performance Development Kit (SPDK) provides a set of tools and libraries for
|
|
writing high performance, scalable, user-mode storage applications. It achieves high
|
|
performance by moving all of the necessary drivers into userspace and operating in a
|
|
polled mode instead of relying on interrupts, which avoids kernel context switches and
|
|
eliminates interrupt handling overhead.
|
|
|
|
%prep
|
|
make clean &>/dev/null || :
|
|
%setup
|
|
|
|
%build
|
|
%if %{deps}
|
|
./scripts/pkgdep.sh --docs --pmem --rdma --uring
|
|
%endif
|
|
|
|
# Rely mainly on CONFIG
|
|
./configure --disable-unit-tests --disable-tests %{configure}
|
|
make %{make}
|
|
make DESTDIR=%{buildroot} install
|
|
|
|
# Include DPDK libs in case --with-shared is in use.
|
|
%if %{dpdk}
|
|
mkdir -p %{buildroot}/usr/local/lib/dpdk
|
|
cp -a %{dpdk_build_path}/lib/* %{buildroot}/usr/local/lib/dpdk/
|
|
# Special case for SPDK_RUN_EXTERNAL_DPDK setup
|
|
[[ -e %{dpdk_path}/intel-ipsec-mb ]] && cp -a %{dpdk_path}/intel-ipsec-mb/*.so* %{buildroot}/usr/local/lib/dpdk/
|
|
[[ -e %{dpdk_path}/isa-l/build/lib ]] && cp -a %{dpdk_path}/isa-l/build/lib/*.so* %{buildroot}/usr/local/lib/dpdk/
|
|
%endif
|
|
|
|
# Try to include all the binaries that were potentially built
|
|
[[ -e build/examples ]] && cp -a build/examples/* %{buildroot}/usr/local/bin/
|
|
[[ -e build/bin ]] && cp -a build/bin/* %{buildroot}/usr/local/bin/
|
|
|
|
# And some useful setup scripts SPDK uses
|
|
mkdir -p %{buildroot}/usr/libexec/spdk
|
|
mkdir -p %{buildroot}/etc/bash_completion.d
|
|
mkdir -p %{buildroot}/etc/profile.d
|
|
mkdir -p %{buildroot}/etc/ld.so.conf.d
|
|
|
|
cat <<-EOF > %{buildroot}/etc/ld.so.conf.d/spdk.conf
|
|
/usr/local/lib
|
|
/usr/local/lib/dpdk
|
|
EOF
|
|
|
|
cat <<-'EOF' > %{buildroot}/etc/profile.d/spdk_path.sh
|
|
PATH=$PATH:/usr/libexec/spdk/scripts
|
|
PATH=$PATH:/usr/libexec/spdk/scripts/vagrant
|
|
PATH=$PATH:/usr/libexec/spdk/test/common/config
|
|
export PATH
|
|
EOF
|
|
|
|
cp -a scripts %{buildroot}/usr/libexec/spdk/scripts
|
|
ln -s /usr/libexec/spdk/scripts/bash-completion/spdk %{buildroot}/etc/bash_completion.d/
|
|
|
|
# We need to take into the account the fact that most of the scripts depend on being
|
|
# run directly from the repo. To workaround it, create common root space under dir
|
|
# like /usr/libexec/spdk and link all potential relative paths the script may try
|
|
# to reference.
|
|
|
|
# setup.sh uses pci_ids.h
|
|
ln -s /usr/local/include %{buildroot}/usr/libexec/spdk
|
|
|
|
%files
|
|
/etc/profile.d/*
|
|
/etc/bash_completion.d/*
|
|
/usr/libexec/spdk/*
|
|
/usr/local/bin/*
|
|
|
|
|
|
%package devel
|
|
Summary: SPDK development libraries and headers
|
|
|
|
%description devel
|
|
SPDK development libraries and headers
|
|
|
|
%files devel
|
|
/usr/local/include/*
|
|
%if %{shared}
|
|
/usr/local/lib/lib*.so
|
|
%endif
|
|
|
|
%package libs
|
|
Summary: SPDK libraries
|
|
|
|
%description libs
|
|
SPDK libraries
|
|
|
|
%files libs
|
|
/etc/ld.so.conf.d/*
|
|
/usr/local/lib/lib*.a
|
|
/usr/local/lib/pkgconfig/*.pc
|
|
%if %{shared}
|
|
/usr/local/lib/lib*.so.*
|
|
%endif
|
|
|
|
%post libs
|
|
ldconfig
|
|
|
|
%if %{dpdk}
|
|
%package dpdk-libs
|
|
Summary: DPDK libraries
|
|
|
|
%description dpdk-libs
|
|
DPDK libraries
|
|
|
|
%files dpdk-libs
|
|
/usr/local/lib/dpdk
|
|
|
|
%post dpdk-libs
|
|
ldconfig
|
|
%endif
|
|
|
|
%changelog
|
|
* Tue Feb 16 2021 Michal Berger <michalx.berger@intel.com>
|
|
- Initial RPM .spec for the SPDK
|