static-build: Download firecracker instead of building it

There's no reason for us to build firecracker instead of simply
downloading the official released tarball, as tarballs are provided for
the architectures we want to use them.

Fixes: #6770

Signed-off-by: Fabiano Fidêncio <fabiano.fidencio@intel.com>
This commit is contained in:
Fabiano Fidêncio 2023-05-12 21:37:49 +02:00
parent 3bf767cfcd
commit 136e2415da
2 changed files with 22 additions and 19 deletions

View File

@ -377,10 +377,12 @@ install_qemu_snp_experimental() {
# Install static firecracker asset
install_firecracker() {
local firecracker_version=$(get_from_kata_deps "assets.hypervisor.firecracker.version")
install_cached_tarball_component \
"firecracker" \
"${jenkins_url}/job/kata-containers-main-firecracker-$(uname -m)/${cached_artifacts_path}" \
"$(get_from_kata_deps "assets.hypervisor.firecracker.version")" \
"${firecracker_version}" \
"" \
"${final_tarball_name}" \
"${final_tarball_path}" \
@ -390,8 +392,8 @@ install_firecracker() {
"${firecracker_builder}"
info "Install static firecracker"
mkdir -p "${destdir}/opt/kata/bin/"
sudo install -D --owner root --group root --mode 0744 firecracker/firecracker-static "${destdir}/opt/kata/bin/firecracker"
sudo install -D --owner root --group root --mode 0744 firecracker/jailer-static "${destdir}/opt/kata/bin/jailer"
sudo install -D --owner root --group root --mode 0744 release-${firecracker_version}-${ARCH}/firecracker-${firecracker_version}-${ARCH} "${destdir}/opt/kata/bin/firecracker"
sudo install -D --owner root --group root --mode 0744 release-${firecracker_version}-${ARCH}/jailer-${firecracker_version}-${ARCH} "${destdir}/opt/kata/bin/jailer"
}
# Install static cloud-hypervisor asset

View File

@ -14,30 +14,31 @@ source "${script_dir}/../../scripts/lib.sh"
config_dir="${script_dir}/../../scripts/"
firecracker_repo="${firecracker_repo:-}"
firecracker_url="${firecracker_url:-}"
firecracker_dir="firecracker"
firecracker_version="${firecracker_version:-}"
arch=$(uname -m)
if [ -z "$firecracker_repo" ]; then
info "Get firecracker information from runtime versions.yaml"
firecracker_url=$(get_from_kata_deps "assets.hypervisor.firecracker.url")
[ -n "$firecracker_url" ] || die "failed to get firecracker url"
firecracker_repo="${firecracker_url}.git"
fi
[ -n "$firecracker_repo" ] || die "failed to get firecracker repo"
[ -n "$firecracker_url" ] ||firecracker_url=$(get_from_kata_deps "assets.hypervisor.firecracker.url")
[ -n "$firecracker_url" ] || die "failed to get firecracker url"
[ -n "$firecracker_version" ] || firecracker_version=$(get_from_kata_deps "assets.hypervisor.firecracker.version")
[ -n "$firecracker_version" ] || die "failed to get firecracker version"
info "Build ${firecracker_repo} version: ${firecracker_version}"
firecracker_tarball_url="${firecracker_url}/releases/download"
[ -d "${firecracker_dir}" ] || git clone ${firecracker_repo}
cd "${firecracker_dir}"
git fetch
git checkout ${firecracker_version}
sudo ./tools/devtool --unattended build --release
file_name="firecracker-${firecracker_version}-${ARCH}.tgz"
download_url="${firecracker_tarball_url}/${firecracker_version}/${file_name}"
ln -sf ./build/cargo_target/${arch}-unknown-linux-musl/release/firecracker ./firecracker-static
ln -sf ./build/cargo_target/${arch}-unknown-linux-musl/release/jailer ./jailer-static
info "Download firecracker version: ${firecracker_version} from ${download_url}"
curl -o ${file_name} -L $download_url
sha256sum="${file_name}.sha256.txt"
sha256sum_url="${firecracker_tarball_url}/${firecracker_version}/${sha256sum}"
info "Download firecracker ${sha256sum} from ${sha256sum_url}"
curl -o ${sha256sum} -L $sha256sum_url
sha256sum -c ${sha256sum}
tar zxvf ${file_name}