mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-09-01 00:46:38 +00:00
Merge pull request #1169 from wainersm/qemu_for_ci-1
packaging/qemu: Build and package completely inside the container
This commit is contained in:
@@ -4,6 +4,7 @@
|
|||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
from ubuntu:20.04
|
from ubuntu:20.04
|
||||||
|
|
||||||
|
ARG QEMU_DESTDIR
|
||||||
ARG QEMU_VIRTIOFS_REPO
|
ARG QEMU_VIRTIOFS_REPO
|
||||||
# commit/tag/branch
|
# commit/tag/branch
|
||||||
ARG QEMU_VIRTIOFS_TAG
|
ARG QEMU_VIRTIOFS_TAG
|
||||||
@@ -55,6 +56,7 @@ RUN git checkout "${QEMU_VIRTIOFS_TAG}"
|
|||||||
ADD scripts/configure-hypervisor.sh /root/configure-hypervisor.sh
|
ADD scripts/configure-hypervisor.sh /root/configure-hypervisor.sh
|
||||||
ADD qemu /root/kata_qemu
|
ADD qemu /root/kata_qemu
|
||||||
ADD scripts/apply_patches.sh /root/apply_patches.sh
|
ADD scripts/apply_patches.sh /root/apply_patches.sh
|
||||||
|
ADD static-build /root/static-build
|
||||||
|
|
||||||
# Apply experimental specific patches
|
# Apply experimental specific patches
|
||||||
# Patches to quick fix virtiofs fork
|
# Patches to quick fix virtiofs fork
|
||||||
@@ -69,7 +71,8 @@ RUN PREFIX="${PREFIX}" /root/configure-hypervisor.sh -s kata-qemu | sed -e 's|--
|
|||||||
|
|
||||||
RUN make -j$(nproc)
|
RUN make -j$(nproc)
|
||||||
RUN make -j$(nproc) virtiofsd
|
RUN make -j$(nproc) virtiofsd
|
||||||
RUN make install DESTDIR=/tmp/qemu-virtiofs-static
|
RUN make install DESTDIR="${QEMU_DESTDIR}"
|
||||||
RUN mv /tmp/qemu-virtiofs-static/"${PREFIX}"/bin/qemu-system-x86_64 /tmp/qemu-virtiofs-static/"${PREFIX}"/bin/qemu-virtiofs-system-x86_64
|
RUN cd "${QEMU_DESTDIR}/${PREFIX}" && \
|
||||||
RUN mv /tmp/qemu-virtiofs-static/"${PREFIX}"/libexec/kata-qemu/virtiofsd /tmp/qemu-virtiofs-static/opt/kata/bin/virtiofsd-dax
|
mv bin/qemu-system-x86_64 bin/qemu-virtiofs-system-x86_64 && \
|
||||||
RUN cd /tmp/qemu-virtiofs-static && tar -czvf "${QEMU_TARBALL}" *
|
mv libexec/kata-qemu/virtiofsd bin/virtiofsd-dax
|
||||||
|
RUN /root/static-build/scripts/qemu-build-post.sh
|
||||||
|
@@ -26,6 +26,7 @@ qemu_virtiofs_repo=$(get_from_kata_deps "assets.hypervisor.qemu-experimental.url
|
|||||||
qemu_virtiofs_tag=$(get_from_kata_deps "assets.hypervisor.qemu-experimental.tag" "${kata_version}")
|
qemu_virtiofs_tag=$(get_from_kata_deps "assets.hypervisor.qemu-experimental.tag" "${kata_version}")
|
||||||
qemu_virtiofs_tar="kata-static-qemu-virtiofsd.tar.gz"
|
qemu_virtiofs_tar="kata-static-qemu-virtiofsd.tar.gz"
|
||||||
qemu_tmp_tar="kata-static-qemu-virtiofsd-tmp.tar.gz"
|
qemu_tmp_tar="kata-static-qemu-virtiofsd-tmp.tar.gz"
|
||||||
|
qemu_destdir="/tmp/qemu-virtiofs-static"
|
||||||
|
|
||||||
info "Build ${qemu_virtiofs_repo} tag: ${qemu_virtiofs_tag}"
|
info "Build ${qemu_virtiofs_repo} tag: ${qemu_virtiofs_tag}"
|
||||||
|
|
||||||
@@ -37,6 +38,7 @@ sudo "${DOCKER_CLI}" build \
|
|||||||
--no-cache \
|
--no-cache \
|
||||||
--build-arg http_proxy="${http_proxy}" \
|
--build-arg http_proxy="${http_proxy}" \
|
||||||
--build-arg https_proxy="${https_proxy}" \
|
--build-arg https_proxy="${https_proxy}" \
|
||||||
|
--build-arg QEMU_DESTDIR="${qemu_destdir}" \
|
||||||
--build-arg QEMU_VIRTIOFS_REPO="${qemu_virtiofs_repo}" \
|
--build-arg QEMU_VIRTIOFS_REPO="${qemu_virtiofs_repo}" \
|
||||||
--build-arg QEMU_VIRTIOFS_TAG="${qemu_virtiofs_tag}" \
|
--build-arg QEMU_VIRTIOFS_TAG="${qemu_virtiofs_tag}" \
|
||||||
--build-arg QEMU_TARBALL="${qemu_virtiofs_tar}" \
|
--build-arg QEMU_TARBALL="${qemu_virtiofs_tar}" \
|
||||||
@@ -46,12 +48,9 @@ sudo "${DOCKER_CLI}" build \
|
|||||||
-t qemu-virtiofs-static
|
-t qemu-virtiofs-static
|
||||||
|
|
||||||
sudo "${DOCKER_CLI}" run \
|
sudo "${DOCKER_CLI}" run \
|
||||||
|
--rm \
|
||||||
-i \
|
-i \
|
||||||
-v "${PWD}":/share qemu-virtiofs-static \
|
-v "${PWD}":/share qemu-virtiofs-static \
|
||||||
mv "/tmp/qemu-virtiofs-static/${qemu_virtiofs_tar}" /share/
|
mv "${qemu_destdir}/${qemu_virtiofs_tar}" /share/
|
||||||
|
|
||||||
sudo chown ${USER}:${USER} "${PWD}/${qemu_virtiofs_tar}"
|
sudo chown ${USER}:${USER} "${PWD}/${qemu_virtiofs_tar}"
|
||||||
|
|
||||||
# Remove blacklisted binaries
|
|
||||||
gzip -d < "${qemu_virtiofs_tar}" | tar --delete --wildcards -f - ${qemu_black_list[*]} | gzip > "${qemu_tmp_tar}"
|
|
||||||
mv -f "${qemu_tmp_tar}" "${qemu_virtiofs_tar}"
|
|
||||||
|
@@ -6,7 +6,7 @@ qemu_black_list=(
|
|||||||
*/bin/qemu-pr-helper
|
*/bin/qemu-pr-helper
|
||||||
*/bin/virtfs-proxy-helper
|
*/bin/virtfs-proxy-helper
|
||||||
*/libexec/kata-qemu/qemu*
|
*/libexec/kata-qemu/qemu*
|
||||||
*/share/*/applications/
|
*/share/*/applications
|
||||||
*/share/*/*.dtb
|
*/share/*/*.dtb
|
||||||
*/share/*/efi-e1000e.rom
|
*/share/*/efi-e1000e.rom
|
||||||
*/share/*/efi-e1000.rom
|
*/share/*/efi-e1000.rom
|
||||||
@@ -15,9 +15,9 @@ qemu_black_list=(
|
|||||||
*/share/*/efi-pcnet.rom
|
*/share/*/efi-pcnet.rom
|
||||||
*/share/*/efi-rtl8139.rom
|
*/share/*/efi-rtl8139.rom
|
||||||
*/share/*/efi-vmxnet3.rom
|
*/share/*/efi-vmxnet3.rom
|
||||||
*/share/*/icons/
|
*/share/*/icons
|
||||||
*/share/*/*.img
|
*/share/*/*.img
|
||||||
*/share/*/keymaps/
|
*/share/*/keymaps
|
||||||
*/share/*/multiboot.bin
|
*/share/*/multiboot.bin
|
||||||
*/share/*/openbios-ppc
|
*/share/*/openbios-ppc
|
||||||
*/share/*/openbios-sparc32
|
*/share/*/openbios-sparc32
|
||||||
|
@@ -4,6 +4,7 @@
|
|||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
from ubuntu:20.04
|
from ubuntu:20.04
|
||||||
|
|
||||||
|
ARG QEMU_DESTDIR
|
||||||
ARG QEMU_REPO
|
ARG QEMU_REPO
|
||||||
# commit/tag/branch
|
# commit/tag/branch
|
||||||
ARG QEMU_VERSION
|
ARG QEMU_VERSION
|
||||||
@@ -55,6 +56,7 @@ RUN git clone https://github.com/qemu/keycodemapdb.git ui/keycodemapdb
|
|||||||
ADD scripts/configure-hypervisor.sh /root/configure-hypervisor.sh
|
ADD scripts/configure-hypervisor.sh /root/configure-hypervisor.sh
|
||||||
ADD qemu /root/kata_qemu
|
ADD qemu /root/kata_qemu
|
||||||
ADD scripts/apply_patches.sh /root/apply_patches.sh
|
ADD scripts/apply_patches.sh /root/apply_patches.sh
|
||||||
|
ADD static-build /root/static-build
|
||||||
|
|
||||||
RUN stable_branch=$(cat VERSION | awk 'BEGIN{FS=OFS="."}{print $1 "." $2 ".x"}') && \
|
RUN stable_branch=$(cat VERSION | awk 'BEGIN{FS=OFS="."}{print $1 "." $2 ".x"}') && \
|
||||||
/root/apply_patches.sh "/root/kata_qemu/patches/${stable_branch}"
|
/root/apply_patches.sh "/root/kata_qemu/patches/${stable_branch}"
|
||||||
@@ -64,5 +66,5 @@ RUN PREFIX="${PREFIX}" /root/configure-hypervisor.sh -s kata-qemu | xargs ./conf
|
|||||||
|
|
||||||
RUN make -j$(nproc)
|
RUN make -j$(nproc)
|
||||||
RUN make -j$(nproc) virtiofsd
|
RUN make -j$(nproc) virtiofsd
|
||||||
RUN make install DESTDIR=/tmp/qemu-static
|
RUN make install DESTDIR="${QEMU_DESTDIR}"
|
||||||
RUN cd /tmp/qemu-static && tar -czvf "${QEMU_TARBALL}" *
|
RUN /root/static-build/scripts/qemu-build-post.sh
|
||||||
|
@@ -16,6 +16,7 @@ source "${script_dir}/../qemu.blacklist"
|
|||||||
packaging_dir="${script_dir}/../.."
|
packaging_dir="${script_dir}/../.."
|
||||||
qemu_tar="kata-static-qemu.tar.gz"
|
qemu_tar="kata-static-qemu.tar.gz"
|
||||||
qemu_tmp_tar="kata-static-qemu-tmp.tar.gz"
|
qemu_tmp_tar="kata-static-qemu-tmp.tar.gz"
|
||||||
|
qemu_destdir="/tmp/qemu-static/"
|
||||||
|
|
||||||
qemu_repo="${qemu_repo:-}"
|
qemu_repo="${qemu_repo:-}"
|
||||||
qemu_version="${qemu_version:-}"
|
qemu_version="${qemu_version:-}"
|
||||||
@@ -45,6 +46,7 @@ sudo docker build \
|
|||||||
--no-cache \
|
--no-cache \
|
||||||
--build-arg http_proxy="${http_proxy}" \
|
--build-arg http_proxy="${http_proxy}" \
|
||||||
--build-arg https_proxy="${https_proxy}" \
|
--build-arg https_proxy="${https_proxy}" \
|
||||||
|
--build-arg QEMU_DESTDIR="${qemu_destdir}" \
|
||||||
--build-arg QEMU_REPO="${qemu_repo}" \
|
--build-arg QEMU_REPO="${qemu_repo}" \
|
||||||
--build-arg QEMU_VERSION="${qemu_version}" \
|
--build-arg QEMU_VERSION="${qemu_version}" \
|
||||||
--build-arg QEMU_TARBALL="${qemu_tar}" \
|
--build-arg QEMU_TARBALL="${qemu_tar}" \
|
||||||
@@ -54,12 +56,9 @@ sudo docker build \
|
|||||||
-t qemu-static
|
-t qemu-static
|
||||||
|
|
||||||
sudo docker run \
|
sudo docker run \
|
||||||
|
--rm \
|
||||||
-i \
|
-i \
|
||||||
-v "${PWD}":/share qemu-static \
|
-v "${PWD}":/share qemu-static \
|
||||||
mv "/tmp/qemu-static/${qemu_tar}" /share/
|
mv "${qemu_destdir}/${qemu_tar}" /share/
|
||||||
|
|
||||||
sudo chown ${USER}:${USER} "${PWD}/${qemu_tar}"
|
sudo chown ${USER}:${USER} "${PWD}/${qemu_tar}"
|
||||||
|
|
||||||
# Remove blacklisted binaries
|
|
||||||
gzip -d < "${qemu_tar}" | tar --delete --wildcards -f - ${qemu_black_list[*]} | gzip > "${qemu_tmp_tar}"
|
|
||||||
mv -f "${qemu_tmp_tar}" "${qemu_tar}"
|
|
||||||
|
28
tools/packaging/static-build/scripts/qemu-build-post.sh
Executable file
28
tools/packaging/static-build/scripts/qemu-build-post.sh
Executable file
@@ -0,0 +1,28 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Copyright (c) 2020 Red Hat, Inc.
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
#
|
||||||
|
# This script process QEMU post-build.
|
||||||
|
#
|
||||||
|
set -e
|
||||||
|
|
||||||
|
script_dir="$(realpath $(dirname $0))"
|
||||||
|
source "${script_dir}/../qemu.blacklist"
|
||||||
|
|
||||||
|
if [[ -z "${QEMU_TARBALL}" || -z "${QEMU_DESTDIR}" ]]; then
|
||||||
|
echo "$0: needs QEMU_TARBALL and QEMU_DESTDIR exported"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
pushd "${QEMU_DESTDIR}"
|
||||||
|
# Remove files to reduce the surface.
|
||||||
|
echo "INFO: remove uneeded files"
|
||||||
|
for pattern in ${qemu_black_list[@]}; do
|
||||||
|
find . -path "$pattern" | xargs rm -rfv
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "INFO: create the tarball"
|
||||||
|
tar -czvf "${QEMU_TARBALL}" *
|
||||||
|
popd
|
Reference in New Issue
Block a user