packaging/qemu: Add common code to apply patches

The qemu and qemu-virtiofs Dockerfile files repeat the code to apply
patches based on QEMU stable branch being built. Instead, this adds
a common script (qemu/apply_patches.sh) and make it called by the
respective Dockerfile files.

Signed-off-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
This commit is contained in:
Wainer dos Santos Moschetta 2020-09-22 17:24:22 -04:00
parent edce2712cd
commit 512b38cf61
3 changed files with 32 additions and 18 deletions

View File

@ -0,0 +1,27 @@
#!/bin/bash
#
# Copyright (c) 2020 Red Hat, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
# This script apply the needed for Kata Containers patches on QEMU.
# Note: It should be executed from inside the QEMU source directory.
#
set -e
script_dir="$(realpath $(dirname $0))"
qemu_version="$(cat VERSION)"
stable_branch=$(echo $qemu_version | \
awk 'BEGIN{FS=OFS="."}{print $1 "." $2 ".x"}')
patches_dir="${script_dir}/patches/${stable_branch}"
echo "Handle patches for QEMU $qemu_version (stable ${stable_branch})"
if [ -d $patches_dir ]; then
for patch in $(find $patches_dir -name '*.patch'); do
echo "Apply $patch"
git apply "$patch"
done
else
echo "No patches to apply"
fi

View File

@ -49,23 +49,16 @@ RUN cd .. && git clone "${QEMU_VIRTIOFS_REPO}" qemu-virtiofs
RUN git checkout "${QEMU_VIRTIOFS_TAG}"
ADD scripts/configure-hypervisor.sh /root/configure-hypervisor.sh
ADD qemu/patches/ /root/kata_qemu_patches
ADD qemu /root/kata_qemu
# Apply experimental specific patches
# Patches to quick fix virtiofs fork
ENV VIRTIOFS_PATCHES_DIR=/root/kata_qemu_patches/${QEMU_VIRTIOFS_TAG}/
ENV VIRTIOFS_PATCHES_DIR=/root/kata_qemu/patches/${QEMU_VIRTIOFS_TAG}/
RUN find "${VIRTIOFS_PATCHES_DIR}" -name '*.patch' -type f |sort -t- -k1,1n > patches_virtiofs
RUN echo "Patches to apply for virtiofs fixes:"
RUN cat patches_virtiofs
RUN [ ! -s patches_virtiofs ] || git apply $(cat patches_virtiofs)
RUN cat VERSION | awk 'BEGIN{FS=OFS="."}{print $1 "." $2 ".x"}' > stable_branch
RUN echo "/root/kata_qemu_patches/$(cat stable_branch)/" > patches_qemu_dir
RUN echo "patches dir $(cat patches_qemu_dir)"
RUN find "$(cat patches_qemu_dir)" -name '*.patch' -type f |sort -t- -k1,1n > patches_qemu
RUN echo "Patches to apply for qemu:"
RUN cat patches_qemu
RUN [ ! -s patches_qemu ] || git apply $(cat patches_qemu )
RUN /root/kata_qemu/apply_patches.sh
RUN PREFIX="${PREFIX}" /root/configure-hypervisor.sh -s kata-qemu | sed -e 's|--disable-seccomp||g' | xargs ./configure \
--with-pkgversion=kata-static

View File

@ -48,15 +48,9 @@ RUN git clone https://github.com/qemu/capstone.git capstone
RUN git clone https://github.com/qemu/keycodemapdb.git ui/keycodemapdb
ADD scripts/configure-hypervisor.sh /root/configure-hypervisor.sh
ADD qemu/patches/ /root/kata_qemu_patches
ADD qemu /root/kata_qemu
RUN \
cat VERSION; \
stable_branch=$(cat VERSION | awk 'BEGIN{FS=OFS="."}{print $1 "." $2 ".x"}');\
for patch in $(find /root/kata_qemu_patches/${stable_branch}/ -name '*.patch'); do\
echo "apply $patch";\
git apply "$patch"; \
done
RUN /root/kata_qemu/apply_patches.sh
RUN PREFIX="${PREFIX}" /root/configure-hypervisor.sh -s kata-qemu | xargs ./configure \
--with-pkgversion=kata-static