Spdk/scripts/pkgdep/common.sh
Simon A. F. Lund 3bf8f8a39b pkgdep: bump liburing to v2.2
liburing v2.2 provides support for initialization of rings with "big"
submission and completion entries. Big entries allow embedding NVMe
submission and completion entries in the io_ring sqe/cqe and thereby an
enabler of "io_uring_cmd".

xNVMe utilizes the above. xNVMe v0.4.0 "vendored"/bundled liburing 2.2.
However, the bundling of liburing inside the xNVMe library is removed in
v0.5.0 to avoid linker issues. Instead, xNVMe v0.5.0 links liburing on
the system with discovery via pkg-config.

Thus, this change to update the liburing pkgdep to v2.2, in preparation
for upgrading the xNVMe submodule to v0.5.0.

Signed-off-by: Simon A. F. Lund <simon.lund@samsung.com>
Change-Id: Ibbacbcfa675f82257d41790b68c39dd7b1a82908
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/14676
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: Ben Walker <benjamin.walker@intel.com>
2022-10-03 08:43:53 +00:00

122 lines
3.0 KiB
Bash
Executable File

#!/usr/bin/env bash
install_liburing() {
local GIT_REPO_LIBURING=https://github.com/axboe/liburing.git
local liburing_dir=/usr/local/src/liburing
if [[ -d $liburing_dir ]]; then
echo "liburing source already present, not cloning"
else
mkdir -p $liburing_dir
git clone "${GIT_REPO_LIBURING}" "$liburing_dir"
fi
# Use commit we know we can compile against. See #1673 as a reference.
git -C "$liburing_dir" checkout liburing-2.2
(cd "$liburing_dir" && ./configure --libdir=/usr/lib64 && make install)
echo /usr/lib64 > /etc/ld.so.conf.d/spdk-liburing.conf
ldconfig
}
install_shfmt() {
# Fetch version that has been tested
local shfmt_version=3.1.0
local shfmt=shfmt-$shfmt_version
local shfmt_dir=${SHFMT_DIR:-/opt/shfmt}
local shfmt_dir_out=${SHFMT_DIR_OUT:-/usr/bin}
local shfmt_url
local os
local arch
if hash "$shfmt" && [[ $("$shfmt" --version) == "v$shfmt_version" ]]; then
echo "$shfmt already installed"
return 0
fi 2> /dev/null
arch=$(uname -m)
os=$(uname -s)
case "$arch" in
x86_64) arch="amd64" ;;
aarch64) arch="arm" ;;
*)
echo "Not supported arch (${arch:-Unknown}), skipping"
return 0
;;
esac
case "$os" in
Linux) shfmt_url=https://github.com/mvdan/sh/releases/download/v$shfmt_version/shfmt_v${shfmt_version}_linux_${arch} ;;
FreeBSD) shfmt_url=https://github.com/mvdan/sh/releases/download/v$shfmt_version/shfmt_v${shfmt_version}_freebsd_${arch} ;;
*)
echo "Not supported OS (${os:-Unknown}), skipping"
return 0
;;
esac
mkdir -p "$shfmt_dir"
mkdir -p "$shfmt_dir_out"
echo "Fetching ${shfmt_url##*/}"...
local err
if err=$(curl -f -Lo"$shfmt_dir/$shfmt" "$shfmt_url" 2>&1); then
chmod +x "$shfmt_dir/$shfmt"
ln -sf "$shfmt_dir/$shfmt" "$shfmt_dir_out"
else
cat <<- CURL_ERR
* Fetching $shfmt_url failed, $shfmt will not be available for format check.
* Error:
$err
CURL_ERR
return 0
fi
echo "$shfmt installed"
}
install_spdk_bash_completion() {
[[ -e /usr/share/bash-completion/bash_completion ]] || return 0
local compat_dir=/etc/bash_completion.d
mkdir -p "$compat_dir"
if [[ ! -e $compat_dir/spdk ]]; then
cp -v "$scriptsdir/bash-completion/spdk" "$compat_dir"
fi
}
install_markdownlint() {
local git_repo_mdl="https://github.com/markdownlint/markdownlint.git"
local mdl_version="v0.11.0"
if [ ! -d /usr/src/markdownlint ]; then
sudo -E git clone --branch "$mdl_version" "$git_repo_mdl" "/usr/src/markdownlint"
(
cd /usr/src/markdownlint
if ! hash rake &> /dev/null; then
sudo -E gem install rake
fi
if ! hash bundler &> /dev/null; then
sudo -E gem install bundler
fi
sudo -E rake install
)
else
echo "Markdown lint tool already in /usr/src/markdownlint. Not installing"
fi
}
if [[ $INSTALL_DEV_TOOLS == true ]]; then
install_shfmt
install_spdk_bash_completion
if [[ $ID != centos && $ID != rocky && $ID != sles ]]; then
install_markdownlint
else
echo "mdl not supported on $ID, disabling"
fi
fi
if [[ $INSTALL_LIBURING == true ]]; then
install_liburing
fi