]> TLD Linux GIT Repositories - packages/qemu.git/commitdiff
- updated to 8.0.3, sync with PLD spec changes
authorMarcin Krol <hawk@tld-linux.org>
Sat, 22 Jul 2023 18:05:41 +0000 (20:05 +0200)
committerMarcin Krol <hawk@tld-linux.org>
Sat, 22 Jul 2023 18:05:41 +0000 (20:05 +0200)
qemu-execve.patch [new file with mode: 0644]
qemu-no-fortify.patch
qemu-user-execve.patch [deleted file]
qemu-xattr.patch
qemu.spec

diff --git a/qemu-execve.patch b/qemu-execve.patch
new file mode 100644 (file)
index 0000000..03b0931
--- /dev/null
@@ -0,0 +1,54 @@
+diff -ur qemu-8.0.3.orig/linux-user/syscall.c qemu-8.0.3/linux-user/syscall.c
+--- qemu-8.0.3.orig/linux-user/syscall.c       2023-07-22 14:27:06.999503109 +0200
++++ qemu-8.0.3/linux-user/syscall.c    2023-07-22 15:21:31.161543522 +0200
+@@ -659,6 +659,7 @@
+ #endif
+ safe_syscall5(int, waitid, idtype_t, idtype, id_t, id, siginfo_t *, infop, \
+               int, options, struct rusage *, rusage)
++safe_syscall3(int, execve, const char *, filename, char **, argv, char **, envp)
+ safe_syscall5(int, execveat, int, dirfd, const char *, filename,
+               char **, argv, char **, envp, int, flags)
+ #if defined(TARGET_NR_select) || defined(TARGET_NR__newselect) || \
+@@ -8388,9 +8389,9 @@
+     return safe_openat(dirfd, path(pathname), flags, mode);
+ }
+-static int do_execveat(CPUArchState *cpu_env, int dirfd,
+-                       abi_long pathname, abi_long guest_argp,
+-                       abi_long guest_envp, int flags)
++static int do_execv(CPUArchState *cpu_env, int dirfd,
++                    abi_long pathname, abi_long guest_argp,
++                    abi_long guest_envp, int flags, bool is_execveat)
+ {
+     int ret;
+     char **argp, **envp;
+@@ -8469,11 +8470,14 @@
+         goto execve_efault;
+     }
++    const char *exe = p;
+     if (is_proc_myself(p, "exe")) {
+-        ret = get_errno(safe_execveat(dirfd, exec_path, argp, envp, flags));
+-    } else {
+-        ret = get_errno(safe_execveat(dirfd, p, argp, envp, flags));
++        exe = exec_path;
+     }
++    ret = is_execveat
++        ? safe_execveat(dirfd, exe, argp, envp, flags)
++        : safe_execve(exe, argp, envp);
++    ret = get_errno(ret);
+     unlock_user(p, pathname, 0);
+@@ -9012,9 +9016,9 @@
+         return ret;
+ #endif
+     case TARGET_NR_execveat:
+-        return do_execveat(cpu_env, arg1, arg2, arg3, arg4, arg5);
++        return do_execv(cpu_env, arg1, arg2, arg3, arg4, arg5, true);
+     case TARGET_NR_execve:
+-        return do_execveat(cpu_env, AT_FDCWD, arg1, arg2, arg3, 0);
++        return do_execv(cpu_env, AT_FDCWD, arg1, arg2, arg3, 0, false);
+     case TARGET_NR_chdir:
+         if (!(p = lock_user_string(arg1)))
+             return -TARGET_EFAULT;
index aa69ee07e7568e93fda2ee6d479a18a6ede4cd90..ed6f0e85e4dad167ba8771db52eda5fdceb80798 100644 (file)
@@ -1,7 +1,7 @@
-diff -ur qemu-7.2.0.orig/configure qemu-7.2.0/configure
---- qemu-7.2.0.orig/configure  2023-02-08 21:21:36.128176965 +0100
-+++ qemu-7.2.0/configure       2023-02-08 21:22:06.431170014 +0100
-@@ -275,7 +275,6 @@
+diff -ur qemu-8.0.3.orig/configure qemu-8.0.3/configure
+--- qemu-8.0.3.orig/configure  2023-07-22 14:25:13.756890443 +0200
++++ qemu-8.0.3/configure       2023-07-22 14:25:40.988278232 +0200
+@@ -278,7 +278,6 @@
  debug_tcg="no"
  sanitizers="no"
  tsan="no"
  debug_tcg="no"
  sanitizers="no"
  tsan="no"
@@ -9,15 +9,15 @@ diff -ur qemu-7.2.0.orig/configure qemu-7.2.0/configure
  EXESUF=""
  modules="no"
  prefix="/usr/local"
  EXESUF=""
  modules="no"
  prefix="/usr/local"
-@@ -789,7 +788,6 @@
-       debug_tcg="yes"
+@@ -809,7 +808,6 @@
+       meson_option_parse --enable-debug-graph-lock ""
        meson_option_parse --enable-debug-mutex ""
        meson_option_add -Doptimization=0
 -      fortify_source="no"
    ;;
    --enable-sanitizers) sanitizers="yes"
    ;;
        meson_option_parse --enable-debug-mutex ""
        meson_option_add -Doptimization=0
 -      fortify_source="no"
    ;;
    --enable-sanitizers) sanitizers="yes"
    ;;
-@@ -1691,20 +1689,6 @@
+@@ -1718,20 +1716,6 @@
      ccache_cpp2=yes
  fi
  
      ccache_cpp2=yes
  fi
  
@@ -38,7 +38,7 @@ diff -ur qemu-7.2.0.orig/configure qemu-7.2.0/configure
  ##########################################
  # checks for sanitizers
  
  ##########################################
  # checks for sanitizers
  
-@@ -2207,10 +2191,6 @@
+@@ -2234,10 +2218,6 @@
  
  write_c_skeleton
  
  
  write_c_skeleton
  
diff --git a/qemu-user-execve.patch b/qemu-user-execve.patch
deleted file mode 100644 (file)
index 4faf735..0000000
+++ /dev/null
@@ -1,223 +0,0 @@
-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;
index 96dbae18cf28bdbccc645028a7aa9aa913121327..373f9e925291d3e8697c6dd6b03cec187bcbfc24 100644 (file)
@@ -1,6 +1,6 @@
-diff -ur qemu-7.2.0.orig/fsdev/virtfs-proxy-helper.c qemu-7.2.0/fsdev/virtfs-proxy-helper.c
---- qemu-7.2.0.orig/fsdev/virtfs-proxy-helper.c        2023-02-08 21:30:45.812050860 +0100
-+++ qemu-7.2.0/fsdev/virtfs-proxy-helper.c     2023-02-08 21:31:51.135037450 +0100
+diff -ur qemu-8.0.3.orig/fsdev/virtfs-proxy-helper.c qemu-8.0.3/fsdev/virtfs-proxy-helper.c
+--- qemu-8.0.3.orig/fsdev/virtfs-proxy-helper.c        2023-07-22 15:22:45.090597707 +0200
++++ qemu-8.0.3/fsdev/virtfs-proxy-helper.c     2023-07-22 15:23:27.989209163 +0200
 @@ -10,6 +10,7 @@
   */
  
 @@ -10,6 +10,7 @@
   */
  
@@ -16,4 +16,4 @@ diff -ur qemu-7.2.0.orig/fsdev/virtfs-proxy-helper.c qemu-7.2.0/fsdev/virtfs-pro
 -#include "qemu/xattr.h"
  #include "9p-iov-marshal.h"
  #include "hw/9pfs/9p-proxy.h"
 -#include "qemu/xattr.h"
  #include "9p-iov-marshal.h"
  #include "hw/9pfs/9p-proxy.h"
- #include "fsdev/9p-iov-marshal.h"
+ #include "hw/9pfs/9p-util.h"
index 204801091ebb5ab1f504c6a6448bca7a48e80a0f..6a74a06f639f74d5e37948434498d9674ee2e22d 100644 (file)
--- a/qemu.spec
+++ b/qemu.spec
@@ -4,7 +4,7 @@
 # Conditional build:
 %bcond_without sdl             # SDL UI and audio support
 %bcond_without opengl          # Don't require GL deps
 # 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 glusterfs       # GlusterFS backend
 %bcond_without rdma            # RDMA-based migration support
 %bcond_without gtk3            # Do not build GTK+ UI
@@ -29,7 +29,7 @@
 %bcond_without virgl           # build virgl support
 %bcond_without xkbcommon       # xkbcommon support
 
 %bcond_without virgl           # build virgl support
 %bcond_without xkbcommon       # xkbcommon support
 
-%if %{without gtk}
+%if %{without gtk3}
 %undefine      with_vte
 %endif
 %ifarch x32
 %undefine      with_vte
 %endif
 %ifarch x32
 Summary:       QEMU CPU Emulator
 Summary(pl.UTF-8):     QEMU - emulator procesora
 Name:          qemu
 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
 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
 # Loads kvm kernel modules at boot
 Source3:       kvm-modules-load.conf
 # Creates /dev/kvm
@@ -62,7 +62,7 @@ Source12:     99-%{name}-guest-agent.rules
 Source13:      %{name}-guest-agent.init
 Source14:      %{name}-guest-agent.logrotate
 Patch0:                %{name}-no-fortify.patch
 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/
 Patch3:                %{name}-xattr.patch
 Patch4:                libjpeg-boolean.patch
 URL:           https://www.qemu.org/
@@ -72,45 +72,58 @@ URL:                https://www.qemu.org/
 %{?with_sdl:BuildRequires:     SDL2-devel >= 2.0}
 %{?with_sdl:BuildRequires:     SDL2_image-devel >= 2.0}
 BuildRequires: alsa-lib-devel
 %{?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
 %{?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: 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}
 # 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: libaio-devel
+BuildRequires: libbpf-devel
 %{?with_smartcard:BuildRequires:       libcacard-devel >= 2.5.1}
 BuildRequires: libcap-ng-devel
 %{?with_smartcard:BuildRequires:       libcacard-devel >= 2.5.1}
 BuildRequires: libcap-ng-devel
+BuildRequires: libdrm-devel
 %{?with_opengl:BuildRequires:  libepoxy-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}
 %{?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}
 %{?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
 # for tests only
 #BuildRequires:        libtasn1-devel
+BuildRequires: libu2f-emu-devel
 BuildRequires: libusb-devel >= 1.0.22
 BuildRequires: libusb-devel >= 1.0.22
-BuildRequires: liburing-devel
+BuildRequires: liburing-devel >= 0.3
 BuildRequires: libuuid-devel
 BuildRequires: libxml2-devel >= 2.0
 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: lzfse-devel
 BuildRequires: lzo-devel >= 2
+BuildRequires: meson >= 0.59.3
 %{?with_multipath:BuildRequires:       multipath-tools-devel}
 BuildRequires: ncurses-devel
 %{?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
 %{?with_smartcard:BuildRequires:       nss-devel >= 1:3.12.8}
 BuildRequires: numactl-devel
 BuildRequires: pam-devel
@@ -120,7 +133,9 @@ BuildRequires:      pixman-devel >= 0.21.8
 BuildRequires: pkgconfig
 %{?with_pmem:BuildRequires:    pmdk-devel}
 %{?with_pulseaudio:BuildRequires:      pulseaudio-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: rpmbuild(macros) >= 1.644
 %{?with_system_seabios:BuildRequires:  seabios}
 BuildRequires: sed >= 4.0
@@ -130,7 +145,8 @@ BuildRequires:      sphinx-pdg
 BuildRequires: spice-protocol >= 0.12.3
 BuildRequires: spice-server-devel >= 0.12.5
 %endif
 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}
 BuildRequires: texi2html
 BuildRequires: texinfo
 %{?with_multipath:BuildRequires:       udev-devel}
@@ -141,17 +157,21 @@ BuildRequires:    which
 %{?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+
 %{?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
 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: xorg-lib-libX11-devel
+BuildRequires: xz
 BuildRequires: zlib-devel
 BuildRequires: zstd-devel >= 1.4.0
 %if %{with user_static}
 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: glibc-static
-BuildRequires: pcre-static
+BuildRequires: pcre2-8-static >= 10.32
 BuildRequires: zlib-static
 %endif
 Requires:      %{name}-img = %{version}-%{release}
 BuildRequires: zlib-static
 %endif
 Requires:      %{name}-img = %{version}-%{release}
@@ -177,17 +197,23 @@ Requires: %{name}-system-tricore = %{version}-%{release}
 Requires:      %{name}-system-x86 = %{version}-%{release}
 Requires:      %{name}-system-xtensa = %{version}-%{release}
 Requires:      %{name}-user = %{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 \
 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} \
 %{?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 \
 %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} \
 Requires:      libusb >= 1.0.22 \
 Requires:      pixman >= 0.21.8 \
 %if %{with spice} \
@@ -195,8 +221,7 @@ Requires:   spice-server-libs >= 0.12.5 \
 %endif \
 %if %{with usbredir} \
 Requires:      usbredir >= 0.6 \
 %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/.*
 
 # don't strip/chrpath anything in there; these are boot images, roms etc
 %define                _noautostrip    .*%{_datadir}/qemu/.*
@@ -243,18 +268,19 @@ Requires(pre):    /bin/id
 Requires(pre): /usr/bin/getgid
 Requires(pre): /usr/sbin/groupadd
 Requires(pre): /usr/sbin/useradd
 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}
 %{?with_vte:Requires:  vte >= 0.32.0}
+Requires:      zstd >= 1.4.0
 Provides:      group(qemu)
 Provides:      user(qemu)
 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-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
 Conflicts:     qemu < 1.0-2
 
 %description common
@@ -271,24 +297,22 @@ Ten pakiet udostępnia wspólne pliki wymagane przez wszystkie
 środowiska QEMU.
 
 %package devel
 ś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
 Group:         Development/Libraries
-Requires:      %{name} = %{version}-%{release}
+BuildArch:     noarch
 
 %description devel
 
 %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
 
 %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
 
 %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
 Conflicts:     qemu < 1.0-2
 
 %description img
@@ -299,12 +323,25 @@ images.
 Ten pakiet udostępnia działające z linii poleceń narzędzia do operacji
 na obrazach dysków.
 
 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}
 %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
 
 %description user
 QEMU is a generic and open source processor emulator which achieves a
@@ -343,7 +380,7 @@ Summary(pl.UTF-8):  QEMU - emulator systemu z procesorem AArch64
 Group:         Applications/Emulators
 Requires:      %{name}-common = %{version}-%{release}
 %systempkg_req
 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
 
 %description system-aarch64
 QEMU is a generic and open source processor emulator which achieves a
@@ -363,7 +400,7 @@ Summary(pl.UTF-8):  QEMU - emulator systemu z procesorem Alpha
 Group:         Applications/Emulators
 Requires:      %{name}-common = %{version}-%{release}
 %systempkg_req
 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
 
 %description system-alpha
 QEMU is a generic and open source processor emulator which achieves a
@@ -383,7 +420,7 @@ Summary(pl.UTF-8):  QEMU - emulator systemu z 32-bitowym procesorem ARM
 Group:         Applications/Emulators
 Requires:      %{name}-common = %{version}-%{release}
 %systempkg_req
 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
 
 %description system-arm
 QEMU is a generic and open source processor emulator which achieves a
@@ -403,7 +440,7 @@ Summary(pl.UTF-8):  QEMU - emulator systemu z procesorem AVR
 Group:         Applications/Emulators
 Requires:      %{name}-common = %{version}-%{release}
 %systempkg_req
 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
 
 %description system-avr
 QEMU is a generic and open source processor emulator which achieves a
@@ -423,7 +460,7 @@ Summary(pl.UTF-8):  QEMU - emulator systemu z procesorem CRIS
 Group:         Applications/Emulators
 Requires:      %{name}-common = %{version}-%{release}
 %systempkg_req
 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
 
 %description system-cris
 QEMU is a generic and open source processor emulator which achieves a
@@ -481,7 +518,7 @@ Summary(pl.UTF-8):  QEMU - emulator systemu z procesorem m68k
 Group:         Applications/Emulators
 Requires:      %{name}-common = %{version}-%{release}
 %systempkg_req
 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
 
 %description system-m68k
 QEMU is a generic and open source processor emulator which achieves a
@@ -503,7 +540,7 @@ Summary(pl.UTF-8):  QEMU - emulator systemu z procesorem MicroBlaze
 Group:         Applications/Emulators
 Requires:      %{name}-common = %{version}-%{release}
 %systempkg_req
 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
 
 %description system-microblaze
 QEMU is a generic and open source processor emulator which achieves a
@@ -523,7 +560,7 @@ Summary(pl.UTF-8):  QEMU - emulator systemu z procesorem MIPS
 Group:         Applications/Emulators
 Requires:      %{name}-common = %{version}-%{release}
 %systempkg_req
 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
 
 %description system-mips
 QEMU is a generic and open source processor emulator which achieves a
@@ -562,8 +599,8 @@ Summary(pl.UTF-8):  QEMU - emulator systemu z procesorem OpenRISC
 Group:         Applications/Emulators
 Requires:      %{name}-common = %{version}-%{release}
 %systempkg_req
 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
 
 %description system-or1k
 QEMU is a generic and open source processor emulator which achieves a
@@ -583,7 +620,7 @@ Summary(pl.UTF-8):  QEMU - emulator systemu z procesorem PowerPC
 Group:         Applications/Emulators
 Requires:      %{name}-common = %{version}-%{release}
 %systempkg_req
 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
 
 %description system-ppc
 QEMU is a generic and open source processor emulator which achieves a
@@ -660,7 +697,7 @@ Summary(pl.UTF-8):  QEMU - emulator systemu z procesorem S390x (IBM Z)
 Group:         Applications/Emulators
 Requires:      %{name}-common = %{version}-%{release}
 %systempkg_req
 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
 
 %description system-s390x
 QEMU is a generic and open source processor emulator which achieves a
@@ -680,7 +717,7 @@ Summary(pl.UTF-8):  QEMU - emulator systemu z procesorem SH4
 Group:         Applications/Emulators
 Requires:      %{name}-common = %{version}-%{release}
 %systempkg_req
 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
 
 %description system-sh4
 QEMU is a generic and open source processor emulator which achieves a
@@ -700,7 +737,7 @@ Summary(pl.UTF-8):  QEMU - emulator systemu z procesorem SPARC
 Group:         Applications/Emulators
 Requires:      %{name}-common = %{version}-%{release}
 %systempkg_req
 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
 
 %description system-sparc
 QEMU is a generic and open source processor emulator which achieves a
@@ -727,7 +764,7 @@ good emulation speed by using dynamic translation.
 
 This package provides the system emulator with TriCore CPU.
 
 
 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.
 
 QEMU to ogólny, mający otwarte źródła emulator procesora, osiągający
 dobrą szybkość emulacji dzięki użyciu translacji dynamicznej.
 
@@ -740,8 +777,8 @@ Group:              Applications/Emulators
 Requires:      %{name}-common = %{version}-%{release}
 %{?with_system_seabios:Requires:       seabios}
 %systempkg_req
 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
 
 %description system-x86
 QEMU is a generic and open source processor emulator which achieves a
@@ -761,7 +798,7 @@ Summary(pl.UTF-8):  QEMU - emulator systemu z procesorem Xtensa
 Group:         Applications/Emulators
 Requires:      %{name}-common = %{version}-%{release}
 %systempkg_req
 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
 
 %description system-xtensa
 QEMU is a generic and open source processor emulator which achieves a
@@ -779,8 +816,9 @@ Ten pakiet zawiera emulator systemu z procesorem Xtensa.
 Summary:       QEMU guest agent
 Summary(pl.UTF-8):     Agent gościa QEMU
 Group:         Daemons
 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
 Conflicts:     SysVinit < 2.96-2
 
 %description guest-agent
@@ -803,11 +841,24 @@ systemach-gościach, komunikującego się kanałem virtio-serial o nazwie
 
 Ten pakiet nie musi być zainstalowany w systemie hosta.
 
 
 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}
 %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
 
 %description module-block-curl
 QEMU block device support for CURL. It allows to access remote disks
@@ -865,6 +916,7 @@ Summary:    QEMU module for 'rbd' block devices
 Summary(pl.UTF-8):     Moduł QEMU dla urządeń blokowych typu 'rbd'
 Group:         Applications/Emulators
 Requires:      %{name}-common = %{version}-%{release}
 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.
 
 %description module-block-rbd
 QEMU block device support for Ceph/RBD volumes.
@@ -877,7 +929,7 @@ Summary:    QEMU module for 'ssh' block devices
 Summary(pl.UTF-8):     Moduł QEMU dla urządeń blokowych typu 'ssh'
 Group:         Applications/Emulators
 Requires:      %{name}-common = %{version}-%{release}
 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
 
 %description module-block-ssh
 QEMU block device support for accessing remote disks using the Secure
@@ -887,6 +939,18 @@ Shell (SSH) protocol.
 Moduł urządzeń blokowych QEMU do dostępu do zdalnych dysków poprzez
 protokół SSH (Secure Shell).
 
 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
 %package module-ui-gtk
 Summary:       QEMU GTK UI driver
 Summary(pl.UTF-8):     Sterownik interfejsu użytkownika GTK dla QEMU
@@ -935,7 +999,7 @@ Sondy systemtap/dtrace dla QEMU.
 
 %if %{with systemtap}
 # don't require stap binary during build
 
 %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
 
 %endif
 %build
 
@@ -971,10 +1035,11 @@ build() {
 build dynamic \
        --extra-cflags="%{rpmcflags} %{rpmcppflags}" \
        --extra-ldflags="%{rpmldflags} -Wl,-z,relro -Wl,-z,now" \
 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-attr \
        %{__enable_disable brlapi} \
        --enable-cap-ng \
+       --enable-capstone \
        --enable-curl \
        --enable-curses \
        --enable-docs \
        --enable-curl \
        --enable-curses \
        --enable-docs \
@@ -993,6 +1058,7 @@ build dynamic \
        %{__enable_disable rdma} \
        %{__enable_disable sdl} \
        %{__enable_disable seccomp} \
        %{__enable_disable rdma} \
        %{__enable_disable sdl} \
        %{__enable_disable seccomp} \
+       --enable-slirp=system \
        %{__enable_disable spice} \
        %{__enable_disable smartcard} \
        %{__enable_disable snappy} \
        %{__enable_disable spice} \
        %{__enable_disable smartcard} \
        %{__enable_disable snappy} \
@@ -1025,6 +1091,7 @@ build static \
        --disable-nettle \
        --disable-pie \
        --disable-sdl \
        --disable-nettle \
        --disable-pie \
        --disable-sdl \
+       --disable-slirp \
        --disable-spice \
        --disable-system \
        --disable-tools \
        --disable-spice \
        --disable-system \
        --disable-tools \
@@ -1091,12 +1158,6 @@ install -p %{SOURCE14} $RPM_BUILD_ROOT/etc/logrotate.d/qemu-ga
 %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
 %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}
 %endif
 
 %if %{with gtk3}
@@ -1107,11 +1168,20 @@ done
 : > qemu.lang
 %endif
 
 : > 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
 
 # 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
 
 %clean
 rm -rf $RPM_BUILD_ROOT
 
@@ -1164,14 +1234,11 @@ fi
 %attr(755,root,root) %{_libexecdir}/vhost-user-gpu
 %endif
 %attr(755,root,root) %{_libexecdir}/virtfs-proxy-helper
 %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
 %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
 %if %{with oss}
 %attr(755,root,root) %{_libdir}/%{name}/audio-oss.so
 %endif
@@ -1194,7 +1261,6 @@ fi
 %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}/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
 %attr(755,root,root) %{_libdir}/%{name}/ui-egl-headless.so
 %if %{with opengl}
 %attr(755,root,root) %{_libdir}/%{name}/ui-opengl.so
@@ -1211,7 +1277,6 @@ fi
 %if %{with virgl}
 %{_datadir}/%{name}/vhost-user/50-qemu-gpu.json
 %endif
 %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
 %{_desktopdir}/qemu.desktop
 %{_iconsdir}/hicolor/*x*/apps/qemu.png
 %{_iconsdir}/hicolor/32x32/apps/qemu.bmp
@@ -1219,7 +1284,6 @@ fi
 %{_mandir}/man1/qemu.1*
 %{_mandir}/man1/qemu-storage-daemon.1*
 %{_mandir}/man1/virtfs-proxy-helper.1*
 %{_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*
 %{_mandir}/man7/qemu-block-drivers.7*
 %{_mandir}/man7/qemu-cpu-models.7*
 %{_mandir}/man7/qemu-qmp-ref.7*
@@ -1237,6 +1301,11 @@ fi
 %attr(755,root,root) %{_bindir}/qemu-img
 %{_mandir}/man1/qemu-img.1*
 
 %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
 %files user
 %defattr(644,root,root,755)
 %attr(755,root,root) %{_bindir}/qemu-aarch64
@@ -1499,7 +1568,6 @@ fi
 %{_datadir}/%{name}/pxe-rtl8139.rom
 %{_datadir}/%{name}/pxe-virtio.rom
 %{_datadir}/%{name}/qboot.rom
 %{_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
 %{_datadir}/%{name}/vgabios.bin
 %{_datadir}/%{name}/vgabios-ati.bin
 %{_datadir}/%{name}/vgabios-bochs-display.bin
@@ -1532,6 +1600,10 @@ fi
 %{_mandir}/man7/qemu-ga-ref.7*
 %{_mandir}/man8/qemu-ga.8*
 
 %{_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
 %files module-block-curl
 %defattr(644,root,root,755)
 %attr(755,root,root) %{_libdir}/%{name}/block-curl.so
@@ -1564,6 +1636,11 @@ fi
 %defattr(644,root,root,755)
 %attr(755,root,root) %{_libdir}/%{name}/block-ssh.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)
 %if %{with gtk3}
 %files module-ui-gtk
 %defattr(644,root,root,755)