5d5d9cbb3e
Added trace provider based on the trace library. It uses ctypes to define the trace objects and execute library calls. It significantly (~2x) speeds up the execution time on large trace files. The script automatically detects the type of the trace file and will use the appropriate engine (either JSON or the trace library) using python-magic for file detection. When piping a file through stdin, JSON format will be assumed. Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com> Change-Id: Icfa216edee4662714266968eeb72f0097b3779b4 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/9439 Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com> Reviewed-by: Krzysztof Karas <krzysztof.karas@intel.com> Reviewed-by: Monica Kenguva <monica.kenguva@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
140 lines
5.0 KiB
Bash
Executable File
140 lines
5.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
disclaimer() {
|
|
case "$ID" in
|
|
rhel)
|
|
cat <<- WARN
|
|
|
|
WARNING: $PRETTY_NAME system detected.
|
|
|
|
Please, note that the support for this platform is considered to be "best-effort",
|
|
as in, access to some packages may be limited and/or missing. Review your repo
|
|
setup to make sure installation of all dependencies is possible.
|
|
|
|
WARN
|
|
|
|
# Don't trigger errexit, simply install what's available. This is default
|
|
# behavior of older yum versions (e.g. the one present on RHEL 7.x) anyway.
|
|
yum() { "$(type -P yum)" --skip-broken "$@"; }
|
|
# For systems which are not registered, subscription-manager will most likely
|
|
# fail on most calls so simply ignore its failures.
|
|
sub() { subscription-manager "$@" || :; }
|
|
;;
|
|
|
|
*) ;;
|
|
esac
|
|
}
|
|
|
|
is_repo() { yum repolist --all | grep -q "^$1"; }
|
|
|
|
disclaimer
|
|
|
|
# First, add extra EPEL, ELRepo, Ceph repos to have a chance of covering most of the packages
|
|
# on the enterprise systems, like RHEL.
|
|
if [[ $ID == centos || $ID == rhel ]]; then
|
|
repos=() enable=("epel" "elrepo" "elrepo-testing")
|
|
[[ $ID == centos ]] && enable+=("extras")
|
|
if [[ $VERSION_ID == 7* ]]; then
|
|
repos+=("https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm")
|
|
repos+=("https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm")
|
|
[[ $ID == centos ]] && repos+=("centos-release-ceph-nautilus.noarch")
|
|
[[ $ID == centos ]] && repos+=("centos-release-scl-rh")
|
|
# Disable liburing, see https://github.com/spdk/spdk/issues/1564
|
|
if [[ $INSTALL_LIBURING == true ]]; then
|
|
echo "Liburing not supported on ${ID}$VERSION_ID, disabling"
|
|
INSTALL_LIBURING=false
|
|
fi
|
|
fi
|
|
if [[ $VERSION_ID == 8* ]]; then
|
|
repos+=("https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm")
|
|
repos+=("https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm")
|
|
[[ $ID == centos ]] && repos+=("centos-release-ceph-nautilus.noarch")
|
|
# Add PowerTools needed for install CUnit-devel in Centos8
|
|
if [[ $ID == centos ]]; then
|
|
is_repo "PowerTools" && enable+=("PowerTools")
|
|
is_repo "powertools" && enable+=("powertools")
|
|
fi
|
|
fi
|
|
if ((${#repos[@]} > 0)); then
|
|
yum install -y "${repos[@]}" yum-utils
|
|
yum-config-manager --enable "${enable[@]}"
|
|
fi
|
|
# Potential dependencies can be needed from other RHEL repos, enable them
|
|
if [[ $ID == rhel ]]; then
|
|
[[ $VERSION_ID == 7* ]] && sub repos --enable "rhel-*-optional-rpms" --enable "rhel-*-extras-rpms"
|
|
[[ $VERSION_ID == 8* ]] && sub repos --enable codeready-builder-for-rhel-8-x86_64-rpms
|
|
fi
|
|
fi
|
|
|
|
# Minimal install
|
|
# workaround for arm: ninja fails with dep on skbuild python module
|
|
if [ "$(uname -m)" = "aarch64" ]; then
|
|
pip3 install scikit-build
|
|
if echo "$ID $VERSION_ID" | grep -E -q 'centos 7'; then
|
|
# by default centos 7.x uses cmake 2.8 while ninja requires 3.6 or higher
|
|
yum install -y cmake3
|
|
# cmake3 is installed as /usr/bin/cmake3 while ninja directly calls `cmake`. Create a soft link
|
|
# as a workaround
|
|
mkdir -p /tmp/bin/
|
|
ln -s /usr/bin/cmake3 /tmp/bin/cmake > /dev/null 2>&1 || true
|
|
export PATH=/tmp/bin:$PATH
|
|
fi
|
|
fi
|
|
|
|
yum install -y gcc gcc-c++ make cmake CUnit-devel libaio-devel openssl-devel \
|
|
libuuid-devel libiscsi-devel ncurses-devel json-c-devel libcmocka-devel
|
|
if echo "$ID $VERSION_ID" | grep -E -q 'centos 8|rhel 8'; then
|
|
yum install -y python36
|
|
#Create hard link to use in SPDK as python
|
|
if [[ ! -e /usr/bin/python && -e /etc/alternatives/python3 ]]; then
|
|
ln -s /etc/alternatives/python3 /usr/bin/python
|
|
fi
|
|
else
|
|
yum install -y python
|
|
fi
|
|
yum install -y python3-pip
|
|
pip3 install ninja
|
|
pip3 install meson
|
|
pip3 install pyelftools
|
|
pip3 install ijson
|
|
pip3 install python-magic
|
|
|
|
# Additional dependencies for SPDK CLI - not available in rhel and centos
|
|
if ! echo "$ID $VERSION_ID" | grep -E -q 'rhel 7|centos 7'; then
|
|
yum install -y python3-configshell python3-pexpect
|
|
fi
|
|
# Additional dependencies for ISA-L used in compression
|
|
yum install -y autoconf automake libtool help2man
|
|
# Additional dependencies for DPDK
|
|
yum install -y numactl-devel nasm
|
|
# Additional dependencies for USDT
|
|
yum install -y systemtap-sdt-devel
|
|
if [[ $INSTALL_DEV_TOOLS == "true" ]]; then
|
|
# Tools for developers
|
|
if echo "$ID $VERSION_ID" | grep -E -q 'centos 8'; then
|
|
yum install -y python3-pycodestyle
|
|
echo "Centos 8 does not have lcov and ShellCheck dependencies"
|
|
else
|
|
yum install -y python-pycodestyle lcov ShellCheck
|
|
fi
|
|
yum install -y git astyle sg3_utils pciutils libabigail bash-completion ruby-devel
|
|
fi
|
|
if [[ $INSTALL_PMEM == "true" ]]; then
|
|
# Additional dependencies for building pmem based backends
|
|
yum install -y libpmemblk-devel || true
|
|
yum install -y libpmemobj-devel || true
|
|
fi
|
|
if [[ $INSTALL_FUSE == "true" ]]; then
|
|
# Additional dependencies for FUSE and NVMe-CUSE
|
|
yum install -y fuse3-devel
|
|
fi
|
|
if [[ $INSTALL_RDMA == "true" ]]; then
|
|
# Additional dependencies for RDMA transport in NVMe over Fabrics
|
|
yum install -y libibverbs-devel librdmacm-devel
|
|
fi
|
|
if [[ $INSTALL_DOCS == "true" ]]; then
|
|
# Additional dependencies for building docs
|
|
yum install -y mscgen || echo "Warning: couldn't install mscgen via yum. Please install mscgen manually."
|
|
yum install -y doxygen graphviz
|
|
fi
|