From e4176acad9094f80878597af7320251745061da9 Mon Sep 17 00:00:00 2001 From: Wu Hao Date: Fri, 3 Feb 2023 17:59:37 +0800 Subject: [PATCH] support qemu aarch64 user mode emulation on x86_64 Signed-off-by: Wu Hao --- qemu-kvm.spec | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 61 insertions(+), 1 deletion(-) diff --git a/qemu-kvm.spec b/qemu-kvm.spec index 0154920..6210e23 100644 --- a/qemu-kvm.spec +++ b/qemu-kvm.spec @@ -1,4 +1,4 @@ -%define anolis_release .0.1 +%define anolis_release .0.2 %global SLOF_gittagdate 20191022 %global SLOF_gittagcommit 899d9883 @@ -11,6 +11,10 @@ %global have_kvm_setup 0 %global have_memlock_limits 0 +%global user_static 0 +%ifarch x86_64 +%global user_static 1 +%endif # Release candidate version tracking @@ -573,6 +577,10 @@ BuildRequires: pkgconfig(gbm) BuildRequires: perl-Test-Harness +%if %{user_static} +BuildRequires: glibc-static pcre-static glib2-static zlib-static +%endif + Requires: qemu-kvm-core = %{epoch}:%{version}-%{release} Requires: qemu-kvm-docs = %{epoch}:%{version}-%{release} %rhev_ma_conflicts qemu-kvm @@ -785,6 +793,15 @@ This package provides usbredir support. %endif +%if %{user_static} +%package -n qemu-user-static +Summary: QEMU user mode emulation of qemu targets static build +%description -n qemu-user-static +This package provides the user mode emulation of qemu targets built as +static binaries +%endif + + %prep %setup -q -n qemu-%{version}%{?rcstr} # Remove slirp content in scratchbuilds because it's being applyed as a patch @@ -803,6 +820,9 @@ cp -f %{SOURCE38} tests/data/acpi/q35/FACP.slic cp -f %{SOURCE39} tests/data/acpi/q35/SSDT.dimmpxm cp -f %{SOURCE40} tests/data/acpi/virt/SSDT.memhp +%global static_builddir static_builddir +mkdir -p %{static_builddir} + %build %global buildarch %{kvm_target}-softmmu @@ -1078,6 +1098,25 @@ gcc %{SOURCE35} $RPM_OPT_FLAGS $RPM_LD_FLAGS -o udev-kvm-check popd +%if %{user_static} +pushd %{static_builddir} +# add more targets here when necessary +%define static_targets aarch64-linux-user + +../configure \ + %{disable_everything} \ + --enable-docs \ + --enable-attr \ + --enable-tcg \ + --enable-linux-user \ + --target-list=%{static_targets} \ + --static + +make -j + +popd +%endif + %install pushd %{qemu_kvm_build} %define _udevdir %(pkg-config --variable=udevdir udev) @@ -1386,6 +1425,20 @@ rm -rf $RPM_BUILD_ROOT%{qemudocdir}/specs popd +%if %{user_static} +# Install qemu-user-static +mkdir -p $RPM_BUILD_ROOT%{_bindir}/ +pushd %{static_builddir} +for src in qemu-*\.*; do + rm -rf $src +done + +for src in qemu-*; do + mv $src $RPM_BUILD_ROOT%{_bindir}/$(basename $src)-static +done +popd +%endif + %check %ifnarch loongarch64 pushd %{qemu_kvm_build} @@ -1647,8 +1700,15 @@ sh %{_sysconfdir}/sysconfig/modules/kvm.modules &> /dev/null || : %{_libdir}/qemu-kvm/hw-usb-redirect.so %endif +%if %{user_static} +%files -n qemu-user-static +%{_bindir}/qemu-aarch64-static +%endif %changelog +* Wed Feb 1 2023 Wu Hao - 6.2.0-21.0.2.2 +- Add package qemu-user-static + * Tue Jan 31 2023 Jacob Wang - 6.2.0-21.0.1.2 - Adjust limit for virtiofsd minor version - Add loongarch supporti (lixianglai@loongson.cn) -- Gitee