From 03578a3d256d2e98793e29eecd06dfaca2d6c92e Mon Sep 17 00:00:00 2001 From: Karol Latecki Date: Fri, 30 Aug 2019 16:12:54 +0200 Subject: [PATCH] scripts/vm_setup: add Arch Linux test dependencies install Dependencies install with -i option works OK. Additional dependencies with -t option: - rocksdb - OK - librxe - OK - iscsi - OK - ocf - OK - flamegraph - OK - tsocks - OK - nvmecli - OK - fio - compilation errors on version 3.3 OK if updated to 3.15 - qemu - OK, but need to disable some error warnings: -Wno-error=stringop-truncation -Wno-error=deprecated-declarations -Wno-error=incompatible-pointer-types -Wno-error=format-truncation - qat - not run - vpp - not run - libiscsi - compilation errors Change-Id: Ifde26c1f1d35c8fe06e18ddba33fe2d054b6d2cf Signed-off-by: Karol Latecki Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/466948 Tested-by: SPDK CI Jenkins Reviewed-by: Ben Walker Reviewed-by: Seth Howell Reviewed-by: Jim Harris --- test/common/config/vm_setup.sh | 79 ++++++++++++++++++++++++++++++++-- 1 file changed, 75 insertions(+), 4 deletions(-) diff --git a/test/common/config/vm_setup.sh b/test/common/config/vm_setup.sh index c19b1a0c8f..9fe22da0d4 100755 --- a/test/common/config/vm_setup.sh +++ b/test/common/config/vm_setup.sh @@ -150,6 +150,14 @@ function install_fio() if echo $CONF | grep -q fio; then # This version of fio is installed in /usr/src/fio to enable # building the spdk fio plugin. + local fio_version="fio-3.3" + + # Change version on Arch Linux, 3.3 does not compile + # with gcc 9 + if [ $PACKAGEMNG == 'pacman' ]; then + fio_version="fio-3.15" + fi + if [ ! -d /usr/src/fio ]; then if [ ! -d fio ]; then git clone "${GIT_REPO_FIO}" @@ -160,7 +168,7 @@ function install_fio() ( git -C /usr/src/fio checkout master && git -C /usr/src/fio pull && - git -C /usr/src/fio checkout fio-3.3 && + git -C /usr/src/fio checkout $fio_version && make -C /usr/src/fio -j${jobs} && sudo make -C /usr/src/fio install ) @@ -196,6 +204,8 @@ function install_qemu() sudo dnf install -y qemu-system-x86 qemu-img elif [ "$PACKAGEMNG" = "apt-get" ]; then sudo apt-get install -y qemu-system-x86 qemu-img + elif [ "$PACKAGEMNG" = "pacman" ]; then + sudo pacman -Sy --needed --noconfirm qemu fi # Forked QEMU @@ -208,6 +218,11 @@ function install_qemu() fi declare -a opt_params=("--prefix=/usr/local/qemu/$SPDK_QEMU_BRANCH") + if [ "$PACKAGEMNG" = "pacman" ]; then + # GCC 9 on ArchLinux fails to compile Qemu due to some old warnings which were not detected by older versions. + opt_params+=("--extra-cflags='-Wno-error=stringop-truncation -Wno-error=deprecated-declarations -Wno-error=incompatible-pointer-types -Wno-error=format-truncation'") + opt_params+=("--disable-glusterfs") + fi # Most tsocks proxies rely on a configuration file in /etc/tsocks.conf. # If using tsocks, please make sure to complete this config before trying to build qemu. @@ -319,6 +334,8 @@ if hash dnf &>/dev/null; then PACKAGEMNG=dnf elif hash apt-get &>/dev/null; then PACKAGEMNG=apt-get +elif hash pacman &>/dev/null; then + PACKAGEMNG=pacman else echo 'Supported package manager not found. Script supports "dnf" and "apt-get".' fi @@ -383,14 +400,22 @@ cd ~ jobs=$(($(nproc)*2)) if $UPGRADE; then - if [ $PACKAGEMNG == 'apt-get' ]; then + if [ $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 fi - sudo $PACKAGEMNG upgrade -y fi if $INSTALL; then - sudo $PACKAGEMNG install -y git + if [ $PACKAGEMNG == 'pacman' ]; then + sudo $PACKAGEMNG -Sy --needed --noconfirm git + else + sudo $PACKAGEMNG install -y git + fi fi mkdir -p spdk_repo/output @@ -526,6 +551,52 @@ if $INSTALL; then # 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 + + # 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