static-build: enable cross build for qemu

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>
This commit is contained in:
Jianyong Wu
2023-04-02 09:25:22 +00:00
committed by Fabiano Fidêncio
parent 35d6d86ab5
commit 7ffc0c1225
3 changed files with 62 additions and 25 deletions

View File

@@ -14,6 +14,12 @@ 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}"
@@ -39,11 +45,14 @@ CACHE_TIMEOUT=$(date +"%Y-%m-%d")
[ -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}" && \
@@ -54,13 +63,14 @@ sudo "${container_engine}" run \
--rm \
-i \
--env BUILD_SUFFIX="${build_suffix}" \
--env HYPERVISOR_NAME="${HYPERVISOR_NAME}" \
--env PKGVERSION="${PKGVERSION}" \
--env QEMU_DESTDIR="${qemu_destdir}" \
--env QEMU_REPO="${qemu_repo}" \
--env QEMU_VERSION="${qemu_version}" \
--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"