vm_setup: Make vm_setup.sh to use specific source for package managers

Change-Id: I8b0ab4255f278090a3d4153463d78f620f9f2d31
Signed-off-by: Michal Berger <michalx.berger@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/2525
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Karol Latecki <karol.latecki@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
This commit is contained in:
Michal Berger 2020-05-18 17:20:37 +02:00 committed by Tomasz Zawadzki
parent aede72ef43
commit 585c9298e4

View File

@ -27,6 +27,10 @@ INSTALL=false
CONF="rocksdb,fio,flamegraph,tsocks,qemu,vpp,libiscsi,nvmecli,qat,refspdk"
gcc_version=$(gcc -dumpversion) gcc_version=${gcc_version%%.*}
if [[ -e /etc/os-release ]]; then
source /etc/os-release
fi
if [ $(uname -s) == "FreeBSD" ]; then
OSID="freebsd"
OSVERSION=$(freebsd-version | cut -d. -f1)
@ -344,26 +348,24 @@ function usage() {
exit 0
}
vmsetupdir=$(readlink -f "$(dirname "$0")")
rootdir=$(readlink -f "$vmsetupdir/../../../")
managers=("$vmsetupdir/pkgdep/"*)
# Get package manager #
if hash yum &> /dev/null; then
PACKAGEMNG=yum
source "$vmsetupdir/pkgdep/yum"
elif hash dnf &> /dev/null; then
PACKAGEMNG=dnf
source "$vmsetupdir/pkgdep/dnf"
elif hash apt-get &> /dev/null; then
PACKAGEMNG=apt-get
source "$vmsetupdir/pkgdep/apt-get"
elif hash pacman &> /dev/null; then
PACKAGEMNG=pacman
source "$vmsetupdir/pkgdep/pacman"
elif hash pkg &> /dev/null; then
PACKAGEMNG=pkg
source "$vmsetupdir/pkgdep/pkg"
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'
echo "Supported package manager not found. Script supports:"
printf ' * %s\n' "${managers[@]##*/}"
fi
# Parse input arguments #
@ -437,278 +439,13 @@ else
fi
if $UPGRADE; then
if [ $PACKAGEMNG == 'yum' ]; then
sudo $PACKAGEMNG upgrade -y
elif [ $PACKAGEMNG == 'dnf' ]; then
sudo $PACKAGEMNG upgrade -y
elif [ $PACKAGEMNG == 'apt-get' ]; then
sudo $PACKAGEMNG update
sudo $PACKAGEMNG upgrade -y
elif [ $PACKAGEMNG == 'pacman' ]; then
sudo $PACKAGEMNG -Syu --noconfirm --needed
elif [ $PACKAGEMNG == 'pkg' ]; then
sudo $PACKAGEMNG upgrade -y
fi
upgrade
fi
if $INSTALL; then
if [ "${OSID} ${OSVERSION}" == 'centos 8' ]; then
#During install using vm_setup.sh there is error with AppStream, to fix it we need to refresh yum
sudo yum update -y --refresh
fi
sudo spdk_repo/spdk/scripts/pkgdep.sh --all
if [ $PACKAGEMNG == 'pkg' ]; then
sudo pkg install -y pciutils \
jq \
gdb \
fio \
p5-extutils-pkgconfig \
libtool \
flex \
bison \
gdisk \
socat \
sshpass \
py37-pandas \
wget
elif [ $PACKAGEMNG == 'yum' ]; then
sudo yum install -y pciutils \
valgrind \
jq \
nvme-cli \
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 \
rpm-build \
iptables \
clang-analyzer \
bc \
kernel-modules-extra \
systemd-devel \
python3 \
wget
sudo yum install -y nbd || {
wget -O nbd.rpm https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/n/nbd-3.14-2.el7.x86_64.rpm
sudo yum install -y nbd.rpm
}
elif [ $PACKAGEMNG == 'dnf' ]; then
if echo $CONF | grep -q tsocks; then
# currently, tsocks package is retired in fedora 31, so don't exit in case
# installation failed
# FIXME: Review when fedora starts to successfully build this package again.
sudo dnf install -y tsocks || echo "Installation of the tsocks package failed, proxy may not be available"
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 \
libabigail \
elfutils-libelf-devel \
flex \
bison \
targetcli \
perl-Switch \
librdmacm-utils \
libibverbs-utils \
gdisk \
socat \
sshfs \
sshpass \
python3-pandas \
btrfs-progs \
rpm-build \
iptables \
clang-analyzer \
bc \
kernel-modules-extra \
systemd-devel \
smartmontools \
wget
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 rdma-core; then
echo "Package rdma-core is avaliable at Ubuntu 18 [universe] repositorium" >&2
sudo apt-get install -y rdmacm-utils
sudo apt-get install -y ibverbs-utils
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 clang-tools; then
echo "Package clang-tools is available at Ubuntu 18 [universe] repositorium" >&2
fi
if ! sudo apt-get install -y --no-install-suggests --no-install-recommends 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
# On Ubuntu 20.04 (focal) btrfs-tools are available under different name - btrfs-progs
if ! sudo apt-get install -y btrfs-tools; then
sudo apt-get install -y btrfs-progs
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 \
gdisk \
socat \
sshfs \
sshpass \
python3-pandas \
bc \
smartmontools \
wget
# rpm-build is not used
# iptables installed by default
elif [ $PACKAGEMNG == 'pacman' ]; then
if echo $CONF | grep -q tsocks; then
sudo pacman -Sy --noconfirm --needed tsocks
fi
sudo pacman -Sy --noconfirm --needed valgrind \
jq \
nvme-cli \
ceph \
gdb \
fio \
linux-headers \
gflags \
autoconf \
automake \
libtool \
libutil-linux \
libiscsi \
open-isns \
glib2 \
pixman \
flex \
bison \
elfutils \
libelf \
astyle \
gptfdisk \
socat \
sshfs \
sshpass \
python-pandas \
btrfs-progs \
iptables \
clang \
bc \
perl-switch \
open-iscsi \
smartmontools \
parted \
wget
# TODO:
# These are either missing or require some other installation method
# than pacman:
# librbd-devel
# perl-open
# targetcli
else
echo "Package manager is undefined, skipping INSTALL step"
fi
if [ "${OSID} ${OSVERSION}" == 'centos 7' ]; then
install_git
fi
sudo "$rootdir/scripts/pkgdep.sh" --all
pre_install
install "${packages[@]}"
fi
mkdir -p spdk_repo/output || echo "Can not create spdk_repo/output directory."