1ca95a718SMichal Berger#!/usr/bin/env bash
2eb53c232Spaul luse#  SPDX-License-Identifier: BSD-3-Clause
3eb53c232Spaul luse#  Copyright (C) 2020 Intel Corporation
40ab4de56SAlexey Marchuk#  Copyright (c) 2022 NVIDIA CORPORATION & AFFILIATES.
5eb53c232Spaul luse#  All rights reserved.
634bc24f1SJim Harris#  Copyright (c) 2022 Dell Inc, or its subsidiaries.
7eb53c232Spaul luse#
8ca95a718SMichal Berger
989d49f77SMichal Bergercase "$VERSION_CODENAME" in
1089d49f77SMichal Berger	bookworm | noble)
1189d49f77SMichal Berger		# These ship with pip which enforces PEP668
1289d49f77SMichal Berger		apt-get install -y python3-venv
1389d49f77SMichal Berger		virtdir=${PIP_VIRTDIR:-/var/spdk/dependencies/pip}
1489d49f77SMichal Berger
1589d49f77SMichal Berger		mkdir --p "$virtdir"
1689d49f77SMichal Berger		pkgdep_toolpath pip "$virtdir/bin"
1789d49f77SMichal Berger
1889d49f77SMichal Berger		pip3() (
1989d49f77SMichal Berger			if [[ ! -e $virtdir/bin/activate ]]; then
2089d49f77SMichal Berger				python3 -m venv --upgrade-deps --system-site-packages "$virtdir"
2189d49f77SMichal Berger			fi
2289d49f77SMichal Berger			source "$virtdir/bin/activate"
2389d49f77SMichal Berger			"$virtdir/bin/pip3" "$@"
2489d49f77SMichal Berger		)
25b10f50b0SMichal Berger
26b10f50b0SMichal Berger		apt-get install -y pkgconf
2789d49f77SMichal Berger		;;
28b10f50b0SMichal Berger	*)
29b10f50b0SMichal Berger		apt-get install -y pkg-config
30b10f50b0SMichal Berger		;;
3189d49f77SMichal Bergeresac
3289d49f77SMichal Berger
336f4e195fSMichal Bergerapt-get install -y gcc g++ make libcunit1-dev libaio-dev libssl-dev libjson-c-dev libcmocka-dev uuid-dev libiscsi-dev \
346f4e195fSMichal Berger	libkeyutils-dev libncurses5-dev libncursesw5-dev python3 python3-pip python3-dev unzip libfuse3-dev patchelf
356f4e195fSMichal Berger
36ca95a718SMichal Bergerpip3 install ninja
37ed1571eeSMichal Bergerpip3 install meson
38738cdf14SKarol Lateckipip3 install pyelftools
39597688b2SKonrad Sztyberpip3 install ijson
405d5d9cbbSKonrad Sztyberpip3 install python-magic
41509241ceSKonrad Sztyberpip3 install grpcio
42509241ceSKonrad Sztyberpip3 install grpcio-tools
43d2db3959SKonrad Sztyberpip3 install pyyaml
44da094053SEugene Kobyakpip3 install Jinja2
45b538e6efSEugene Kobyakpip3 install tabulate
46ed1571eeSMichal Berger# Additional dependencies for SPDK CLI
47ed1571eeSMichal Bergerapt-get install -y python3-configshell-fb python3-pexpect
48ca95a718SMichal Berger
49ca95a718SMichal Berger# Additional dependencies for DPDK
50ed1571eeSMichal Bergerapt-get install -y nasm libnuma-dev
51ca95a718SMichal Berger# Additional dependencies for ISA-L used in compression
52ca95a718SMichal Bergerapt-get install -y autoconf automake libtool help2man
535a1c74bfSJim Harris# Additional dependencies for USDT
545a1c74bfSJim Harrisapt-get install -y systemtap-sdt-dev
55ca95a718SMichal Bergerif [[ $INSTALL_DEV_TOOLS == "true" ]]; then
56ca95a718SMichal Berger	# Tools for developers
57ed1571eeSMichal Berger	apt-get install -y git astyle lcov clang sg3-utils pciutils shellcheck \
585e75b913SMichal Berger		abigail-tools bash-completion ruby-dev pycodestyle bundler rake
591ff3715dSJosh Soref	# Additional dependencies for nvmf performance test script
60ca95a718SMichal Berger	apt-get install -y python3-paramiko
61ca95a718SMichal Bergerfi
62ca95a718SMichal Bergerif [[ $INSTALL_PMEM == "true" ]]; then
63ca95a718SMichal Berger	# Additional dependencies for building pmem based backends
64ed1571eeSMichal Berger	apt-get install -y libpmem-dev libpmemblk-dev libpmemobj-dev
65ca95a718SMichal Bergerfi
668a5d487dSMykola Golubif [[ $INSTALL_RBD == "true" ]]; then
678a5d487dSMykola Golub	# Additional dependencies for RBD bdev in NVMe over Fabrics
688a5d487dSMykola Golub	apt-get install -y librados-dev librbd-dev
698a5d487dSMykola Golubfi
70ca95a718SMichal Bergerif [[ $INSTALL_RDMA == "true" ]]; then
71ca95a718SMichal Berger	# Additional dependencies for RDMA transport in NVMe over Fabrics
72ca95a718SMichal Berger	apt-get install -y libibverbs-dev librdmacm-dev
73ca95a718SMichal Bergerfi
74ca95a718SMichal Bergerif [[ $INSTALL_DOCS == "true" ]]; then
75ca95a718SMichal Berger	# Additional dependencies for building docs
76ca95a718SMichal Berger	apt-get install -y doxygen mscgen graphviz
77ca95a718SMichal Bergerfi
7834bc24f1SJim Harris# Additional dependencies for Avahi
7934bc24f1SJim Harrisif [[ $INSTALL_AVAHI == "true" ]]; then
8034bc24f1SJim Harris	# Additional dependencies for Avahi
8134bc24f1SJim Harris	apt-get install -y libavahi-client-dev
8234bc24f1SJim Harrisfi
8344dcf4fbSTomasz Zawadzkiif [[ $INSTALL_IDXD == "true" ]]; then
8444dcf4fbSTomasz Zawadzki	# accel-config-devel is required for kernel IDXD implementation used in DSA accel module
8544dcf4fbSTomasz Zawadzki	if [[ $ID == "ubuntu" && ${VERSION_ID:0:2} -ge "23" ]]; then
8644dcf4fbSTomasz Zawadzki		apt-get install -y libaccel-config-dev
8744dcf4fbSTomasz Zawadzki	else
8844dcf4fbSTomasz Zawadzki		echo "libaccel-config is only present on Ubuntu 23.04 or higher."
8944dcf4fbSTomasz Zawadzki	fi
9044dcf4fbSTomasz Zawadzkifi
916fac5aabSYankun Liif [[ $INSTALL_LZ4 == "true" ]]; then
926fac5aabSYankun Li	apt-get install -y liblz4-dev
936fac5aabSYankun Lifi
94