mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-07-31 15:25:26 +00:00
Based on messense/rust-musl-cross which offer cross build musl lib environment to cross compile virtiofsd. Fixes: #6557 Signed-off-by: Jianyong Wu <jianyong.wu@arm.com>
98 lines
2.1 KiB
Bash
Executable File
98 lines
2.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# Copyright (c) 2022 Intel Corporation
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
set -o errexit
|
|
set -o nounset
|
|
set -o pipefail
|
|
|
|
ARCH=${ARCH:-$(uname -m)}
|
|
ARCH_LIBC=""
|
|
LIBC=""
|
|
|
|
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
source "${script_dir}/../../scripts/lib.sh"
|
|
|
|
virtiofsd_repo="${virtiofsd_repo:-}"
|
|
virtiofsd_version="${virtiofsd_version:-}"
|
|
virtiofsd_zip="${virtiofsd_zip:-}"
|
|
|
|
[ -n "$virtiofsd_repo" ] || die "failed to get virtiofsd repo"
|
|
[ -n "$virtiofsd_version" ] || die "failed to get virtiofsd version"
|
|
[ -n "${virtiofsd_zip}" ] || die "failed to get virtiofsd binary URL"
|
|
|
|
[ -d "virtiofsd" ] && rm -r virtiofsd
|
|
|
|
pull_virtiofsd_released_binary() {
|
|
if [ "${ARCH}" != "x86_64" ]; then
|
|
info "Only x86_64 binaries are distributed as part of the virtiofsd releases" && return 1
|
|
fi
|
|
info "Download virtiofsd version: ${virtiofsd_version}"
|
|
|
|
mkdir -p virtiofsd
|
|
|
|
pushd virtiofsd
|
|
curl --fail -L ${virtiofsd_zip} -o virtiofsd.zip || return 1
|
|
unzip virtiofsd.zip
|
|
mv -f target/x86_64-unknown-linux-musl/release/virtiofsd virtiofsd
|
|
chmod +x virtiofsd
|
|
rm -rf target
|
|
rm virtiofsd.zip
|
|
popd
|
|
}
|
|
|
|
init_env() {
|
|
source "$HOME/.cargo/env"
|
|
|
|
extra_rust_flags=" -C link-self-contained=yes"
|
|
case ${ARCH} in
|
|
"aarch64")
|
|
LIBC="musl"
|
|
ARCH_LIBC=""
|
|
;;
|
|
"ppc64le")
|
|
LIBC="gnu"
|
|
ARCH="powerpc64le"
|
|
ARCH_LIBC=${ARCH}-linux-${LIBC}
|
|
extra_rust_flags=""
|
|
;;
|
|
"s390x")
|
|
LIBC="gnu"
|
|
ARCH_LIBC=${ARCH}-linux-${LIBC}
|
|
extra_rust_flags=""
|
|
;;
|
|
"x86_64")
|
|
LIBC="musl"
|
|
ARCH_LIBC=""
|
|
;;
|
|
esac
|
|
|
|
}
|
|
|
|
build_virtiofsd_from_source() {
|
|
echo "build viriofsd from source"
|
|
init_env
|
|
|
|
git clone --depth 1 --branch ${virtiofsd_version} ${virtiofsd_repo} virtiofsd
|
|
pushd virtiofsd
|
|
|
|
export RUSTFLAGS='-C target-feature=+crt-static'${extra_rust_flags}
|
|
export LIBSECCOMP_LINK_TYPE=static
|
|
export LIBSECCOMP_LIB_PATH=/usr/lib/${ARCH_LIBC}
|
|
export LIBCAPNG_LINK_TYPE=static
|
|
export LIBCAPNG_LIB_PATH=/usr/lib/${ARCH_LIBC}
|
|
|
|
cargo build --release --target ${ARCH}-unknown-linux-${LIBC}
|
|
|
|
binary=$(find ./ -name virtiofsd)
|
|
mv -f ${binary} .
|
|
chmod +x virtiofsd
|
|
|
|
popd
|
|
}
|
|
|
|
pull_virtiofsd_released_binary || build_virtiofsd_from_source
|