vm_setup: Add dedicated source for git repos
Change-Id: I1d4e854cca192a4d3f74a8ec95431be80a2ff261 Signed-off-by: Michal Berger <michalx.berger@intel.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/2523 Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Reviewed-by: Karol Latecki <karol.latecki@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
parent
eb76afe78b
commit
18bc2f70d6
321
test/common/config/pkgdep/git
Normal file
321
test/common/config/pkgdep/git
Normal file
@ -0,0 +1,321 @@
|
||||
function install_refspdk() {
|
||||
local last_release
|
||||
local output_dir
|
||||
local config_params
|
||||
local rootdir
|
||||
|
||||
# Create a reference SPDK build for ABI tests
|
||||
git -C spdk_repo/spdk fetch --tags
|
||||
last_release=$(git -C spdk_repo/spdk tag | sort --version-sort | grep -v rc | tail -n1)
|
||||
git -C spdk_repo/spdk checkout $last_release
|
||||
git -C spdk_repo/spdk submodule update --init
|
||||
output_dir="$HOME/spdk_$(tr . _ < <(tr -d '[:alpha:]' <<< $last_release))"
|
||||
|
||||
cp -r spdk_repo/spdk $output_dir
|
||||
|
||||
cat > $HOME/autorun-spdk.conf <<- EOF
|
||||
SPDK_BUILD_SHARED_OBJECT=1
|
||||
SPDK_TEST_AUTOBUILD=1
|
||||
SPDK_TEST_UNITTEST=1
|
||||
SPDK_TEST_BLOCKDEV=1
|
||||
SPDK_TEST_PMDK=1
|
||||
SPDK_TEST_ISAL=1
|
||||
SPDK_TEST_REDUCE=1
|
||||
SPDK_TEST_CRYPTO=1
|
||||
SPDK_TEST_FTL=1
|
||||
SPDK_TEST_OCF=1
|
||||
SPDK_TEST_RAID5=1
|
||||
SPDK_TEST_RBD=1
|
||||
SPDK_RUN_ASAN=1
|
||||
SPDK_RUN_UBSAN=1
|
||||
EOF
|
||||
|
||||
mkdir -p $HOME/output
|
||||
rootdir="$output_dir"
|
||||
source $HOME/autorun-spdk.conf
|
||||
source $output_dir/test/common/autotest_common.sh
|
||||
|
||||
# Prepare separate, fixed, cmdline for the FreeBSD, Issue #1397.
|
||||
if [[ $OSID == freebsd ]]; then
|
||||
config_params="--enable-debug --enable-werror"
|
||||
config_params+=" --with-idxd --with-fio=/usr/src/fio"
|
||||
config_params+=" --disable-unit-tests --without-isal"
|
||||
MAKE=gmake
|
||||
else
|
||||
config_params="$(get_config_params)"
|
||||
fi
|
||||
$output_dir/configure $(echo $config_params | sed 's/--enable-coverage//g')
|
||||
if [[ $OSID != freebsd ]]; then
|
||||
$MAKE -C $output_dir $MAKEFLAGS include/spdk/config.h
|
||||
CONFIG_OCF_PATH="$output_dir/ocf" $MAKE -C $output_dir/lib/env_ocf $MAKEFLAGS exportlib O=$output_dir/build/ocf.a
|
||||
$output_dir/configure $config_params --with-ocf=$output_dir/build/ocf.a --with-shared
|
||||
fi
|
||||
$MAKE -C $output_dir $MAKEFLAGS
|
||||
}
|
||||
|
||||
function install_qat() {
|
||||
|
||||
install libudev-devel || install libudev-dev
|
||||
|
||||
qat_tarball=$(basename $DRIVER_LOCATION_QAT)
|
||||
kernel_maj=$(uname -r | cut -d'.' -f1)
|
||||
kernel_min=$(uname -r | cut -d'.' -f2)
|
||||
|
||||
sudo modprobe -r qat_c62x
|
||||
if [ -d /QAT ]; then
|
||||
sudo rm -rf /QAT/
|
||||
fi
|
||||
|
||||
sudo mkdir /QAT
|
||||
|
||||
wget $DRIVER_LOCATION_QAT
|
||||
sudo cp $qat_tarball /QAT/
|
||||
(cd /QAT && sudo tar zxof /QAT/$qat_tarball)
|
||||
|
||||
#The driver version 1.7.l.4.3.0-00033 contains a reference to a deprecated function. Remove it so the build won't fail.
|
||||
if [ $kernel_maj -le 4 ]; then
|
||||
if [ $kernel_min -le 17 ]; then
|
||||
sudo sed -i 's/rdtscll(timestamp);/timestamp = rdtsc_ordered();/g' \
|
||||
/QAT/quickassist/utilities/osal/src/linux/kernel_space/OsalServices.c || true
|
||||
fi
|
||||
fi
|
||||
|
||||
(cd /QAT && sudo ./configure --enable-icp-sriov=host && sudo make install)
|
||||
|
||||
if sudo service qat_service start; then
|
||||
echo "failed to start the qat service. Something may be wrong with your device or package."
|
||||
fi
|
||||
}
|
||||
|
||||
function install_rocksdb() {
|
||||
# Rocksdb is installed for use with the blobfs tests.
|
||||
if [ ! -d /usr/src/rocksdb ]; then
|
||||
git clone "${GIT_REPO_ROCKSDB}"
|
||||
git -C ./rocksdb checkout spdk-v5.6.1
|
||||
sudo mv rocksdb /usr/src/
|
||||
else
|
||||
sudo git -C /usr/src/rocksdb checkout spdk-v5.6.1
|
||||
echo "rocksdb already in /usr/src. Not checking out again"
|
||||
fi
|
||||
}
|
||||
|
||||
function install_fio() {
|
||||
# This version of fio is installed in /usr/src/fio to enable
|
||||
# building the spdk fio plugin.
|
||||
local fio_version="fio-3.19"
|
||||
|
||||
if [ ! -d /usr/src/fio ]; then
|
||||
if [ ! -d fio ]; then
|
||||
git clone "${GIT_REPO_FIO}"
|
||||
sudo mv fio /usr/src/
|
||||
else
|
||||
sudo mv fio /usr/src/
|
||||
fi
|
||||
(
|
||||
git -C /usr/src/fio checkout master \
|
||||
&& git -C /usr/src/fio pull \
|
||||
&& git -C /usr/src/fio checkout $fio_version \
|
||||
&& if [ $OSID == 'freebsd' ]; then
|
||||
gmake -C /usr/src/fio -j${jobs} \
|
||||
&& sudo gmake -C /usr/src/fio install
|
||||
else
|
||||
make -C /usr/src/fio -j${jobs} \
|
||||
&& sudo make -C /usr/src/fio install
|
||||
fi
|
||||
)
|
||||
else
|
||||
echo "fio already in /usr/src/fio. Not installing"
|
||||
fi
|
||||
}
|
||||
|
||||
function install_flamegraph() {
|
||||
# Flamegraph is used when printing out timing graphs for the tests.
|
||||
if [ ! -d /usr/local/FlameGraph ]; then
|
||||
git clone "${GIT_REPO_FLAMEGRAPH}"
|
||||
mkdir -p /usr/local
|
||||
sudo mv FlameGraph /usr/local/FlameGraph
|
||||
else
|
||||
echo "flamegraph already installed. Skipping"
|
||||
fi
|
||||
}
|
||||
|
||||
function install_qemu() {
|
||||
# Two versions of QEMU are used in the tests.
|
||||
# Stock QEMU is used for vhost. A special fork
|
||||
# is used to test OCSSDs. Install both.
|
||||
|
||||
|
||||
# Packaged QEMU
|
||||
install qemu-system-x86 qemu-img \
|
||||
|| install qemu-system-x86 qemu-utils \
|
||||
|| install qemu
|
||||
|
||||
# Forked QEMU
|
||||
SPDK_QEMU_BRANCH=spdk-5.0.0
|
||||
mkdir -p qemu
|
||||
if [ ! -d "qemu/$SPDK_QEMU_BRANCH" ]; then
|
||||
git -C ./qemu clone "${GIT_REPO_QEMU}" -b "$SPDK_QEMU_BRANCH" "$SPDK_QEMU_BRANCH"
|
||||
else
|
||||
echo "qemu already checked out. Skipping"
|
||||
fi
|
||||
|
||||
declare -a opt_params=("--prefix=/usr/local/qemu/$SPDK_QEMU_BRANCH")
|
||||
if ((gcc_version >= 9)); then
|
||||
# GCC 9 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.
|
||||
if [[ $INSTALL_TSOCKS == true ]]; then
|
||||
if hash tsocks 2> /dev/null; then
|
||||
opt_params+=("--with-git='tsocks git'")
|
||||
fi
|
||||
fi
|
||||
|
||||
sed -i s@git://git.qemu.org/@https://github.com/qemu/@g qemu/$SPDK_QEMU_BRANCH/.gitmodules
|
||||
sed -i s@git://git.qemu.org/@https://github.com/qemu/@g qemu/$SPDK_QEMU_BRANCH/.git/config
|
||||
sed -i s@git://git.qemu-project.org/@https://github.com/qemu/@g qemu/$SPDK_QEMU_BRANCH/.gitmodules
|
||||
sed -i s@git://git.qemu-project.org/@https://github.com/qemu/@g qemu/$SPDK_QEMU_BRANCH/.git/config
|
||||
# The qemu configure script places several output files in the CWD.
|
||||
(cd qemu/$SPDK_QEMU_BRANCH && ./configure "${opt_params[@]}" --target-list="x86_64-softmmu" --enable-kvm --enable-linux-aio --enable-numa)
|
||||
|
||||
make -C ./qemu/$SPDK_QEMU_BRANCH -j${jobs}
|
||||
sudo make -C ./qemu/$SPDK_QEMU_BRANCH install
|
||||
}
|
||||
|
||||
function install_vpp() {
|
||||
if [ -d /usr/local/src/vpp ]; then
|
||||
echo "vpp already cloned."
|
||||
if [ ! -d /usr/local/src/vpp/build-root ]; then
|
||||
echo "build-root has not been done"
|
||||
echo "remove the $(pwd) and start again"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
git clone "${GIT_REPO_VPP}"
|
||||
git -C ./vpp checkout v19.04.2
|
||||
|
||||
if [ "${OSID}" == 'fedora' ]; then
|
||||
if [ ${OSVERSION} -eq 29 ]; then
|
||||
git -C ./vpp apply ${VM_SETUP_PATH}/patch/vpp/fedora29-fix.patch
|
||||
fi
|
||||
if [ ${OSVERSION} -eq 30 ]; then
|
||||
git -C ./vpp apply ${VM_SETUP_PATH}/patch/vpp/fedora30-fix.patch
|
||||
fi
|
||||
fi
|
||||
|
||||
# Installing required dependencies for building VPP
|
||||
yes | make -C ./vpp install-dep
|
||||
|
||||
make -C ./vpp build -j${jobs}
|
||||
|
||||
sudo mv ./vpp /usr/local/src/vpp-19.04
|
||||
fi
|
||||
}
|
||||
|
||||
function install_nvmecli() {
|
||||
SPDK_NVME_CLI_BRANCH=spdk-1.6
|
||||
if [ ! -d nvme-cli ]; then
|
||||
git clone "${GIT_REPO_SPDK_NVME_CLI}" -b "$SPDK_NVME_CLI_BRANCH"
|
||||
else
|
||||
echo "nvme-cli already checked out. Skipping"
|
||||
fi
|
||||
if [ ! -d "/usr/local/src/nvme-cli" ]; then
|
||||
# Changes required for SPDK are already merged on top of
|
||||
# nvme-cli, however not released yet.
|
||||
# Support for SPDK should be released in nvme-cli >1.11.1
|
||||
git clone "https://github.com/linux-nvme/nvme-cli.git" "nvme-cli-cuse"
|
||||
git -C ./nvme-cli-cuse checkout "e770466615096a6d41f038a28819b00bc3078e1d"
|
||||
make -C ./nvme-cli-cuse
|
||||
sudo mv ./nvme-cli-cuse /usr/local/src/nvme-cli
|
||||
fi
|
||||
}
|
||||
|
||||
function install_libiscsi() {
|
||||
# We currently don't make any changes to the libiscsi repository for our tests, but it is possible that we will need
|
||||
# to later. Cloning from git is just future proofing the machines.
|
||||
if [ ! -d libiscsi ]; then
|
||||
git clone "${GIT_REPO_LIBISCSI}"
|
||||
else
|
||||
echo "libiscsi already checked out. Skipping"
|
||||
fi
|
||||
(cd libiscsi && ./autogen.sh && ./configure --prefix=/usr/local/libiscsi)
|
||||
make -C ./libiscsi -j${jobs}
|
||||
sudo make -C ./libiscsi install
|
||||
}
|
||||
|
||||
function install_git() {
|
||||
install zlib-devel curl-devel
|
||||
tar -xzof <(wget -qO- "$GIT_REPO_GIT")
|
||||
(cd git-${GIT_VERSION} \
|
||||
&& make configure \
|
||||
&& ./configure --prefix=/usr/local/git \
|
||||
&& sudo make -j${jobs} install)
|
||||
sudo sh -c "echo 'export PATH=/usr/local/git/bin:$PATH' >> /etc/bashrc"
|
||||
exec $SHELL
|
||||
}
|
||||
|
||||
GIT_VERSION=2.25.1
|
||||
: ${GIT_REPO_SPDK=https://github.com/spdk/spdk.git}
|
||||
export GIT_REPO_SPDK
|
||||
: ${GIT_REPO_DPDK=https://github.com/spdk/dpdk.git}
|
||||
export GIT_REPO_DPDK
|
||||
: ${GIT_REPO_ROCKSDB=https://review.spdk.io/spdk/rocksdb}
|
||||
export GIT_REPO_ROCKSDB
|
||||
: ${GIT_REPO_FIO=http://git.kernel.dk/fio.git}
|
||||
export GIT_REPO_FIO
|
||||
: ${GIT_REPO_FLAMEGRAPH=https://github.com/brendangregg/FlameGraph.git}
|
||||
export GIT_REPO_FLAMEGRAPH
|
||||
: ${GIT_REPO_QEMU=https://github.com/spdk/qemu}
|
||||
export GIT_REPO_QEMU
|
||||
: ${GIT_REPO_VPP=https://gerrit.fd.io/r/vpp}
|
||||
export GIT_REPO_VPP
|
||||
: ${GIT_REPO_LIBISCSI=https://github.com/sahlberg/libiscsi}
|
||||
export GIT_REPO_LIBISCSI
|
||||
: ${GIT_REPO_SPDK_NVME_CLI=https://github.com/spdk/nvme-cli}
|
||||
export GIT_REPO_SPDK_NVME_CLI
|
||||
: ${GIT_REPO_INTEL_IPSEC_MB=https://github.com/spdk/intel-ipsec-mb.git}
|
||||
export GIT_REPO_INTEL_IPSEC_MB
|
||||
: ${DRIVER_LOCATION_QAT=https://01.org/sites/default/files/downloads//qat1.7.l.4.9.0-00008.tar.gz}
|
||||
export DRIVER_LOCATION_QAT
|
||||
: ${GIT_REPO_GIT=https://github.com/git/git/archive/v${GIT_VERSION}.tar.gz}
|
||||
export GIT_REPO_GIT
|
||||
|
||||
if [[ $ID == centos ]] && (( VERSION_ID == 7 )); then
|
||||
# install proper version of the git first
|
||||
install_git
|
||||
fi
|
||||
|
||||
IFS="," read -ra conf_env <<< "$CONF"
|
||||
for conf in "${conf_env[@]}"; do
|
||||
export "INSTALL_${conf^^}=true"
|
||||
done
|
||||
sources=(install_refspdk)
|
||||
|
||||
if [[ $OS == FreeBSD ]]; then
|
||||
jobs=$(($(sysctl -n hw.ncpu) * 2))
|
||||
else
|
||||
jobs=$(($(nproc) * 2))
|
||||
sources+=(
|
||||
install_libiscsi
|
||||
install_vpp
|
||||
install_nvmecli
|
||||
install_qat
|
||||
install_rocksdb
|
||||
install_flamegraph
|
||||
install_qemu
|
||||
)
|
||||
fi
|
||||
sources+=(install_fio)
|
||||
|
||||
sudo mkdir -p /usr/{,local}/src
|
||||
|
||||
for source in "${sources[@]}"; do
|
||||
source_conf=${source^^}
|
||||
if [[ ${!source_conf} == true ]]; then
|
||||
"$source" &
|
||||
fi
|
||||
done
|
||||
wait
|
Loading…
Reference in New Issue
Block a user