scripts: vm_setup.sh support INSTALL for Ubuntu

This commit adds functionality for installing most of the packages,
 which were previously installed for Fedora only,
 for Ubuntu as well

Some packages are not going to be installed by the script:
For ubuntu 16
  * libpmempool
  * open-isns-utils
  * perl-open
For ubuntu 18
  * perl-open

Remaining packages deserve their own patches since they are not so easy to
  install on Ubuntu

Change-Id: Ic5b744193ff4df46ab4e4fb3783e0515ccdbfecb
Signed-off-by: Vitaliy Mysak <vitaliy.mysak@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/425388
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Karol Latecki <karol.latecki@intel.com>
Reviewed-by: Paweł Niedźwiecki <pawelx.niedzwiecki@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
Vitaliy Mysak 2018-12-04 19:27:57 +00:00 committed by Ben Walker
parent 6c17f696c1
commit 9e10f5fafa

View File

@ -6,9 +6,9 @@
# The purpose of this script is to provide a simple procedure for spinning up a new
# virtual test environment capable of running our whole test suite. This script, when
# applied to a fresh install of fedora 26 server will install all of the necessary dependencies
# to run almost the complete test suite. The main exception being VHost. Vhost requires the
# configuration of a second virtual machine. instructions for how to configure
# applied to a fresh install of fedora 26 or ubuntu 16,18 server will install all of the
# necessary dependencies to run almost the complete test suite. The main exception being VHost.
# Vhost requires the configuration of a second virtual machine. instructions for how to configure
# that vm are included in the file TEST_ENV_SETUP_README inside this repository
# it is important to enable nesting for vms in kernel command line of your machine for the vhost tests.
@ -26,6 +26,9 @@ UPGRADE=false
INSTALL=false
CONF="librxe,iscsi,rocksdb,fio,flamegraph,tsocks,qemu,vpp,libiscsi,nvmecli,qat,ocf"
OSID=$(source /etc/os-release && echo $ID)
PACKAGEMNG='undefined'
function install_rxe_cfg()
{
if echo $CONF | grep -q librxe; then
@ -301,18 +304,35 @@ function install_ocf()
function usage()
{
echo "This script is intended to automate the environment setup for a fedora linux virtual machine."
echo "This script is intended to automate the environment setup for a linux virtual machine."
echo "Please run this script as your regular user. The script will make calls to sudo as needed."
echo ""
echo "./vm_setup.sh"
echo " -h --help"
echo " -u --upgrade Run dnf upgrade"
echo " -i --install-deps Install dnf based dependencies"
echo " -u --upgrade Run $PACKAGEMNG upgrade"
echo " -i --install-deps Install $PACKAGEMNG based dependencies"
echo " -t --test-conf List of test configurations to enable (${CONF})"
echo " -c --conf-path Path to configuration file"
exit 0
}
# Get package manager #
if hash dnf &>/dev/null; then
PACKAGEMNG=dnf
elif hash apt-get &>/dev/null; then
PACKAGEMNG=apt-get
else
echo 'Supported package manager not found. Script supports "dnf" and "apt-get".'
fi
if [ $PACKAGEMNG == 'apt-get' ] && [ $OSID != 'ubuntu' ]; then
echo 'Located apt-get package manager, but it was tested for Ubuntu only'
fi
if [ $PACKAGEMNG == 'dnf' ] && [ $OSID != 'fedora' ]; then
echo 'Located dnf package manager, but it was tested for Fedora only'
fi
# Parse input arguments #
while getopts 'iuht:c:-:' optchar; do
case "$optchar" in
-)
@ -365,11 +385,14 @@ cd ~
jobs=$(($(nproc)*2))
if $UPGRADE; then
sudo dnf upgrade -y
if [ $PACKAGEMNG == 'apt-get' ]; then
sudo $PACKAGEMNG update
fi
sudo $PACKAGEMNG upgrade -y
fi
if $INSTALL; then
sudo dnf install -y git
sudo $PACKAGEMNG install -y git
fi
mkdir -p spdk_repo/output
@ -386,49 +409,118 @@ git -C spdk_repo/spdk submodule update --init --recursive
if $INSTALL; then
sudo spdk_repo/spdk/scripts/pkgdep.sh
if echo $CONF | grep -q tsocks; then
sudo dnf install -y tsocks
fi
if [ $PACKAGEMNG == 'dnf' ]; then
if echo $CONF | grep -q tsocks; then
sudo dnf install -y tsocks
fi
sudo dnf install -y \
valgrind \
jq \
nvme-cli \
ceph \
gdb \
fio \
librbd-devel \
kernel-devel \
gflags-devel \
libasan \
libubsan \
autoconf \
automake \
libtool \
libmount-devel \
iscsi-initiator-utils \
isns-utils-devel \
pmempool \
perl-open \
glib2-devel \
pixman-devel \
astyle-devel \
elfutils \
elfutils-libelf-devel \
flex \
bison \
targetcli \
perl-Switch \
librdmacm-utils \
libibverbs-utils \
gdisk \
socat \
sshfs \
sshpass \
python3-pandas \
btrfs-progs \
rpm-build \
iptables
sudo dnf install -y \
valgrind \
jq \
nvme-cli \
ceph \
gdb \
fio \
librbd-devel \
kernel-devel \
gflags-devel \
libasan \
libubsan \
autoconf \
automake \
libtool \
libmount-devel \
iscsi-initiator-utils \
isns-utils-devel \
pmempool \
perl-open \
glib2-devel \
pixman-devel \
astyle-devel \
elfutils \
elfutils-libelf-devel \
flex \
bison \
targetcli \
perl-Switch \
librdmacm-utils \
libibverbs-utils \
gdisk \
socat \
sshfs \
sshpass \
python3-pandas \
btrfs-progs \
rpm-build \
iptables
elif [ $PACKAGEMNG == 'apt-get' ]; then
echo "Package perl-open is not available at Ubuntu repositories" >&2
if echo $CONF | grep -q tsocks; then
sudo apt-get install -y tsocks
fi
# asan an ubsan have to be installed together to not mix up gcc versions
if sudo apt-get install -y libasan5; then
sudo apt-get install -y libubsan1
else
echo "Latest libasan5 is not available" >&2
echo " installing libasan2 and corresponding libubsan0" >&2
sudo apt-get install -y libasan2
sudo apt-get install -y libubsan0
fi
if ! sudo apt-get install -y libpmempool1; then
echo "Package libpmempool1 is available at Ubuntu 18 [universe] repositorium" >&2
fi
if ! sudo apt-get install -y open-isns-utils; then
echo "Package open-isns-utils is available at Ubuntu 18 [universe] repositorium" >&2
fi
# Package name for Ubuntu 18 is targetcli-fb but for Ubuntu 16 it's targetcli
if ! sudo apt-get install -y targetcli-fb; then
sudo apt-get install -y targetcli
fi
sudo apt-get install -y \
valgrind \
jq \
nvme-cli \
ceph \
gdb \
fio \
librbd-dev \
linux-headers-generic \
libgflags-dev \
autoconf \
automake \
libtool \
libmount-dev \
open-iscsi \
libglib2.0-dev \
libpixman-1-dev \
astyle \
elfutils \
libelf-dev \
flex \
bison \
libswitch-perl \
rdmacm-utils \
ibverbs-utils \
gdisk \
socat \
sshfs \
sshpass \
python3-pandas \
btrfs-tools
# rpm-build is not used
# iptables installed by default
else
echo "Package manager is undefined, skipping INSTALL step"
fi
fi
sudo mkdir -p /usr/src