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>
122 lines
3.0 KiB
Bash
Executable File
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
|