xref: /spdk/scripts/pkgdep/mariner.sh (revision 6fac5aab5832d709761d179d82103f29c33031ed)
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