Commit 03578a3d authored by Karol Latecki's avatar Karol Latecki Committed by Jim Harris
Browse files

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: default avatarKarol Latecki <karol.latecki@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/466948


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarSeth Howell <seth.howell@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
parent 579d44b0
Loading
Loading
Loading
Loading
+75 −4
Original line number Diff line number Diff line
@@ -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,15 +400,23 @@ 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
    fi
        sudo $PACKAGEMNG upgrade -y
    elif [ $PACKAGEMNG == 'pacman' ]; then
        sudo $PACKAGEMNG -Syu --noconfirm --needed
    fi
fi

if $INSTALL; then
    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