mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-07-18 17:33:02 +00:00
Depends on mutiarch feature of ubuntu, we can set up cross build environment easily and achive as good build performance as native build. Fixes: #6557 Signed-off-by: Jianyong Wu <jianyong.wu@arm.com>
79 lines
2.5 KiB
Bash
Executable File
79 lines
2.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# Copyright (c) 2018 Intel Corporation
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
set -o errexit
|
|
set -o nounset
|
|
set -o pipefail
|
|
|
|
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
readonly qemu_builder="${script_dir}/build-qemu.sh"
|
|
|
|
source "${script_dir}/../../scripts/lib.sh"
|
|
source "${script_dir}/../qemu.blacklist"
|
|
|
|
ARCH=${ARCH:-$(uname -m)}
|
|
dpkg_arch=":${ARCH}"
|
|
[ ${dpkg_arch} == ":aarch64" ] && dpkg_arch=":arm64"
|
|
[ ${dpkg_arch} == ":x86_64" ] && dpkg_arch=""
|
|
[ "${dpkg_arch}" == ":ppc64le" ] && dpkg_arch=":ppc64el"
|
|
|
|
packaging_dir="${script_dir}/../.."
|
|
qemu_destdir="/tmp/qemu-static/"
|
|
container_engine="${USE_PODMAN:+podman}"
|
|
container_engine="${container_engine:-docker}"
|
|
|
|
qemu_repo="${qemu_repo:-$1}"
|
|
qemu_version="${qemu_version:-$2}"
|
|
build_suffix="${3:-}"
|
|
qemu_tar="${4:-}"
|
|
|
|
[ -n "$qemu_repo" ] || die "qemu repo not provided"
|
|
[ -n "$qemu_version" ] || die "qemu version not provided"
|
|
|
|
info "Build ${qemu_repo} version: ${qemu_version}"
|
|
|
|
http_proxy="${http_proxy:-}"
|
|
https_proxy="${https_proxy:-}"
|
|
prefix="${prefix:-"/opt/kata"}"
|
|
|
|
CACHE_TIMEOUT=$(date +"%Y-%m-%d")
|
|
|
|
[ -n "${build_suffix}" ] && HYPERVISOR_NAME="kata-qemu-${build_suffix}" || HYPERVISOR_NAME="kata-qemu"
|
|
[ -n "${build_suffix}" ] && PKGVERSION="kata-static-${build_suffix}" || PKGVERSION="kata-static"
|
|
|
|
container_image="${QEMU_CONTAINER_BUILDER:-$(get_qemu_image_name)}"
|
|
[ "${CROSS_BUILD}" == "true" ] && container_image="${container_image}-cross-build"
|
|
|
|
sudo docker pull ${container_image} || (sudo "${container_engine}" build \
|
|
--build-arg CACHE_TIMEOUT="${CACHE_TIMEOUT}" \
|
|
--build-arg http_proxy="${http_proxy}" \
|
|
--build-arg https_proxy="${https_proxy}" \
|
|
--build-arg DPKG_ARCH="${dpkg_arch}" \
|
|
--build-arg ARCH="${ARCH}" \
|
|
"${packaging_dir}" \
|
|
-f "${script_dir}/Dockerfile" \
|
|
-t "${container_image}" && \
|
|
# No-op unless PUSH_TO_REGISTRY is exported as "yes"
|
|
push_to_registry "${container_image}")
|
|
|
|
sudo "${container_engine}" run \
|
|
--rm \
|
|
-i \
|
|
--env BUILD_SUFFIX="${build_suffix}" \
|
|
--env PKGVERSION="${PKGVERSION}" \
|
|
--env QEMU_DESTDIR="${qemu_destdir}" \
|
|
--env QEMU_REPO="${qemu_repo}" \
|
|
--env QEMU_TARBALL="${qemu_tar}" \
|
|
--env PREFIX="${prefix}" \
|
|
--env HYPERVISOR_NAME="${HYPERVISOR_NAME}" \
|
|
--env QEMU_VERSION_NUM="${qemu_version}" \
|
|
--env ARCH="${ARCH}" \
|
|
-v "${repo_root_dir}:/root/kata-containers" \
|
|
-v "${PWD}":/share "${container_image}" \
|
|
bash -c "/root/kata-containers/tools/packaging/static-build/qemu/build-qemu.sh"
|
|
|
|
sudo chown ${USER}:$(id -gn ${USER}) "${PWD}/${qemu_tar}"
|