+++ /dev/null
-Discussion:
-https://resin.io/blog/building-arm-containers-on-any-x86-machine-even-dockerhub/
-
-https://github.com/resin-io/qemu/commit/782e5bb77014ff136f7bb6133a911e5f53e914a7
-
-https://github.com/resin-io/qemu/commit/782e5bb77014ff136f7bb6133a911e5f53e914a7#commitcomment-17193923
-It has gone through review[1][2][3] and I'm waiting for the maintainer of the linux-user subsystem to accept it in his tree.
-
-[1] https://patchwork.ozlabs.org/patch/569452/
-[2] https://patchwork.ozlabs.org/patch/573877/
-[3] https://patchwork.ozlabs.org/patch/582756/
-
-From patchwork Mon Feb 15 05:51:47 2016
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: [v3] linux-user: add option to intercept execve() syscalls
-From: Petros Angelatos <petrosagg@resin.io>
-X-Patchwork-Id: 582756
-Message-Id: <1455515507-26877-1-git-send-email-petrosagg@resin.io>
-To: qemu-devel@nongnu.org
-Cc: lucas.kaldstrom@hotmail.co.uk, peter.maydell@linaro.org,
- riku.voipio@iki.fi,
- laurent@vivier.eu, Petros Angelatos <petrosagg@resin.io>
-Date: Sun, 14 Feb 2016 21:51:47 -0800
-
-In order for one to use QEMU user mode emulation under a chroot, it is
-required to use binfmt_misc. This can be avoided by QEMU never doing a
-raw execve() to the host system.
-
-Introduce a new option, -execve, that uses the current QEMU interpreter
-to intercept execve().
-
-qemu_execve() will prepend the interpreter path , similar to what
-binfmt_misc would do, and then pass the modified execve() to the host.
-
-It is necessary to parse hashbang scripts in that function otherwise
-the kernel will try to run the interpreter of a script without QEMU and
-get an invalid exec format error.
-
-Signed-off-by: Petros Angelatos <petrosagg@resin.io>
-Tested-by: Laurent Vivier <laurent@vivier.eu>
-Reviewed-by: Laurent Vivier <laurent@vivier.eu>
----
-v3 changes:
- - rebase the patchset against current code
-
-diff -urNpa qemu-7.2.0.orig/linux-user/main.c qemu-7.2.0/linux-user/main.c
---- qemu-7.2.0.orig/linux-user/main.c 2023-02-08 21:23:07.149156085 +0100
-+++ qemu-7.2.0/linux-user/main.c 2023-02-08 21:23:36.695149312 +0100
-@@ -123,6 +123,7 @@ static void usage(int exitcode);
-
- static const char *interp_prefix = CONFIG_QEMU_INTERP_PREFIX;
- const char *qemu_uname_release;
-+const char *qemu_execve_path;
-
- #if !defined(TARGET_DEFAULT_STACK_SIZE)
- /* XXX: on x86 MAP_GROWSDOWN only works if ESP <= address + 32, so
-@@ -362,6 +363,11 @@ static void handle_arg_guest_base(const
- have_guest_base = true;
- }
-
-+static void handle_arg_execve(const char *arg)
-+{
-+ qemu_execve_path = strdup(arg);
-+}
-+
- static void handle_arg_reserved_va(const char *arg)
- {
- char *p;
-@@ -464,6 +470,8 @@ static const struct qemu_argument arg_ta
- "uname", "set qemu uname release string to 'uname'"},
- {"B", "QEMU_GUEST_BASE", true, handle_arg_guest_base,
- "address", "set guest_base address to 'address'"},
-+ {"execve", "QEMU_EXECVE", true, handle_arg_execve,
-+ "path", "use interpreter at 'path' when a process calls execve()"},
- {"R", "QEMU_RESERVED_VA", true, handle_arg_reserved_va,
- "size", "reserve 'size' bytes for guest virtual address space"},
- {"d", "QEMU_LOG", true, handle_arg_log,
-diff -urNpa qemu-7.2.0.orig/linux-user/syscall.c qemu-7.2.0/linux-user/syscall.c
---- qemu-7.2.0.orig/linux-user/syscall.c 2023-02-08 21:23:07.150156084 +0100
-+++ qemu-7.2.0/linux-user/syscall.c 2023-02-08 21:28:50.327077355 +0100
-@@ -8378,6 +8378,109 @@ static target_timer_t get_timer_id(abi_l
- return timerid;
- }
-
-+#define BINPRM_BUF_SIZE 128
-+
-+/* qemu_execve() Must return target values and target errnos. */
-+static abi_long qemu_execve(char *filename, char *argv[],
-+ char *envp[])
-+{
-+ char *i_arg = NULL, *i_name = NULL;
-+ char **new_argp;
-+ int argc, fd, ret, i, offset = 3;
-+ char *cp;
-+ char buf[BINPRM_BUF_SIZE];
-+
-+ for (argc = 0; argv[argc] != NULL; argc++) {
-+ /* nothing */ ;
-+ }
-+
-+ fd = open(filename, O_RDONLY);
-+ if (fd == -1) {
-+ return -ENOENT;
-+ }
-+
-+ ret = read(fd, buf, BINPRM_BUF_SIZE);
-+ if (ret == -1) {
-+ close(fd);
-+ return -ENOENT;
-+ }
-+
-+ close(fd);
-+
-+ /* adapted from the kernel
-+ * https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/fs/binfmt_script.c
-+ */
-+ if ((buf[0] == '#') && (buf[1] == '!')) {
-+ /*
-+ * This section does the #! interpretation.
-+ * Sorta complicated, but hopefully it will work. -TYT
-+ */
-+
-+ buf[BINPRM_BUF_SIZE - 1] = '\0';
-+ cp = strchr(buf, '\n');
-+ if (cp == NULL) {
-+ cp = buf+BINPRM_BUF_SIZE-1;
-+ }
-+ *cp = '\0';
-+ while (cp > buf) {
-+ cp--;
-+ if ((*cp == ' ') || (*cp == '\t')) {
-+ *cp = '\0';
-+ } else {
-+ break;
-+ }
-+ }
-+ for (cp = buf+2; (*cp == ' ') || (*cp == '\t'); cp++) {
-+ /* nothing */ ;
-+ }
-+ if (*cp == '\0') {
-+ return -ENOEXEC; /* No interpreter name found */
-+ }
-+ i_name = cp;
-+ i_arg = NULL;
-+ for ( ; *cp && (*cp != ' ') && (*cp != '\t'); cp++) {
-+ /* nothing */ ;
-+ }
-+ while ((*cp == ' ') || (*cp == '\t')) {
-+ *cp++ = '\0';
-+ }
-+ if (*cp) {
-+ i_arg = cp;
-+ }
-+
-+ if (i_arg) {
-+ offset = 5;
-+ } else {
-+ offset = 4;
-+ }
-+ }
-+
-+ new_argp = alloca((argc + offset + 1) * sizeof(void *));
-+
-+ /* Copy the original arguments with offset */
-+ for (i = 0; i < argc; i++) {
-+ new_argp[i + offset] = argv[i];
-+ }
-+
-+ new_argp[0] = strdup(qemu_execve_path);
-+ new_argp[1] = strdup("-0");
-+ new_argp[offset] = filename;
-+ new_argp[argc + offset] = NULL;
-+
-+ if (i_name) {
-+ new_argp[2] = i_name;
-+ new_argp[3] = i_name;
-+
-+ if (i_arg) {
-+ new_argp[4] = i_arg;
-+ }
-+ } else {
-+ new_argp[2] = argv[0];
-+ }
-+
-+ return get_errno(safe_execve(qemu_execve_path, new_argp, envp));
-+}
-+
- static int target_to_host_cpu_mask(unsigned long *host_mask,
- size_t host_size,
- abi_ulong target_addr,
-@@ -8933,9 +9036,17 @@ static abi_long do_syscall1(CPUArchState
- * program's problem.
- */
- if (is_proc_myself(p, "exe")) {
-- ret = get_errno(safe_execve(exec_path, argp, envp));
-+ if (qemu_execve_path && *qemu_execve_path) {
-+ ret = get_errno(qemu_execve(exec_path, argp, envp));
-+ } else {
-+ ret = get_errno(safe_execve(exec_path, argp, envp));
-+ }
- } else {
-- ret = get_errno(safe_execve(p, argp, envp));
-+ if (qemu_execve_path && *qemu_execve_path) {
-+ ret = get_errno(qemu_execve(p, argp, envp));
-+ } else {
-+ ret = get_errno(safe_execve(p, argp, envp));
-+ }
- }
- unlock_user(p, arg1, 0);
-
-diff -urNpa qemu-7.2.0.orig/linux-user/user-internals.h qemu-7.2.0/linux-user/user-internals.h
---- qemu-7.2.0.orig/linux-user/user-internals.h 2023-02-08 21:23:07.148156085 +0100
-+++ qemu-7.2.0/linux-user/user-internals.h 2023-02-08 21:23:36.697149312 +0100
-@@ -27,6 +27,7 @@ void init_task_state(TaskState *ts);
- void task_settid(TaskState *);
- void stop_all_tasks(void);
- extern const char *qemu_uname_release;
-+extern const char *qemu_execve_path;
- extern unsigned long mmap_min_addr;
-
- typedef struct IOCTLEntry IOCTLEntry;
# Conditional build:
%bcond_without sdl # SDL UI and audio support
%bcond_without opengl # Don't require GL deps
-%bcond_without ceph # Ceph/RBD support
+%bcond_with ceph # Ceph/RBD support
%bcond_without glusterfs # GlusterFS backend
%bcond_without rdma # RDMA-based migration support
%bcond_without gtk3 # Do not build GTK+ UI
%bcond_without virgl # build virgl support
%bcond_without xkbcommon # xkbcommon support
-%if %{without gtk}
+%if %{without gtk3}
%undefine with_vte
%endif
%ifarch x32
Summary: QEMU CPU Emulator
Summary(pl.UTF-8): QEMU - emulator procesora
Name: qemu
-Version: 7.2.0
+Version: 8.0.3
Release: 1
License: GPL v2, BSD (edk2 firmware files)
Group: Applications/Emulators
Source0: https://download.qemu.org/%{name}-%{version}.tar.xz
-# Source0-md5: 7630d6a9eba7ab2bcb9979d6d24c2697
+# Source0-md5: d41853bffb18878dd1ff7afc2eb41f1a
# Loads kvm kernel modules at boot
Source3: kvm-modules-load.conf
# Creates /dev/kvm
Source13: %{name}-guest-agent.init
Source14: %{name}-guest-agent.logrotate
Patch0: %{name}-no-fortify.patch
-Patch2: %{name}-user-execve.patch
+Patch2: %{name}-execve.patch
Patch3: %{name}-xattr.patch
Patch4: libjpeg-boolean.patch
URL: https://www.qemu.org/
%{?with_sdl:BuildRequires: SDL2-devel >= 2.0}
%{?with_sdl:BuildRequires: SDL2_image-devel >= 2.0}
BuildRequires: alsa-lib-devel
-BuildRequires: bcc >= 0.16.21-2
%{?with_brlapi:BuildRequires: brlapi-devel}
BuildRequires: bzip2-devel
-BuildRequires: capstone-devel >= 3.0.5
-%{?with_ceph:BuildRequires: ceph-devel}
-BuildRequires: curl-devel
+BuildRequires: capstone-devel >= 4.0
+%{?with_ceph:BuildRequires: ceph-devel >= 12}
+BuildRequires: curl-devel >= 7.29.0
BuildRequires: cyrus-sasl-devel >= 2
-BuildRequires: glib2-devel >= 1:2.48
+BuildRequires: daxctl-devel >= 57
+BuildRequires: gcc >= 6:7.4
+BuildRequires: gettext-tools
+BuildRequires: glib2-devel >= 1:2.64
# minimal is 3.4 but new features are used up to 6
%{?with_glusterfs:BuildRequires: glusterfs-devel >= 6}
-BuildRequires: gnutls-devel >= 3.1.18
-%{?with_gtk3:BuildRequires: gtk+3-devel >= 3.16}
+BuildRequires: gnutls-devel >= 3.6.14
+%{?with_gtk3:BuildRequires: gtk+3-devel >= 3.22.0}
+BuildRequires: jack-audio-connection-kit-devel
+# for tests
+#BuildRequires: keyutils-devel
BuildRequires: libaio-devel
+BuildRequires: libbpf-devel
%{?with_smartcard:BuildRequires: libcacard-devel >= 2.5.1}
BuildRequires: libcap-ng-devel
+BuildRequires: libdrm-devel
%{?with_opengl:BuildRequires: libepoxy-devel}
-BuildRequires: libfdt-devel >= 1.4.2
+BuildRequires: libfdt-devel >= 1.5.1
+BuildRequires: libfuse3-devel >= 3.8
%{?with_rdma:BuildRequires: libibverbs-devel}
%{?with_iscsi:BuildRequires: libiscsi-devel >= 1.9.0}
%{?with_rdma:BuildRequires: libibumad-devel}
BuildRequires: libjpeg-devel
%{?with_libnfs:BuildRequires: libnfs-devel >= 1.9.3}
-BuildRequires: libpng-devel
+BuildRequires: libpng-devel >= 2:1.6.34
%{?with_rdma:BuildRequires: librdmacm-devel}
%{?with_seccomp:BuildRequires: libseccomp-devel >= 2.3.0}
-BuildRequires: libssh-devel >= 0.8
+BuildRequires: libselinux-devel
+BuildRequires: libssh-devel >= 0.8.7
+BuildRequires: libslirp-devel >= 4.1.0
# for tests only
#BuildRequires: libtasn1-devel
+BuildRequires: libu2f-emu-devel
BuildRequires: libusb-devel >= 1.0.22
-BuildRequires: liburing-devel
+BuildRequires: liburing-devel >= 0.3
BuildRequires: libuuid-devel
BuildRequires: libxml2-devel >= 2.0
-%{?with_lttng:BuildRequires: lttng-ust-devel}
+%{?with_lttng:BuildRequires: lttng-ust-devel >= 2.1}
BuildRequires: lzfse-devel
BuildRequires: lzo-devel >= 2
+BuildRequires: meson >= 0.59.3
%{?with_multipath:BuildRequires: multipath-tools-devel}
BuildRequires: ncurses-devel
-# also libgcrypt-devel >= 1.5.0 possible, but gnutls already pulls nettle
-BuildRequires: nettle-devel >= 2.7.1
+# also libgcrypt-devel >= 1.8 possible, but gnutls already pulls nettle
+BuildRequires: nettle-devel >= 3.4
+BuildRequires: ninja
%{?with_smartcard:BuildRequires: nss-devel >= 1:3.12.8}
BuildRequires: numactl-devel
BuildRequires: pam-devel
BuildRequires: pkgconfig
%{?with_pmem:BuildRequires: pmdk-devel}
%{?with_pulseaudio:BuildRequires: pulseaudio-devel}
-BuildRequires: python3 >= 1:3.5
+BuildRequires: python3 >= 1:3.6
+BuildRequires: python3-sphinx_rtd_theme
+BuildRequires: rpm-build >= 4.6
BuildRequires: rpmbuild(macros) >= 1.644
%{?with_system_seabios:BuildRequires: seabios}
BuildRequires: sed >= 4.0
BuildRequires: spice-protocol >= 0.12.3
BuildRequires: spice-server-devel >= 0.12.5
%endif
-%{?with_systemtap:BuildRequires: systemtap-devel}
+%{?with_systemtap:BuildRequires: systemtap-sdt-devel}
+BuildRequires: tar >= 1:1.22
BuildRequires: texi2html
BuildRequires: texinfo
%{?with_multipath:BuildRequires: udev-devel}
%{?with_virgl:BuildRequires: virglrenderer-devel}
%{?with_vte:BuildRequires: vte-devel >= 0.32.0}
# xencontrol xenstore xenguest xenforeignmemory xengnttab xenevtchn xendevicemodel; xentoolcore for xen 4.10+
-# min version is 4.2, more features up to 4.10
-%{?with_xen:BuildRequires: xen-devel >= 4.10}
+# min version is 4.2, more features up to 4.11
+%{?with_xen:BuildRequires: xen-devel >= 4.11}
BuildRequires: xfsprogs-devel
-%{?with_xkbcommon:BuildRequires: xorg-lib-libxkbcommon-devel}
+%if %{with xkbcommon}
+BuildRequires: xkeyboard-config
+BuildRequires: xorg-lib-libxkbcommon-devel
+%endif
BuildRequires: xorg-lib-libX11-devel
+BuildRequires: xz
BuildRequires: zlib-devel
BuildRequires: zstd-devel >= 1.4.0
%if %{with user_static}
-BuildRequires: glib2-static >= 1:2.48
+BuildRequires: glib2-static >= 1:2.74
BuildRequires: glibc-static
-BuildRequires: pcre-static
+BuildRequires: pcre2-8-static >= 10.32
BuildRequires: zlib-static
%endif
Requires: %{name}-img = %{version}-%{release}
Requires: %{name}-system-x86 = %{version}-%{release}
Requires: %{name}-system-xtensa = %{version}-%{release}
Requires: %{name}-user = %{version}-%{release}
-Obsoletes: qemu-kvm
+Obsoletes: qemu-kvm < 2
ExcludeArch: i386
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%define systempkg_req \
-Requires: capstone >= 3.0.5 \
+Requires: capstone >= 4.0 \
+Requires: daxctl-libs >= 57 \
%{?with_smartcard:Requires: libcacard >= 2.5.1} \
-Requires: libfdt >= 1.4.2 \
+Requires: libfdt >= 1.5.1 \
+Requires: libfuse3 >= 3.8 \
+%{?with_iscsi:Requires: libiscsi >= 1.9.0} \
+Requires: libpng >= 2:1.6.34 \
%if %{with seccomp} \
Requires: libseccomp >= 2.3.0 \
%endif \
+Requires: libslirp >= 4.1.0 \
+Requires: liburing >= 0.3 \
Requires: libusb >= 1.0.22 \
Requires: pixman >= 0.21.8 \
%if %{with spice} \
%endif \
%if %{with usbredir} \
Requires: usbredir >= 0.6 \
-%endif \
-Requires: zstd >= 1.4.0
+%endif
# don't strip/chrpath anything in there; these are boot images, roms etc
%define _noautostrip .*%{_datadir}/qemu/.*
Requires(pre): /usr/bin/getgid
Requires(pre): /usr/sbin/groupadd
Requires(pre): /usr/sbin/useradd
-Requires: glib2 >= 1:2.48
-Requires: gnutls-libs >= 3.1.18
-%{?with_gtk3:Requires: gtk+3 >= 3.16}
-Requires: nettle >= 2.7.1
+Requires: glib2 >= 1:2.64
+Requires: gnutls-libs >= 3.6.14
+%{?with_gtk3:Requires: gtk+3 >= 3.22.0}
+Requires: nettle >= 3.4
%{?with_vte:Requires: vte >= 0.32.0}
+Requires: zstd >= 1.4.0
Provides: group(qemu)
Provides: user(qemu)
-Obsoletes: qemu-kvm-common
+Obsoletes: qemu-kvm-common < 2
Obsoletes: qemu-module-block-archipelago < 2.9.0
-Obsoletes: qemu-system-lm32
-Obsoletes: qemu-system-moxie
-Obsoletes: qemu-system-unicore32
+Obsoletes: qemu-system-lm32 < 5.2
+Obsoletes: qemu-system-moxie < 6.1
+Obsoletes: qemu-system-unicore32 < 5.2
Conflicts: qemu < 1.0-2
%description common
środowiska QEMU.
%package devel
-Summary: Development files for programs using qemu
-Summary(pl.UTF-8): Pliki programistyczne do programów wykorzystujących qemu
+Summary: Header file for QEMU plugins development
+Summary(pl.UTF-8): Plik nagłówkowy do tworzenia wtyczek QEMU
Group: Development/Libraries
-Requires: %{name} = %{version}-%{release}
+BuildArch: noarch
%description devel
-This package contains the header files needed for developing programs
-using the QEMU.
+Header file for QEMU plugins development.
%description devel -l pl.UTF-8
-Ten pakiet zawiera pliki nagłówkowe potrzebne do tworzenia programów
-wykorzystujących QEMU.
+Plik nagłówkowy do tworzenia wtyczek QEMU.
%package img
Summary: QEMU command line tool for manipulating disk images
Summary(pl.UTF-8): Narzędzie QEMU do operacji na obrazach dysków
Group: Applications/Emulators
-Obsoletes: qemu-kvm-img
+Obsoletes: qemu-kvm-img < 2
Conflicts: qemu < 1.0-2
%description img
Ten pakiet udostępnia działające z linii poleceń narzędzia do operacji
na obrazach dysków.
+%package ivshmem
+Summary: Client and server for QEMU ivshmem device
+Summary(pl.UTF-8): Klient i serwer dla urzÄ\85dzeia ivshmem QEMU
+Group: Development/Tools
+
+%description ivshmem
+This package provides client and server tools for QEMU's ivshmem
+device.
+
+%description ivshmem -l pl.UTF-8
+Ten pakiet udostępnia działające z linii poleceń narzędzia dla
+urządzenia ivshmem QEMU.
+
%package user
Summary: QEMU user mode emulation of qemu targets
Summary(pl.UTF-8): QEMU - emulacja trybu użytkownika środowisk qemu
Group: Applications/Emulators
Requires: %{name}-common = %{version}-%{release}
-Obsoletes: qemu-kvm-user
+Obsoletes: qemu-kvm-user < 2
%description user
QEMU is a generic and open source processor emulator which achieves a
Group: Applications/Emulators
Requires: %{name}-common = %{version}-%{release}
%systempkg_req
-Obsoletes: qemu-kvm-system-aarch64
+Obsoletes: qemu-kvm-system-aarch64 < 2
%description system-aarch64
QEMU is a generic and open source processor emulator which achieves a
Group: Applications/Emulators
Requires: %{name}-common = %{version}-%{release}
%systempkg_req
-Obsoletes: qemu-kvm-system-alpha
+Obsoletes: qemu-kvm-system-alpha < 2
%description system-alpha
QEMU is a generic and open source processor emulator which achieves a
Group: Applications/Emulators
Requires: %{name}-common = %{version}-%{release}
%systempkg_req
-Obsoletes: qemu-kvm-system-arm
+Obsoletes: qemu-kvm-system-arm < 2
%description system-arm
QEMU is a generic and open source processor emulator which achieves a
Group: Applications/Emulators
Requires: %{name}-common = %{version}-%{release}
%systempkg_req
-Obsoletes: qemu-kvm-system-avr
+Obsoletes: qemu-kvm-system-avr < 2
%description system-avr
QEMU is a generic and open source processor emulator which achieves a
Group: Applications/Emulators
Requires: %{name}-common = %{version}-%{release}
%systempkg_req
-Obsoletes: qemu-kvm-system-cris
+Obsoletes: qemu-kvm-system-cris < 2
%description system-cris
QEMU is a generic and open source processor emulator which achieves a
Group: Applications/Emulators
Requires: %{name}-common = %{version}-%{release}
%systempkg_req
-Obsoletes: qemu-kvm-system-m68k
+Obsoletes: qemu-kvm-system-m68k < 2
%description system-m68k
QEMU is a generic and open source processor emulator which achieves a
Group: Applications/Emulators
Requires: %{name}-common = %{version}-%{release}
%systempkg_req
-Obsoletes: qemu-kvm-system-microblaze
+Obsoletes: qemu-kvm-system-microblaze < 2
%description system-microblaze
QEMU is a generic and open source processor emulator which achieves a
Group: Applications/Emulators
Requires: %{name}-common = %{version}-%{release}
%systempkg_req
-Obsoletes: qemu-kvm-system-mips
+Obsoletes: qemu-kvm-system-mips < 2
%description system-mips
QEMU is a generic and open source processor emulator which achieves a
Group: Applications/Emulators
Requires: %{name}-common = %{version}-%{release}
%systempkg_req
-Obsoletes: qemu-kvm-system-or1k
-Obsoletes: qemu-system-or32
+Obsoletes: qemu-kvm-system-or1k < 2
+Obsoletes: qemu-system-or32 < 2.9.0
%description system-or1k
QEMU is a generic and open source processor emulator which achieves a
Group: Applications/Emulators
Requires: %{name}-common = %{version}-%{release}
%systempkg_req
-Obsoletes: qemu-kvm-system-ppc
+Obsoletes: qemu-kvm-system-ppc < 2
%description system-ppc
QEMU is a generic and open source processor emulator which achieves a
Group: Applications/Emulators
Requires: %{name}-common = %{version}-%{release}
%systempkg_req
-Obsoletes: qemu-kvm-system-s390x
+Obsoletes: qemu-kvm-system-s390x < 2
%description system-s390x
QEMU is a generic and open source processor emulator which achieves a
Group: Applications/Emulators
Requires: %{name}-common = %{version}-%{release}
%systempkg_req
-Obsoletes: qemu-kvm-system-sh4
+Obsoletes: qemu-kvm-system-sh4 < 2
%description system-sh4
QEMU is a generic and open source processor emulator which achieves a
Group: Applications/Emulators
Requires: %{name}-common = %{version}-%{release}
%systempkg_req
-Obsoletes: qemu-kvm-system-sparc
+Obsoletes: qemu-kvm-system-sparc < 2
%description system-sparc
QEMU is a generic and open source processor emulator which achieves a
This package provides the system emulator with TriCore CPU.
-%description system-sparc -l pl.UTF-8
+%description system-tricore -l pl.UTF-8
QEMU to ogólny, mający otwarte źródła emulator procesora, osiągający
dobrą szybkość emulacji dzięki użyciu translacji dynamicznej.
Requires: %{name}-common = %{version}-%{release}
%{?with_system_seabios:Requires: seabios}
%systempkg_req
-Obsoletes: kvm
-Obsoletes: qemu-kvm-system-x86
+Obsoletes: kvm < 89
+Obsoletes: qemu-kvm-system-x86 < 2
%description system-x86
QEMU is a generic and open source processor emulator which achieves a
Group: Applications/Emulators
Requires: %{name}-common = %{version}-%{release}
%systempkg_req
-Obsoletes: qemu-kvm-system-xtensa
+Obsoletes: qemu-kvm-system-xtensa < 2
%description system-xtensa
QEMU is a generic and open source processor emulator which achieves a
Summary: QEMU guest agent
Summary(pl.UTF-8): Agent gościa QEMU
Group: Daemons
-Requires: glib2 >= 1:2.48
-Obsoletes: qemu-kvm-guest-agent
+Requires: glib2 >= 1:2.64
+Requires: liburing >= 0.3
+Obsoletes: qemu-kvm-guest-agent < 2
Conflicts: SysVinit < 2.96-2
%description guest-agent
Ten pakiet nie musi być zainstalowany w systemie hosta.
+%package module-audio-jack
+Summary: QEMU module for JACK audio output
+Summary(pl.UTF-8): Moduł QEMU z wyjściem dźwięku JACK
+Group: Applications/Emulators
+Requires: %{name}-common = %{version}-%{release}
+
+%description module-audio-jack
+QEMU module for JACK audio output.
+
+%description module-audio-jack -l pl.UTF-8
+Moduł QEMU z wyjściem dźwięku JACK.
+
%package module-block-curl
Summary: QEMU module for 'curl' block devices
Summary(pl.UTF-8): Moduł QEMU dla urządeń blokowych typu 'curl'
Group: Applications/Emulators
Requires: %{name}-common = %{version}-%{release}
+Requires: curl-libs >= 7.29.0
%description module-block-curl
QEMU block device support for CURL. It allows to access remote disks
Summary(pl.UTF-8): Moduł QEMU dla urządeń blokowych typu 'rbd'
Group: Applications/Emulators
Requires: %{name}-common = %{version}-%{release}
+Requires: ceph-libs >= 12
%description module-block-rbd
QEMU block device support for Ceph/RBD volumes.
Summary(pl.UTF-8): Moduł QEMU dla urządeń blokowych typu 'ssh'
Group: Applications/Emulators
Requires: %{name}-common = %{version}-%{release}
-Requires: libssh >= 0.8
+Requires: libssh >= 0.8.7
%description module-block-ssh
QEMU block device support for accessing remote disks using the Secure
Moduł urządzeń blokowych QEMU do dostępu do zdalnych dysków poprzez
protokół SSH (Secure Shell).
+%package module-ui-dbus
+Summary: QEMU DBus UI driver
+Summary(pl.UTF-8): Sterownik interfejsu użytkownika DBus dla QEMU
+Group: Applications/Emulators
+Requires: %{name}-common = %{version}-%{release}
+
+%description module-ui-dbus
+QEMU DBus UI driver.
+
+%description module-ui-dbus -l pl.UTF-8
+Sterownik interfejsu użytkownika DBus dla QEMU.
+
%package module-ui-gtk
Summary: QEMU GTK UI driver
Summary(pl.UTF-8): Sterownik interfejsu użytkownika GTK dla QEMU
%if %{with systemtap}
# don't require stap binary during build
-%{__sed} -i -e "s/has 'stap'/true/" configure
+%{__sed} -i -e "s/stap.found()/true/" meson.build docs/meson.build scripts/meson.build
%endif
%build
build dynamic \
--extra-cflags="%{rpmcflags} %{rpmcppflags}" \
--extra-ldflags="%{rpmldflags} -Wl,-z,relro -Wl,-z,now" \
- --audio-drv-list="alsa%{?with_oss:,oss}%{?with_sdl:,sdl}%{?with_pulseaudio:,pa}" \
+ --audio-drv-list="alsa,jack%{?with_oss:,oss}%{?with_pulseaudio:,pa}%{?with_sdl:,sdl}" \
--enable-attr \
%{__enable_disable brlapi} \
--enable-cap-ng \
+ --enable-capstone \
--enable-curl \
--enable-curses \
--enable-docs \
%{__enable_disable rdma} \
%{__enable_disable sdl} \
%{__enable_disable seccomp} \
+ --enable-slirp=system \
%{__enable_disable spice} \
%{__enable_disable smartcard} \
%{__enable_disable snappy} \
--disable-nettle \
--disable-pie \
--disable-sdl \
+ --disable-slirp \
--disable-spice \
--disable-system \
--disable-tools \
%if %{with system_seabios}
ln -sf /usr/share/seabios/bios.bin $RPM_BUILD_ROOT%{_datadir}/%{name}/bios-256k.bin
# bios.bin provided by qemu is stripped to 128k, with no Xen support, keep it
-for f in $RPM_BUILD_ROOT%{_datadir}/%{name}/*.aml ; do
- bn="$(basename $f)"
- if [ -e "/usr/share/seabios/$bn" ] ; then
- ln -sf "/usr/share/seabios/$bn" "$f"
- fi
-done
%endif
%if %{with gtk3}
: > qemu.lang
%endif
+for t in client server; do
+ cp -p build-dynamic/contrib/ivshmem-$t/ivshmem-$t $RPM_BUILD_ROOT%{_bindir}
+done
+
+# test modules
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{name}/accel-qtest-*.so
# Windows installer icon, not used
%{__rm} $RPM_BUILD_ROOT%{_datadir}/%{name}/qemu-nsis.bmp
# packaged as %doc
%{__rm} $RPM_BUILD_ROOT%{_datadir}/%{name}/edk2-licenses.txt
+# cleanup Sphinx files
+%{__rm} $RPM_BUILD_ROOT%{_docdir}/qemu/{.buildinfo,objects.inv}
+
%clean
rm -rf $RPM_BUILD_ROOT
%attr(755,root,root) %{_libexecdir}/vhost-user-gpu
%endif
%attr(755,root,root) %{_libexecdir}/virtfs-proxy-helper
-%attr(755,root,root) %{_libexecdir}/virtiofsd
%dir %{_libdir}/%{name}
# modules without too many external dependencies
%attr(755,root,root) %{_libdir}/%{name}/block-dmg-bz2.so
%attr(755,root,root) %{_libdir}/%{name}/block-dmg-lzfse.so
%attr(755,root,root) %{_libdir}/%{name}/audio-alsa.so
-%attr(755,root,root) %{_libdir}/%{name}/audio-dbus.so
-%attr(755,root,root) %{_libdir}/%{name}/audio-jack.so
%if %{with oss}
%attr(755,root,root) %{_libdir}/%{name}/audio-oss.so
%endif
%attr(755,root,root) %{_libdir}/%{name}/hw-usb-redirect.so
%attr(755,root,root) %{_libdir}/%{name}/hw-usb-smartcard.so
%attr(755,root,root) %{_libdir}/%{name}/ui-curses.so
-%attr(755,root,root) %{_libdir}/%{name}/ui-dbus.so
%attr(755,root,root) %{_libdir}/%{name}/ui-egl-headless.so
%if %{with opengl}
%attr(755,root,root) %{_libdir}/%{name}/ui-opengl.so
%if %{with virgl}
%{_datadir}/%{name}/vhost-user/50-qemu-gpu.json
%endif
-%{_datadir}/%{name}/vhost-user/50-qemu-virtiofsd.json
%{_desktopdir}/qemu.desktop
%{_iconsdir}/hicolor/*x*/apps/qemu.png
%{_iconsdir}/hicolor/32x32/apps/qemu.bmp
%{_mandir}/man1/qemu.1*
%{_mandir}/man1/qemu-storage-daemon.1*
%{_mandir}/man1/virtfs-proxy-helper.1*
-%{_mandir}/man1/virtiofsd.1*
%{_mandir}/man7/qemu-block-drivers.7*
%{_mandir}/man7/qemu-cpu-models.7*
%{_mandir}/man7/qemu-qmp-ref.7*
%attr(755,root,root) %{_bindir}/qemu-img
%{_mandir}/man1/qemu-img.1*
+%files ivshmem
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_bindir}/ivshmem-client
+%attr(755,root,root) %{_bindir}/ivshmem-server
+
%files user
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/qemu-aarch64
%{_datadir}/%{name}/pxe-rtl8139.rom
%{_datadir}/%{name}/pxe-virtio.rom
%{_datadir}/%{name}/qboot.rom
-%{_datadir}/%{name}/sgabios.bin
%{_datadir}/%{name}/vgabios.bin
%{_datadir}/%{name}/vgabios-ati.bin
%{_datadir}/%{name}/vgabios-bochs-display.bin
%{_mandir}/man7/qemu-ga-ref.7*
%{_mandir}/man8/qemu-ga.8*
+%files module-audio-jack
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/%{name}/audio-jack.so
+
%files module-block-curl
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/%{name}/block-curl.so
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/%{name}/block-ssh.so
+%files module-ui-dbus
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/%{name}/audio-dbus.so
+%attr(755,root,root) %{_libdir}/%{name}/ui-dbus.so
+
%if %{with gtk3}
%files module-ui-gtk
%defattr(644,root,root,755)