diff options
Diffstat (limited to 'app-emulation/qemu/files')
19 files changed, 554 insertions, 139 deletions
diff --git a/app-emulation/qemu/files/qemu-2.11.1-capstone_include_path.patch b/app-emulation/qemu/files/qemu-2.11.1-capstone_include_path.patch deleted file mode 100644 index d79570ebb8aa..000000000000 --- a/app-emulation/qemu/files/qemu-2.11.1-capstone_include_path.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- qemu-2.11.1/include/disas/capstone.h 2018-02-14 22:53:22.000000000 +0100 -+++ qemu-2.11.1/include/disas/capstone.h 2018-02-17 20:12:12.754703951 +0100 -@@ -3,7 +3,7 @@ - - #ifdef CONFIG_CAPSTONE - --#include <capstone.h> -+#include <capstone/capstone.h> - - #else - diff --git a/app-emulation/qemu/files/qemu-5.2.0-cleaner-werror.patch b/app-emulation/qemu/files/qemu-5.2.0-cleaner-werror.patch deleted file mode 100644 index 33115f1df480..000000000000 --- a/app-emulation/qemu/files/qemu-5.2.0-cleaner-werror.patch +++ /dev/null @@ -1,40 +0,0 @@ --Wall -Wextra compains about unused arguments, -causes safe-stack to be mis-detected. ---- a/configure -+++ b/configure -@@ -2293,7 +2293,7 @@ fi - cat > $TMPC << EOF - #include <stdint.h> - #include <stdio.h> --int main(int argc, char *argv[]) { -+int main(void) { - return printf("%zu", SIZE_MAX); - } - EOF -@@ -4911,7 +4911,7 @@ fi - - if test "$safe_stack" = "yes"; then - cat > $TMPC << EOF --int main(int argc, char *argv[]) -+int main(void) - { - #if ! __has_feature(safe_stack) - #error SafeStack Disabled -@@ -4933,7 +4933,7 @@ EOF - fi - else - cat > $TMPC << EOF --int main(int argc, char *argv[]) -+int main(void) - { - #if defined(__has_feature) - #if __has_feature(safe_stack) -@@ -5283,7 +5283,7 @@ static const int Z = 1; - #define TAUT(X) ((X) == Z) - #define PAREN(X, Y) (X == Y) - #define ID(X) (X) --int main(int argc, char *argv[]) -+int main(void) - { - int x = 0, y = 0; - x = ID(x); diff --git a/app-emulation/qemu/files/qemu-5.2.0-dce-locks.patch b/app-emulation/qemu/files/qemu-5.2.0-dce-locks.patch deleted file mode 100644 index 679a9f391b0b..000000000000 --- a/app-emulation/qemu/files/qemu-5.2.0-dce-locks.patch +++ /dev/null @@ -1,18 +0,0 @@ -Fix CFLAGS=-Og build break. -Og fails because gcc does not enable dead -code elimination (but does set __OPTIMIZE__ define). - -The fix avoids DCE reliance downstream entirely. - -Reported-by: Luke-Jr -Bug: https://bugs.gentoo.org/782364 ---- a/include/qemu/lockable.h -+++ b/include/qemu/lockable.h -@@ -28,7 +28,7 @@ struct QemuLockable { - * to QEMU_MAKE_LOCKABLE. For optimized builds, we can rely on dead-code elimination - * from the compiler, and give the errors already at link time. - */ --#if defined(__OPTIMIZE__) && !defined(__SANITIZE_ADDRESS__) -+#if defined(__OPTIMIZE__) && !defined(__SANITIZE_ADDRESS__) && defined(VALIDATE_LOCKS_VIA_DCE) - void unknown_lock_type(void *); - #else - static inline void unknown_lock_type(void *unused) diff --git a/app-emulation/qemu/files/qemu-5.2.0-strings.patch b/app-emulation/qemu/files/qemu-5.2.0-strings.patch deleted file mode 100644 index 0b3dcdce78c9..000000000000 --- a/app-emulation/qemu/files/qemu-5.2.0-strings.patch +++ /dev/null @@ -1,23 +0,0 @@ -https://bugs.gentoo.org/759310 ---- a/configure -+++ b/configure -@@ -521,6 +521,7 @@ ld="${LD-${cross_prefix}ld}" - ranlib="${RANLIB-${cross_prefix}ranlib}" - nm="${NM-${cross_prefix}nm}" - strip="${STRIP-${cross_prefix}strip}" -+strings="${STRINGS-${cross_prefix}strings}" - windres="${WINDRES-${cross_prefix}windres}" - pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}" - query_pkg_config() { -@@ -2265,9 +2266,9 @@ int main(int argc, char *argv[]) { - EOF - - if compile_object ; then -- if strings -a $TMPO | grep -q BiGeNdIaN ; then -+ if $strings -a $TMPO | grep -q BiGeNdIaN ; then - bigendian="yes" -- elif strings -a $TMPO | grep -q LiTtLeEnDiAn ; then -+ elif $strings -a $TMPO | grep -q LiTtLeEnDiAn ; then - bigendian="no" - else - echo big/little test failed diff --git a/app-emulation/qemu/files/qemu-6.1.0-automagic-libbpf.patch b/app-emulation/qemu/files/qemu-6.1.0-automagic-libbpf.patch deleted file mode 100644 index d067650dc8fa..000000000000 --- a/app-emulation/qemu/files/qemu-6.1.0-automagic-libbpf.patch +++ /dev/null @@ -1,21 +0,0 @@ -commit 080832e4f4801a28bd1170c49e61f6a0f5f05d03 -Author: Paolo Bonzini <pbonzini@redhat.com> -Date: Tue Sep 7 12:45:12 2021 +0200 - - ebpf: only include in system emulators - - eBPF files are being included in user emulators, which is useless and - also breaks compilation because ebpf/trace-events is only processed - if a system emulator is included in the build. - - Resolves: https://gitlab.com/qemu-project/qemu/-/issues/566 - Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> - Signed-off-by: Jason Wang <jasowang@redhat.com> - -diff --git a/ebpf/meson.build b/ebpf/meson.build -index 9cd0635370..2dd0fd8948 100644 ---- a/ebpf/meson.build -+++ b/ebpf/meson.build -@@ -1 +1 @@ --common_ss.add(when: libbpf, if_true: files('ebpf_rss.c'), if_false: files('ebpf_rss-stub.c')) -+softmmu_ss.add(when: libbpf, if_true: files('ebpf_rss.c'), if_false: files('ebpf_rss-stub.c')) diff --git a/app-emulation/qemu/files/qemu-6.1.0-strings.patch b/app-emulation/qemu/files/qemu-6.1.0-strings.patch deleted file mode 100644 index 2efe7b29330a..000000000000 --- a/app-emulation/qemu/files/qemu-6.1.0-strings.patch +++ /dev/null @@ -1,26 +0,0 @@ -Forward-ported from original patch for 5.2.0. - -diff --git a/configure b/configure -index da2501489f..4660ee3ee5 100755 ---- a/configure -+++ b/configure -@@ -516,6 +516,7 @@ ld="${LD-${cross_prefix}ld}" - ranlib="${RANLIB-${cross_prefix}ranlib}" - nm="${NM-${cross_prefix}nm}" - strip="${STRIP-${cross_prefix}strip}" -+strings="${STRINGS-${cross_prefix}strings}" - windres="${WINDRES-${cross_prefix}windres}" - pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}" - query_pkg_config() { -@@ -2380,9 +2381,9 @@ int main(int argc, char *argv[]) - EOF - - if compile_prog ; then -- if strings -a $TMPE | grep -q BiGeNdIaN ; then -+ if $strings -a $TMPE | grep -q BiGeNdIaN ; then - bigendian="yes" -- elif strings -a $TMPE | grep -q LiTtLeEnDiAn ; then -+ elif $strings -a $TMPE | grep -q LiTtLeEnDiAn ; then - bigendian="no" - else - echo big/little test failed diff --git a/app-emulation/qemu/files/qemu-7.1.0-also-build-virtfs-proxy-helper.patch b/app-emulation/qemu/files/qemu-7.1.0-also-build-virtfs-proxy-helper.patch new file mode 100644 index 000000000000..b6f3078a6906 --- /dev/null +++ b/app-emulation/qemu/files/qemu-7.1.0-also-build-virtfs-proxy-helper.patch @@ -0,0 +1,32 @@ +From d02ea89239768c93651a161d057f2bf04d56a024 Mon Sep 17 00:00:00 2001 +From: Matthias Maier <tamiko@43-1.org> +Date: Mon, 4 Apr 2022 12:56:59 +0200 +Subject: [PATCH] also build virtfs-proxy-helper + +The Gentoo ebuild splits the qemu build into a softmmu, user and tool +phase in order to be able to build and link some of the qemu emulators +statically. This unfortunately has the consequence that we never +configure with "have_virtfs" and "have_tools" at the same time. + +As a workaround, simply build the virtfs userland unconditionally. After +all, it is a tiny executable +--- + meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/meson.build b/meson.build +index 65a885ea69..29ce7a5a8e 100644 +--- a/meson.build ++++ b/meson.build +@@ -1684,7 +1684,7 @@ have_virtfs = get_option('virtfs') \ + .disable_auto_if(not have_tools and not have_system) \ + .allowed() + +-have_virtfs_proxy_helper = targetos != 'darwin' and have_virtfs and have_tools ++have_virtfs_proxy_helper = have_tools and libattr.found() and libcap_ng.found() + + if get_option('block_drv_ro_whitelist') == '' + config_host_data.set('CONFIG_BDRV_RO_WHITELIST', '') +-- +2.35.1 + diff --git a/app-emulation/qemu/files/qemu-7.1.0-capstone-include-path.patch b/app-emulation/qemu/files/qemu-7.1.0-capstone-include-path.patch new file mode 100644 index 000000000000..585e798345f4 --- /dev/null +++ b/app-emulation/qemu/files/qemu-7.1.0-capstone-include-path.patch @@ -0,0 +1,31 @@ +Forward ported from qemu-2.11.1-capstone_include_path.patch. +This time also fix the capstone.h header check to use the path we're +already patching in. + +Bug: https://bugs.gentoo.org/873157 +diff --git a/include/disas/capstone.h b/include/disas/capstone.h +index e29068dd97..d8fdc5d537 100644 +--- a/include/disas/capstone.h ++++ b/include/disas/capstone.h +@@ -3,7 +3,7 @@ + + #ifdef CONFIG_CAPSTONE + +-#include <capstone.h> ++#include <capstone/capstone.h> + + #else + +diff --git a/meson.build b/meson.build +index 20fddbd707..50ce96bbd1 100644 +--- a/meson.build ++++ b/meson.build +@@ -2605,7 +2605,7 @@ if not get_option('capstone').auto() or have_system or have_user + # that reports a wrong -I path, causing the #include to + # fail later. If the system has such a broken version + # do not use it. +- if capstone.found() and not cc.compiles('#include <capstone.h>', ++ if capstone.found() and not cc.compiles('#include <capstone/capstone.h>', + dependencies: [capstone]) + capstone = not_found + if get_option('capstone').enabled() diff --git a/app-emulation/qemu/files/qemu-7.2.0-disable-gmp.patch b/app-emulation/qemu/files/qemu-7.2.0-disable-gmp.patch new file mode 100644 index 000000000000..3050228b4e0c --- /dev/null +++ b/app-emulation/qemu/files/qemu-7.2.0-disable-gmp.patch @@ -0,0 +1,45 @@ +commit 433c2acd1b9c3f7f5903273e85fed9a7f9157b23 +Author: John Helmert III <ajak@gentoo.org> +Date: Wed Jan 4 12:25:08 2023 -0600 + + meson.build: disable gmp + + gmp isn't required, and we want to avoid linking to it automatigcally + in Gentoo. + + Bug: https://bugs.gentoo.org/886207 + Signed-off-by: John Helmert III <ajak@gentoo.org> + +diff --git a/meson.build b/meson.build +index 5c6b5a1c75..2f9550362d 100644 +--- a/meson.build ++++ b/meson.build +@@ -1234,15 +1234,6 @@ if not gnutls_crypto.found() + endif + endif + +-gmp = dependency('gmp', required: false, method: 'pkg-config', kwargs: static_kwargs) +-if nettle.found() and gmp.found() +- hogweed = dependency('hogweed', version: '>=3.4', +- method: 'pkg-config', +- required: get_option('nettle'), +- kwargs: static_kwargs) +-endif +- +- + gtk = not_found + gtkx11 = not_found + vte = not_found +diff --git a/meson_options.txt b/meson_options.txt +index 4b749ca549..e06b274960 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -277,6 +277,8 @@ option('vduse_blk_export', type: 'feature', value: 'auto', + + option('capstone', type: 'feature', value: 'auto', + description: 'Whether and how to find the capstone library') ++option('gmp', type: 'feature', value: 'auto', ++ description: 'Whether or not to find the gmp library') + option('fdt', type: 'combo', value: 'auto', + choices: ['disabled', 'enabled', 'auto', 'system', 'internal'], + description: 'Whether and how to find the libfdt library') diff --git a/app-emulation/qemu/files/qemu-7.2.0-linux-headers-6.2-glibc-2.36.patch b/app-emulation/qemu/files/qemu-7.2.0-linux-headers-6.2-glibc-2.36.patch new file mode 100644 index 000000000000..2a58ca1ad735 --- /dev/null +++ b/app-emulation/qemu/files/qemu-7.2.0-linux-headers-6.2-glibc-2.36.patch @@ -0,0 +1,137 @@ +https://bugs.gentoo.org/895662 +https://gitlab.com/qemu-project/qemu/-/commit/9f0246539ae84a5e21efd1cc4516fc343f08115a +https://gitlab.com/qemu-project/qemu/-/commit/6003159ce18faad4e1bc7bf9c85669019cd4950e + +From 9f0246539ae84a5e21efd1cc4516fc343f08115a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com> +Date: Tue, 10 Jan 2023 12:49:00 -0500 +Subject: [PATCH] Revert "linux-user: add more compat ioctl definitions" +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This reverts commit c5495f4ecb0cdaaf2e9dddeb48f1689cdb520ca0. + +glibc has fixed (in 2.36.9000-40-g774058d729) the problem +that caused a clash when both sys/mount.h annd linux/mount.h +are included, and backported this to the 2.36 stable release +too: + + https://sourceware.org/glibc/wiki/Release/2.36#Usage_of_.3Clinux.2Fmount.h.3E_and_.3Csys.2Fmount.h.3E + +It is saner for QEMU to remove the workaround it applied for +glibc 2.36 and expect distros to ship the 2.36 maint release +with the fix. This avoids needing to add a further workaround +to QEMU to deal with the fact that linux/brtfs.h now also pulls +in linux/mount.h via linux/fs.h since Linux 6.1 + +Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> +Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> +Message-Id: <20230110174901.2580297-2-berrange@redhat.com> +Signed-off-by: Laurent Vivier <laurent@vivier.eu> +--- a/linux-user/syscall.c ++++ b/linux-user/syscall.c +@@ -111,31 +111,6 @@ + #define FS_IOC32_SETFLAGS _IOW('f', 2, int) + #define FS_IOC32_GETVERSION _IOR('v', 1, int) + #define FS_IOC32_SETVERSION _IOW('v', 2, int) +- +-#define BLKGETSIZE64 _IOR(0x12,114,size_t) +-#define BLKDISCARD _IO(0x12,119) +-#define BLKIOMIN _IO(0x12,120) +-#define BLKIOOPT _IO(0x12,121) +-#define BLKALIGNOFF _IO(0x12,122) +-#define BLKPBSZGET _IO(0x12,123) +-#define BLKDISCARDZEROES _IO(0x12,124) +-#define BLKSECDISCARD _IO(0x12,125) +-#define BLKROTATIONAL _IO(0x12,126) +-#define BLKZEROOUT _IO(0x12,127) +- +-#define FIBMAP _IO(0x00,1) +-#define FIGETBSZ _IO(0x00,2) +- +-struct file_clone_range { +- __s64 src_fd; +- __u64 src_offset; +- __u64 src_length; +- __u64 dest_offset; +-}; +- +-#define FICLONE _IOW(0x94, 9, int) +-#define FICLONERANGE _IOW(0x94, 13, struct file_clone_range) +- + #else + #include <linux/fs.h> + #endif +-- +GitLab + +From 6003159ce18faad4e1bc7bf9c85669019cd4950e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com> +Date: Tue, 10 Jan 2023 12:49:01 -0500 +Subject: [PATCH] Revert "linux-user: fix compat with glibc >= 2.36 + sys/mount.h" +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This reverts commit 3cd3df2a9584e6f753bb62a0028bd67124ab5532. + +glibc has fixed (in 2.36.9000-40-g774058d729) the problem +that caused a clash when both sys/mount.h annd linux/mount.h +are included, and backported this to the 2.36 stable release +too: + + https://sourceware.org/glibc/wiki/Release/2.36#Usage_of_.3Clinux.2Fmount.h.3E_and_.3Csys.2Fmount.h.3E + +It is saner for QEMU to remove the workaround it applied for +glibc 2.36 and expect distros to ship the 2.36 maint release +with the fix. This avoids needing to add a further workaround +to QEMU to deal with the fact that linux/brtfs.h now also pulls +in linux/mount.h via linux/fs.h since Linux 6.1 + +Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> +Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> +Message-Id: <20230110174901.2580297-3-berrange@redhat.com> +Signed-off-by: Laurent Vivier <laurent@vivier.eu> +--- a/linux-user/syscall.c ++++ b/linux-user/syscall.c +@@ -95,25 +95,7 @@ + #include <linux/soundcard.h> + #include <linux/kd.h> + #include <linux/mtio.h> +- +-#ifdef HAVE_SYS_MOUNT_FSCONFIG +-/* +- * glibc >= 2.36 linux/mount.h conflicts with sys/mount.h, +- * which in turn prevents use of linux/fs.h. So we have to +- * define the constants ourselves for now. +- */ +-#define FS_IOC_GETFLAGS _IOR('f', 1, long) +-#define FS_IOC_SETFLAGS _IOW('f', 2, long) +-#define FS_IOC_GETVERSION _IOR('v', 1, long) +-#define FS_IOC_SETVERSION _IOW('v', 2, long) +-#define FS_IOC_FIEMAP _IOWR('f', 11, struct fiemap) +-#define FS_IOC32_GETFLAGS _IOR('f', 1, int) +-#define FS_IOC32_SETFLAGS _IOW('f', 2, int) +-#define FS_IOC32_GETVERSION _IOR('v', 1, int) +-#define FS_IOC32_SETVERSION _IOW('v', 2, int) +-#else + #include <linux/fs.h> +-#endif + #include <linux/fd.h> + #if defined(CONFIG_FIEMAP) + #include <linux/fiemap.h> +--- a/meson.build ++++ b/meson.build +@@ -2046,8 +2046,6 @@ config_host_data.set('HAVE_OPTRESET', + cc.has_header_symbol('getopt.h', 'optreset')) + config_host_data.set('HAVE_IPPROTO_MPTCP', + cc.has_header_symbol('netinet/in.h', 'IPPROTO_MPTCP')) +-config_host_data.set('HAVE_SYS_MOUNT_FSCONFIG', +- cc.has_header_symbol('sys/mount.h', 'FSCONFIG_SET_FLAG')) + + # has_member + config_host_data.set('HAVE_SIGEV_NOTIFY_THREAD_ID', +-- +GitLab diff --git a/app-emulation/qemu/files/qemu-8.0.0-disable-keymap.patch b/app-emulation/qemu/files/qemu-8.0.0-disable-keymap.patch new file mode 100644 index 000000000000..6a5437056e6f --- /dev/null +++ b/app-emulation/qemu/files/qemu-8.0.0-disable-keymap.patch @@ -0,0 +1,29 @@ +diff --git a/meson.build b/meson.build +index c44d05a13..5c5c09894 100644 +--- a/meson.build ++++ b/meson.build +@@ -671,6 +671,8 @@ endif + + if get_option('xkbcommon').auto() and not have_system and not have_tools + xkbcommon = not_found ++elif get_option('xkbcommon').disabled() ++ xkbcommon = not_found + else + xkbcommon = dependency('xkbcommon', required: get_option('xkbcommon'), + method: 'pkg-config', kwargs: static_kwargs) +diff --git a/pc-bios/keymaps/meson.build b/pc-bios/keymaps/meson.build +index 158a3b410..3bb318a23 100644 +--- a/pc-bios/keymaps/meson.build ++++ b/pc-bios/keymaps/meson.build +@@ -33,8 +33,10 @@ keymaps = { + 'tr': '-l tr', + } + +-if meson.is_cross_build() or not xkbcommon.found() ++if meson.is_cross_build() + native_qemu_keymap = find_program('qemu-keymap', required: false, disabler: true) ++elif get_option('xkbcommon').disabled() ++ native_qemu_keymap = not_found + else + native_qemu_keymap = qemu_keymap + endif diff --git a/app-emulation/qemu/files/qemu-8.0.0-make.patch b/app-emulation/qemu/files/qemu-8.0.0-make.patch new file mode 100644 index 000000000000..40bafd490052 --- /dev/null +++ b/app-emulation/qemu/files/qemu-8.0.0-make.patch @@ -0,0 +1,13 @@ +diff --git a/configure b/configure +index 800b5850f..331e8950d 100755 +--- a/configure ++++ b/configure +@@ -1069,7 +1069,7 @@ then + fi + fi + +-if ! has "$make" ++if ! has $make + then + error_exit "GNU make ($make) not found" + fi diff --git a/app-emulation/qemu/files/qemu-8.0.0-remove-python-meson-check.patch b/app-emulation/qemu/files/qemu-8.0.0-remove-python-meson-check.patch new file mode 100644 index 000000000000..07d3836c57e4 --- /dev/null +++ b/app-emulation/qemu/files/qemu-8.0.0-remove-python-meson-check.patch @@ -0,0 +1,40 @@ +diff --git a/configure b/configure +index 4369fa5..7807ad5 100755 +--- a/configure ++++ b/configure +@@ -1095,34 +1095,7 @@ has_meson() { + fi + } + +-if test -z "$meson"; then +- if test "$explicit_python" = no && has_meson && version_ge "$(meson --version)" 0.61.5; then +- meson=meson +- elif test "$git_submodules_action" != 'ignore' ; then +- meson=git +- elif test -e "${source_path}/meson/meson.py" ; then +- meson=internal +- else +- if test "$explicit_python" = yes; then +- error_exit "--python requires using QEMU's embedded Meson distribution, but it was not found." +- else +- error_exit "Meson not found. Use --meson=/path/to/meson" +- fi +- fi +-else +- # Meson uses its own Python interpreter to invoke other Python scripts, +- # but the user wants to use the one they specified with --python. +- # +- # We do not want to override the distro Python interpreter (and sometimes +- # cannot: for example in Homebrew /usr/bin/meson is a bash script), so +- # just require --meson=git|internal together with --python. +- if test "$explicit_python" = yes; then +- case "$meson" in +- git | internal) ;; +- *) error_exit "--python requires using QEMU's embedded Meson distribution." ;; +- esac +- fi +-fi ++meson=meson + + if test "$meson" = git; then + git_submodules="${git_submodules} meson" diff --git a/app-emulation/qemu/files/qemu-8.1.0-also-build-virtfs-proxy-helper.patch b/app-emulation/qemu/files/qemu-8.1.0-also-build-virtfs-proxy-helper.patch new file mode 100644 index 000000000000..61ea0f36d90a --- /dev/null +++ b/app-emulation/qemu/files/qemu-8.1.0-also-build-virtfs-proxy-helper.patch @@ -0,0 +1,32 @@ +From d02ea89239768c93651a161d057f2bf04d56a024 Mon Sep 17 00:00:00 2001 +From: Matthias Maier <tamiko@43-1.org> +Date: Mon, 4 Apr 2022 12:56:59 +0200 +Subject: [PATCH] also build virtfs-proxy-helper + +The Gentoo ebuild splits the qemu build into a softmmu, user and tool +phase in order to be able to build and link some of the qemu emulators +statically. This unfortunately has the consequence that we never +configure with "have_virtfs" and "have_tools" at the same time. + +As a workaround, simply build the virtfs userland unconditionally. After +all, it is a tiny executable +--- + meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/meson.build b/meson.build +index 063c736aee..fda8639293 100644 +--- a/meson.build ++++ b/meson.build +@@ -2008,8 +2008,6 @@ have_virtfs = get_option('virtfs') \ + .allowed() + + have_virtfs_proxy_helper = get_option('virtfs_proxy_helper') \ +- .require(targetos != 'darwin', error_message: 'the virtfs proxy helper is incompatible with macOS') \ +- .require(have_virtfs, error_message: 'the virtfs proxy helper requires that virtfs is enabled') \ + .disable_auto_if(not have_tools) \ + .require(libcap_ng.found(), error_message: 'the virtfs proxy helper requires libcap-ng') \ + .allowed() +-- +2.35.1 + diff --git a/app-emulation/qemu/files/qemu-8.1.0-find-sphinx.patch b/app-emulation/qemu/files/qemu-8.1.0-find-sphinx.patch new file mode 100644 index 000000000000..b6ef6214af55 --- /dev/null +++ b/app-emulation/qemu/files/qemu-8.1.0-find-sphinx.patch @@ -0,0 +1,10 @@ +This gets confused by python-any-r1 and tries to find sphinx-build in ${T}. +--- a/docs/meson.build ++++ b/docs/meson.build +@@ -1,5 +1,4 @@ +-sphinx_build = find_program(fs.parent(python.full_path()) / 'sphinx-build', +- required: get_option('docs')) ++sphinx_build = find_program('sphinx-build', required: get_option('docs')) + + # Check if tools are available to build documentation. + build_docs = false diff --git a/app-emulation/qemu/files/qemu-8.1.0-skip-tests.patch b/app-emulation/qemu/files/qemu-8.1.0-skip-tests.patch new file mode 100644 index 000000000000..f668584e8d4b --- /dev/null +++ b/app-emulation/qemu/files/qemu-8.1.0-skip-tests.patch @@ -0,0 +1,64 @@ +* netdev-socket.c +qtest-i386/netdev-socket fails with: +``` +stderr: +qemu-system-i386: -netdev dgram,id=st0,remote.type=inet,remote.host=230.0.0.1,remote.port=1234: can't add socket to multicast group 230.0.0.1: No such device +Broken pipe +../tests/qtest/libqtest.c:191: kill_qemu() tried to terminate QEMU process but encountered exit status 1 (expected 0) +``` + +* vhost-user-test.c +qtest-x86_64/qos-test fails with a timeout: +``` +qemu-system-x86_64: Failed to set msg fds. +qemu-system-x86_64: vhost VQ 0 ring restore failed: -22: Invalid argument (22) +qemu-system-x86_64: Failed to set msg fds. +qemu-system-x86_64: vhost VQ 1 ring restore failed: -22: Invalid argument (22) +** +ERROR:../tests/qtest/vhost-user-test.c:892:wait_for_rings_started: assertion failed (ctpop64(s->rings) == count): (1 == 2) +** +ERROR:../tests/qtest/qos-test.c:191:subprocess_run_one_test: child process (/x86_64/pc/i440FX-pcihost/pci-bus-pc/pci-bus/virtio-net-pci/virtio-net/virtio-net-tests/vhost-user/reconnect/subprocess [6082]) failed unexpectedl +``` + +--- a/tests/qtest/netdev-socket.c ++++ b/tests/qtest/netdev-socket.c +@@ -498,6 +498,10 @@ int main(int argc, char **argv) + socket_init(); + g_test_init(&argc, &argv, NULL); + ++ /* XXX: Skip test for now on Gentoo, fails with "No such device" */ ++ g_test_skip("Skipping test known to fail on Gentoo"); ++ return 0; ++ + if (socket_check_protocol_support(&has_ipv4, &has_ipv6) < 0) { + g_error("socket_check_protocol_support() failed\n"); + } +--- a/tests/qtest/vhost-user-test.c ++++ b/tests/qtest/vhost-user-test.c +@@ -243,7 +243,7 @@ static bool wait_for_fds(TestServer *s) + + g_mutex_lock(&s->data_mutex); + +- end_time = g_get_monotonic_time() + 5 * G_TIME_SPAN_SECOND; ++ end_time = g_get_monotonic_time() + 30 * G_TIME_SPAN_SECOND; + while (!s->fds_num) { + if (!g_cond_wait_until(&s->data_cond, &s->data_mutex, end_time)) { + /* timeout has passed */ +@@ -672,7 +672,7 @@ static void wait_for_log_fd(TestServer *s) + gint64 end_time; + + g_mutex_lock(&s->data_mutex); +- end_time = g_get_monotonic_time() + 5 * G_TIME_SPAN_SECOND; ++ end_time = g_get_monotonic_time() + 30 * G_TIME_SPAN_SECOND; + while (s->log_fd == -1) { + if (!g_cond_wait_until(&s->data_cond, &s->data_mutex, end_time)) { + /* timeout has passed */ +@@ -885,7 +885,7 @@ static void wait_for_rings_started(TestServer *s, size_t count) + gint64 end_time; + + g_mutex_lock(&s->data_mutex); +- end_time = g_get_monotonic_time() + 5 * G_TIME_SPAN_SECOND; ++ end_time = g_get_monotonic_time() + 30 * G_TIME_SPAN_SECOND; + while (ctpop64(s->rings) != count) { + if (!g_cond_wait_until(&s->data_cond, &s->data_mutex, end_time)) { + /* timeout has passed */ diff --git a/app-emulation/qemu/files/qemu-9.0.0-also-build-virtfs-proxy-helper.patch b/app-emulation/qemu/files/qemu-9.0.0-also-build-virtfs-proxy-helper.patch new file mode 100644 index 000000000000..603d20c42fc8 --- /dev/null +++ b/app-emulation/qemu/files/qemu-9.0.0-also-build-virtfs-proxy-helper.patch @@ -0,0 +1,35 @@ +From 951325a0c9519d4910d80cc6c7a5728c0dbc4946 Mon Sep 17 00:00:00 2001 +Message-ID: <951325a0c9519d4910d80cc6c7a5728c0dbc4946.1714317553.git.mprivozn@redhat.com> +From: Matthias Maier <tamiko@43-1.org> +Date: Mon, 4 Apr 2022 12:56:59 +0200 +Subject: [PATCH] also build virtfs-proxy-helper + +The Gentoo ebuild splits the qemu build into a softmmu, user and tool +phase in order to be able to build and link some of the qemu emulators +statically. This unfortunately has the consequence that we never +configure with "have_virtfs" and "have_tools" at the same time. + +As a workaround, simply build the virtfs userland unconditionally. After +all, it is a tiny executable. + +Signed-off-by: Michal Privoznik <mprivozn@redhat.com> +--- + meson.build | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/meson.build b/meson.build +index c3a2be7b2d..50a5cfcf4e 100644 +--- a/meson.build ++++ b/meson.build +@@ -2116,8 +2116,6 @@ have_virtfs = get_option('virtfs') \ + .allowed() + + have_virtfs_proxy_helper = get_option('virtfs_proxy_helper') \ +- .require(host_os != 'darwin', error_message: 'the virtfs proxy helper is incompatible with macOS') \ +- .require(have_virtfs, error_message: 'the virtfs proxy helper requires that virtfs is enabled') \ + .disable_auto_if(not have_tools) \ + .require(libcap_ng.found(), error_message: 'the virtfs proxy helper requires libcap-ng') \ + .allowed() +-- +2.43.2 + diff --git a/app-emulation/qemu/files/qemu-9.0.0-capstone-include-path.patch b/app-emulation/qemu/files/qemu-9.0.0-capstone-include-path.patch new file mode 100644 index 000000000000..3e0408d6b213 --- /dev/null +++ b/app-emulation/qemu/files/qemu-9.0.0-capstone-include-path.patch @@ -0,0 +1,42 @@ +From 67a8b35e98f5c0853f7cdf26db0ebc6ce20b929c Mon Sep 17 00:00:00 2001 +Message-ID: <67a8b35e98f5c0853f7cdf26db0ebc6ce20b929c.1714317553.git.mprivozn@redhat.com> +From: Michal Privoznik <mprivozn@redhat.com> +Date: Sun, 28 Apr 2024 17:10:46 +0200 +Subject: [PATCH] Forward ported from qemu-7.1.0-capstone-include-path.patch. + +Bug: https://bugs.gentoo.org/873157 +Signed-off-by: Michal Privoznik <mprivozn@redhat.com> +--- + include/disas/capstone.h | 2 +- + meson.build | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/include/disas/capstone.h b/include/disas/capstone.h +index e29068dd97..d8fdc5d537 100644 +--- a/include/disas/capstone.h ++++ b/include/disas/capstone.h +@@ -3,7 +3,7 @@ + + #ifdef CONFIG_CAPSTONE + +-#include <capstone.h> ++#include <capstone/capstone.h> + + #else + +diff --git a/meson.build b/meson.build +index ea3ccff968..c3a2be7b2d 100644 +--- a/meson.build ++++ b/meson.build +@@ -1712,7 +1712,7 @@ if not get_option('capstone').auto() or have_system or have_user + # that reports a wrong -I path, causing the #include to + # fail later. If the system has such a broken version + # do not use it. +- if capstone.found() and not cc.compiles('#include <capstone.h>', ++ if capstone.found() and not cc.compiles('#include <capstone/capstone.h>', + dependencies: [capstone]) + capstone = not_found + if get_option('capstone').enabled() +-- +2.43.2 + diff --git a/app-emulation/qemu/files/qemu-9.0.0-disable-keymap.patch b/app-emulation/qemu/files/qemu-9.0.0-disable-keymap.patch new file mode 100644 index 000000000000..c85d213626e2 --- /dev/null +++ b/app-emulation/qemu/files/qemu-9.0.0-disable-keymap.patch @@ -0,0 +1,44 @@ +From 8cca781563e89facd312d622a69af124eb2757c6 Mon Sep 17 00:00:00 2001 +Message-ID: <8cca781563e89facd312d622a69af124eb2757c6.1714317553.git.mprivozn@redhat.com> +From: Michal Privoznik <mprivozn@redhat.com> +Date: Sun, 28 Apr 2024 17:10:13 +0200 +Subject: [PATCH] 8.0.0-disable-keymap.patch + +Signed-off-by: Michal Privoznik <mprivozn@redhat.com> +--- + meson.build | 2 ++ + pc-bios/keymaps/meson.build | 4 +++- + 2 files changed, 5 insertions(+), 1 deletion(-) + +diff --git a/meson.build b/meson.build +index 5db2dbc12e..ea3ccff968 100644 +--- a/meson.build ++++ b/meson.build +@@ -1098,6 +1098,8 @@ endif + + if get_option('xkbcommon').auto() and not have_system and not have_tools + xkbcommon = not_found ++elif get_option('xkbcommon').disabled() ++ xkbcommon = not_found + else + xkbcommon = dependency('xkbcommon', required: get_option('xkbcommon'), + method: 'pkg-config') +diff --git a/pc-bios/keymaps/meson.build b/pc-bios/keymaps/meson.build +index 0bd8ce0077..3888f4c64f 100644 +--- a/pc-bios/keymaps/meson.build ++++ b/pc-bios/keymaps/meson.build +@@ -33,8 +33,10 @@ keymaps = { + 'tr': '-l tr', + } + +-if meson.is_cross_build() or not xkbcommon.found() ++if meson.is_cross_build() + native_qemu_keymap = find_program('qemu-keymap', required: false, disabler: true) ++elif get_option('xkbcommon').disabled() ++ native_qemu_keymap = not_found + else + native_qemu_keymap = qemu_keymap + endif +-- +2.43.2 + |