182c64b67SKanika Nema#!/usr/bin/env bash 282c64b67SKanika Nema 382c64b67SKanika Nema# SPDX-License-Identifier: BSD-3-Clause 482c64b67SKanika Nema# All rights reserved. 582c64b67SKanika Nema 682c64b67SKanika Nemaadditional_dependencies() { 782c64b67SKanika Nema # Additional dependencies for SPDK CLI 882c64b67SKanika Nema tdnf install -y python3-pexpect 982c64b67SKanika Nema # Additional dependencies for ISA-L used in compression 1082c64b67SKanika Nema tdnf install -y help2man 1182c64b67SKanika Nema # Additional dependencies for DPDK 1282c64b67SKanika Nema if [[ "$(uname -m)" != "aarch64" ]]; then 1382c64b67SKanika Nema tdnf install -y nasm 1482c64b67SKanika Nema fi 1582c64b67SKanika Nema tdnf install -y libnuma-devel 1682c64b67SKanika Nema # Additional dependencies for USDT 1782c64b67SKanika Nema tdnf install -y systemtap-sdt-devel 1882c64b67SKanika Nema if [[ $INSTALL_DEV_TOOLS == "true" ]]; then 1982c64b67SKanika Nema # Tools for developers 2082c64b67SKanika Nema devtool_pkgs=(git sg3_utils pciutils bash-completion ruby-devel) 2182c64b67SKanika Nema devtool_pkgs+=(gcovr python3-pycodestyle) 2282c64b67SKanika Nema tdnf install -y "${devtool_pkgs[@]}" 2382c64b67SKanika Nema fi 2482c64b67SKanika Nema if [[ $INSTALL_PMEM == "true" ]]; then 2582c64b67SKanika Nema # Additional dependencies for building pmem based backends 2682c64b67SKanika Nema tdnf install -y libpmemobj-devel || true 2782c64b67SKanika Nema fi 2882c64b67SKanika Nema if [[ $INSTALL_FUSE == "true" ]]; then 2982c64b67SKanika Nema # Additional dependencies for FUSE and NVMe-CUSE 3082c64b67SKanika Nema tdnf install -y fuse3-devel 3182c64b67SKanika Nema fi 3282c64b67SKanika Nema if [[ $INSTALL_RBD == "true" ]]; then 3382c64b67SKanika Nema # Additional dependencies for RBD bdev in NVMe over Fabrics 3482c64b67SKanika Nema tdnf install -y librados-devel librbd-devel 3582c64b67SKanika Nema fi 3682c64b67SKanika Nema if [[ $INSTALL_RDMA == "true" ]]; then 3782c64b67SKanika Nema # Additional dependencies for RDMA transport in NVMe over Fabrics 3882c64b67SKanika Nema tdnf install -y libibverbs librdmacm 3982c64b67SKanika Nema fi 4082c64b67SKanika Nema if [[ $INSTALL_DOCS == "true" ]]; then 4182c64b67SKanika Nema # Additional dependencies for building docs 4282c64b67SKanika Nema tdnf install -y mscgen || echo "Warning: couldn't install mscgen via tdnf. Please install mscgen manually." 4382c64b67SKanika Nema tdnf install -y doxygen graphviz 4482c64b67SKanika Nema fi 4582c64b67SKanika Nema if [[ $INSTALL_DAOS == "true" ]]; then 4682c64b67SKanika Nema echo "Unsupported. Skipping installation of DAOS bdev dependencies." 4782c64b67SKanika Nema fi 4882c64b67SKanika Nema # Additional dependencies for Avahi 4982c64b67SKanika Nema if [[ $INSTALL_AVAHI == "true" ]]; then 5082c64b67SKanika Nema # Additional dependencies for Avahi 5182c64b67SKanika Nema tdnf install -y avahi-devel 5282c64b67SKanika Nema fi 53*6fac5aabSYankun Li if [[ $INSTALL_LZ4 == "true" ]]; then 54*6fac5aabSYankun Li tdnf install -y liblz4 55*6fac5aabSYankun Li fi 5682c64b67SKanika Nema} 5782c64b67SKanika Nema 5882c64b67SKanika Nematdnf install -y ca-certificates build-essential 5982c64b67SKanika Nematdnf install -y CUnit-devel \ 6082c64b67SKanika Nema clang \ 6182c64b67SKanika Nema clang-devel \ 6282c64b67SKanika Nema cmake \ 6382c64b67SKanika Nema json-c-devel \ 6482c64b67SKanika Nema libaio-devel \ 6582c64b67SKanika Nema libcmocka-devel \ 6682c64b67SKanika Nema libiscsi-devel \ 6782c64b67SKanika Nema libuuid-devel \ 6882c64b67SKanika Nema ncurses-devel \ 6982c64b67SKanika Nema openssl-devel \ 7082c64b67SKanika Nema procps-ng \ 7182c64b67SKanika Nema python \ 7282c64b67SKanika Nema python3-devel \ 7382c64b67SKanika Nema python3-pip \ 7482c64b67SKanika Nema tar \ 7582c64b67SKanika Nema unzip 7682c64b67SKanika Nema 7782c64b67SKanika Nemaif [[ ! -e /usr/bin/python ]]; then 7882c64b67SKanika Nema ln -s /usr/bin/python3 /usr/bin/python 7982c64b67SKanika Nemafi 8082c64b67SKanika Nema 8182c64b67SKanika Nemapips=( 8282c64b67SKanika Nema meson 8382c64b67SKanika Nema ninja 8482c64b67SKanika Nema pyelftools 8582c64b67SKanika Nema ijson 8682c64b67SKanika Nema python-magic 8782c64b67SKanika Nema pyyaml 8882c64b67SKanika Nema grpcio 8982c64b67SKanika Nema grpcio-tools 90da094053SEugene Kobyak Jinja2 91b538e6efSEugene Kobyak tabulate 9282c64b67SKanika Nema) 9382c64b67SKanika Nema 9482c64b67SKanika Nemaif ((EUID == 0)); then 9582c64b67SKanika Nema cat <<- WARNING 9682c64b67SKanika Nema Warning: Running as root. You may want to install the pip packages 9782c64b67SKanika Nema as a non-root user if you wish to build SPDK as a non-root user. 9882c64b67SKanika Nema 9982c64b67SKanika Nema Required packages: 10082c64b67SKanika Nema $(printf ' %s\n' "${pips[@]}") 10182c64b67SKanika Nema 10282c64b67SKanika Nema WARNING 10382c64b67SKanika Nemafi 10482c64b67SKanika Nema 10582c64b67SKanika Nemapip3 install "${pips[@]}" 10682c64b67SKanika Nema 10782c64b67SKanika Nemaadditional_dependencies 108