Commit 9ebbf3ac authored by Maciej Wawryk's avatar Maciej Wawryk Committed by Tomasz Zawadzki
Browse files

scripts/pkgdep.sh: Add flag for developer tools installation

parent d8aa3ab6
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -52,6 +52,9 @@ git submodule update --init
## Prerequisites

The dependencies can be installed automatically by `scripts/pkgdep.sh`.
The `scripts/pkgdep.sh` script will automatically install the bare minimum
dependencies required to build SPDK.
Use `--help` to see information on installing dependencies for optional components

~~~{.sh}
./scripts/pkgdep.sh
+9 −2
Original line number Diff line number Diff line
@@ -10,13 +10,20 @@ git submodule update --init

# Installing Prerequisites {#getting_started_prerequisites}

The `scripts/pkgdep.sh` script will automatically install the full set of
dependencies required to build and develop SPDK.
The `scripts/pkgdep.sh` script will automatically install the bare minimum
dependencies required to build SPDK.
Use `--help` to see information on installing dependencies for optional components.

~~~{.sh}
sudo scripts/pkgdep.sh
~~~

Option --all will install all dependencies needed by SPDK features.

~~~{.sh}
sudo scripts/pkgdep.sh --all
~~~

# Building {#getting_started_building}

Linux:
+87 −67
Original line number Diff line number Diff line
@@ -11,22 +11,34 @@ function usage()
	echo ""
	echo "$0"
	echo "  -h --help"
	echo "  -a --all"
	echo "  -d --developer-tools        Install tools for developers (code styling, code coverage, etc.)"
	echo ""
	exit 0
}

function install_all_dependencies ()
{
	INSTALL_DEV_TOOLS=true
}

INSTALL_CRYPTO=false
INSTALL_DEV_TOOLS=false

while getopts 'hi-:' optchar; do
while getopts 'adhi-:' optchar; do
	case "$optchar" in
		-)
		case "$OPTARG" in
			help) usage;;
			all) install_all_dependencies;;
			developer-tools) INSTALL_DEV_TOOLS=true;;
			*) echo "Invalid argument '$OPTARG'"
			usage;;
		esac
		;;
	h) usage;;
	a) install_all_dependencies;;
	d) INSTALL_DEV_TOOLS=true;;
	*) echo "Invalid argument '$OPTARG'"
	usage;;
	esac
@@ -39,21 +51,6 @@ rootdir=$(readlink -f $scriptsdir/..)

if [ -s /etc/redhat-release ]; then
	. /etc/os-release

	# Includes Fedora, CentOS 7, RHEL 7
	# Add EPEL repository for CUnit-devel and libunwind-devel
	if echo "$ID $VERSION_ID" | grep -E -q 'rhel 7|centos 7'; then
		if ! rpm --quiet -q epel-release; then
			yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
		fi

		if [ $ID = 'rhel' ]; then
			subscription-manager repos --enable "rhel-*-optional-rpms" --enable "rhel-*-extras-rpms"
		elif [ $ID = 'centos' ]; then
			yum --enablerepo=extras install -y epel-release
		fi
	fi

	# Minimal install
	yum install -y gcc gcc-c++ make CUnit-devel libaio-devel openssl-devel \
		libuuid-devel libiscsi-devel python
@@ -65,11 +62,26 @@ if [ -s /etc/redhat-release ]; then
	yum install -y autoconf automake libtool help2man
	# Additional dependencies for DPDK
	yum install -y numactl-devel nasm
	# Dependencies for developers
	if [[ $INSTALL_DEV_TOOLS == "true" ]]; then
		# Tools for developers
		# Includes Fedora, CentOS 7, RHEL 7
		# Add EPEL repository for CUnit-devel and libunwind-devel
		if echo "$ID $VERSION_ID" | grep -E -q 'rhel 7|centos 7'; then
			if ! rpm --quiet -q epel-release; then
				yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
			fi

			if [[ $ID = 'rhel' ]]; then
				subscription-manager repos --enable "rhel-*-optional-rpms" --enable "rhel-*-extras-rpms"
			elif [[ $ID = 'centos' ]]; then
				yum --enablerepo=extras install -y epel-release
			fi
		fi
		yum install -y git astyle python-pycodestyle lcov \
			sg3_utils pciutils ShellCheck
		# Additional (optional) dependencies for showing backtrace in logs
		yum install -y libunwind-devel || true
	fi
	# Additional dependencies for NVMe over Fabrics
	yum install -y libibverbs-devel librdmacm-devel
	# Additional dependencies for building docs
@@ -83,27 +95,30 @@ elif [ -f /etc/debian_version ]; then
	# Minimal install
	apt-get install -y gcc g++ make libcunit1-dev libaio-dev libssl-dev \
		uuid-dev libiscsi-dev python
	# Additional dependencies for SPDK CLI - not available on older Ubuntus
	apt-get install -y python3-configshell-fb python3-pexpect || echo \
		"Note: Some SPDK CLI dependencies could not be installed."

	# Additional dependencies for DPDK
	apt-get install -y libnuma-dev nasm
	# Additional dependencies for ISA-L used in compression
	apt-get install -y autoconf automake libtool help2man
	# Dependencies for developers
	if [[ $INSTALL_DEV_TOOLS == "true" ]]; then
		# Tools for developers
		apt-get install -y git astyle pep8 lcov clang sg3-utils pciutils shellcheck
		# Additional python style checker not available on ubuntu 16.04 or earlier.
		apt-get install -y pycodestyle || true
		# Additional (optional) dependencies for showing backtrace in logs
		apt-get install -y libunwind-dev || true
		# Additional dependecies for nvmf performance test script
		apt-get install -y python3-paramiko
	fi
	# Additional dependencies for NVMe over Fabrics
	apt-get install -y libibverbs-dev librdmacm-dev
	# Additional dependencies for building docs
	apt-get install -y doxygen mscgen graphviz
	# Additional dependencies for SPDK CLI - not available on older Ubuntus
	apt-get install -y python3-configshell-fb python3-pexpect || echo \
		"Note: Some SPDK CLI dependencies could not be installed."
	# Additional dependencies for FUSE and CUSE
	apt-get install -y libfuse3-dev
	# Additional dependecies for nvmf performance test script
	apt-get install -y python3-paramiko
elif [ -f /etc/SuSE-release ] || [ -f /etc/SUSE-brand ]; then
	# Minimal install
	zypper install -y gcc gcc-c++ make cunit-devel libaio-devel libopenssl-devel \
@@ -112,11 +127,13 @@ elif [ -f /etc/SuSE-release ] || [ -f /etc/SUSE-brand ]; then
	zypper install -y libnuma-devel nasm
	# Additional dependencies for ISA-L used in compression
	zypper install -y autoconf automake libtool help2man
	# Dependencies for developers
	if [[ $INSTALL_DEV_TOOLS == "true" ]]; then
		# Tools for developers
		zypper install -y git-core lcov python-pycodestyle sg3_utils \
			pciutils ShellCheck
		# Additional (optional) dependencies for showing backtrace in logs
		zypper install libunwind-devel || true
	fi
	# Additional dependencies for NVMe over Fabrics
	zypper install -y rdma-core-devel
	# Additional dependencies for building pmem based backends
@@ -130,32 +147,30 @@ elif [ $(uname -s) = "FreeBSD" ] ; then
	pkg install -y gmake cunit openssl git bash misc/e2fsprogs-libuuid python
	# Additional dependencies for ISA-L used in compression
	pkg install -y autoconf automake libtool help2man
	# Dependencies for developers
	if [[ $INSTALL_DEV_TOOLS == "true" ]]; then
		# Tools for developers
		pkg install -y devel/astyle bash py27-pycodestyle \
			misc/e2fsprogs-libuuid sysutils/sg3_utils nasm
	fi
	# Additional dependencies for building docs
	pkg install -y doxygen mscgen graphviz
elif [ -f /etc/arch-release ]; then
	# Install main dependencies
	pacman -Sy --needed --noconfirm gcc make cunit libaio openssl \
		libutil-linux libiscsi python
	# Additional dependencies for SPDK CLI
	pacman -Sy --needed --noconfirm python-pexpect python-pip
	pip install configshell_fb
	# Additional dependencies for DPDK
	pacman -Sy --needed --noconfirm numactl nasm
	# Additional dependencies for ISA-L used in compression
	pacman -Sy --needed --noconfirm autoconf automake libtool help2man

	# Dependencies for developers
	if [[ $INSTALL_DEV_TOOLS == "true" ]]; then
		# Tools for developers
		pacman -Sy --needed --noconfirm git astyle autopep8 \
			clang sg3_utils pciutils shellcheck
		# Additional (optional) dependencies for showing backtrace in logs
		pacman -Sy --needed --noconfirm libunwind
	# Additional dependencies for building docs
	pacman -Sy --needed --noconfirm doxygen graphviz
	# Additional dependencies for SPDK CLI
	pacman -Sy --needed --noconfirm python-pexpect python-pip
	pip install configshell_fb
	# Additional dependencies for FUSE and CUSE
	pacman -Sy --needed --noconfirm fuse3
		#fakeroot needed to instal via makepkg
		pacman -Sy --needed --noconfirm fakeroot
		su - $SUDO_USER -c "pushd /tmp;
@@ -174,6 +189,11 @@ elif [ -f /etc/arch-release ]; then
			makepkg -si --needed --noconfirm;
			cd .. && rm -rf lcov-git;
			popd"
	fi
	# Additional dependencies for building docs
	pacman -Sy --needed --noconfirm doxygen graphviz
	# Additional dependencies for FUSE and CUSE
	pacman -Sy --needed --noconfirm fuse3
	# Additional dependency for building docs
	pacman -S --noconfirm --needed gd ttf-font
	su - $SUDO_USER -c "pushd /tmp;
+1 −1
Original line number Diff line number Diff line
@@ -224,7 +224,7 @@ The following steps are done by the `update.sh` script. It is recommended that y

```
   $ sudo pkg upgrade -f
   $ sudo spdk_repo/spdk/scripts/pkgdep.sh
   $ sudo spdk_repo/spdk/scripts/pkgdep.sh --all
   $ sudo git clone --depth 10 -b releases/11.1.0 https://github.com/freebsd/freebsd.git /usr/src
```

+1 −1
Original line number Diff line number Diff line
@@ -100,7 +100,7 @@ Vagrant.configure(2) do |config|
  if spdk_dir != "none"
    config.vm.synced_folder "#{spdk_dir}", "/home/vagrant/spdk_repo/spdk", type: "rsync", rsync__auto: false
    if install_deps.include? "true"
      config.vm.provision "shell", inline: 'sudo /home/vagrant/spdk_repo/spdk/scripts/pkgdep.sh'
      config.vm.provision "shell", inline: 'sudo /home/vagrant/spdk_repo/spdk/scripts/pkgdep.sh --all'
    end
  end

Loading