2021-06-15 16:57:36 +00:00
|
|
|
# Global macros
|
2021-02-16 15:07:33 +00:00
|
|
|
%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}
|
2021-06-15 17:04:38 +00:00
|
|
|
%{!?build_requirements:%define build_requirements 0}
|
2021-02-16 15:07:33 +00:00
|
|
|
%{!?shared:%define shared 0}
|
|
|
|
|
2021-06-15 16:57:36 +00:00
|
|
|
# Spec metadata
|
|
|
|
Name: spdk
|
|
|
|
Version: %{version}
|
|
|
|
Release: %{release}
|
|
|
|
Summary: Storage Performance Development Kit
|
|
|
|
|
2021-02-16 15:07:33 +00:00
|
|
|
# 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}
|
2021-06-15 16:57:36 +00:00
|
|
|
Requires: %(echo "%{requirements_list}")
|
2021-02-16 15:07:33 +00:00
|
|
|
%endif
|
|
|
|
|
2021-06-15 17:04:38 +00:00
|
|
|
%if %{build_requirements}
|
|
|
|
BuildRequires: %(echo "%{build_requirements_list}")
|
|
|
|
%endif
|
|
|
|
|
2021-06-15 16:57:36 +00:00
|
|
|
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.
|
|
|
|
|
2021-02-16 15:07:33 +00:00
|
|
|
%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
|