From 7f9dd77eaeaf586c88ee1b5f4f5ee0439612b964 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Tue, 23 Jan 2024 21:27:08 +0000 Subject: qemu: Upgrade 8.1.2 -> 8.2.0 We can drop the mips workaround patch since there were fixes in 8.2.0. The build system changed and we should drop cross.patch and replace it with explicit settings for cross-prefix, and host-cc. To make that work we need to indicate we don't use a cross pkg-config. PIE isn't availale for mingw so tweak PACKAGECONFIG accordingly. (From OE-Core rev: 8917fa10b8afb1413b34a6134beea129e416f8c6) Signed-off-by: Richard Purdie --- meta/conf/distro/include/tcmode-default.inc | 2 +- meta/recipes-devtools/qemu/qemu-native_8.1.2.bb | 9 ----- meta/recipes-devtools/qemu/qemu-native_8.2.0.bb | 9 +++++ .../qemu/qemu-system-native_8.1.2.bb | 31 ------------------ .../qemu/qemu-system-native_8.2.0.bb | 31 ++++++++++++++++++ meta/recipes-devtools/qemu/qemu.inc | 13 ++++---- meta/recipes-devtools/qemu/qemu/cross.patch | 38 ---------------------- meta/recipes-devtools/qemu/qemu/fixedmeson.patch | 12 +++---- meta/recipes-devtools/qemu/qemu/fixmips.patch | 18 ---------- meta/recipes-devtools/qemu/qemu/no-pip.patch | 16 ++++----- meta/recipes-devtools/qemu/qemu_8.1.2.bb | 27 --------------- meta/recipes-devtools/qemu/qemu_8.2.0.bb | 27 +++++++++++++++ 12 files changed, 89 insertions(+), 144 deletions(-) delete mode 100644 meta/recipes-devtools/qemu/qemu-native_8.1.2.bb create mode 100644 meta/recipes-devtools/qemu/qemu-native_8.2.0.bb delete mode 100644 meta/recipes-devtools/qemu/qemu-system-native_8.1.2.bb create mode 100644 meta/recipes-devtools/qemu/qemu-system-native_8.2.0.bb delete mode 100644 meta/recipes-devtools/qemu/qemu/cross.patch delete mode 100644 meta/recipes-devtools/qemu/qemu/fixmips.patch delete mode 100644 meta/recipes-devtools/qemu/qemu_8.1.2.bb create mode 100644 meta/recipes-devtools/qemu/qemu_8.2.0.bb diff --git a/meta/conf/distro/include/tcmode-default.inc b/meta/conf/distro/include/tcmode-default.inc index 3720a4c5b8..a12b202e43 100644 --- a/meta/conf/distro/include/tcmode-default.inc +++ b/meta/conf/distro/include/tcmode-default.inc @@ -22,7 +22,7 @@ BINUVERSION ?= "2.41%" GDBVERSION ?= "14.%" GLIBCVERSION ?= "2.38%" LINUXLIBCVERSION ?= "6.6%" -QEMUVERSION ?= "8.1%" +QEMUVERSION ?= "8.2%" GOVERSION ?= "1.20%" LLVMVERSION ?= "17.%" RUSTVERSION ?= "1.74%" diff --git a/meta/recipes-devtools/qemu/qemu-native_8.1.2.bb b/meta/recipes-devtools/qemu/qemu-native_8.1.2.bb deleted file mode 100644 index a77953529b..0000000000 --- a/meta/recipes-devtools/qemu/qemu-native_8.1.2.bb +++ /dev/null @@ -1,9 +0,0 @@ -BPN = "qemu" - -DEPENDS += "glib-2.0-native zlib-native" - -require qemu-native.inc - -EXTRA_OECONF:append = " --target-list=${@get_qemu_usermode_target_list(d)} --disable-tools --disable-install-blobs --disable-guest-agent" - -PACKAGECONFIG ??= "pie" diff --git a/meta/recipes-devtools/qemu/qemu-native_8.2.0.bb b/meta/recipes-devtools/qemu/qemu-native_8.2.0.bb new file mode 100644 index 0000000000..a77953529b --- /dev/null +++ b/meta/recipes-devtools/qemu/qemu-native_8.2.0.bb @@ -0,0 +1,9 @@ +BPN = "qemu" + +DEPENDS += "glib-2.0-native zlib-native" + +require qemu-native.inc + +EXTRA_OECONF:append = " --target-list=${@get_qemu_usermode_target_list(d)} --disable-tools --disable-install-blobs --disable-guest-agent" + +PACKAGECONFIG ??= "pie" diff --git a/meta/recipes-devtools/qemu/qemu-system-native_8.1.2.bb b/meta/recipes-devtools/qemu/qemu-system-native_8.1.2.bb deleted file mode 100644 index 0634b34242..0000000000 --- a/meta/recipes-devtools/qemu/qemu-system-native_8.1.2.bb +++ /dev/null @@ -1,31 +0,0 @@ -BPN = "qemu" - -require qemu-native.inc - -# As some of the files installed by qemu-native and qemu-system-native -# are the same, we depend on qemu-native to get the full installation set -# and avoid file clashes -DEPENDS += "glib-2.0-native zlib-native pixman-native qemu-native" - -EXTRA_OECONF:append = " --target-list=${@get_qemu_system_target_list(d)}" - -PACKAGECONFIG ??= "fdt alsa kvm pie slirp png \ - ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'virglrenderer epoxy', '', d)} \ -" - -# Handle distros such as CentOS 5 32-bit that do not have kvm support -PACKAGECONFIG:remove = "${@'kvm' if not os.path.exists('/usr/include/linux/kvm.h') else ''}" - -do_install:append() { - install -Dm 0755 ${WORKDIR}/powerpc_rom.bin ${D}${datadir}/qemu - - # The following is also installed by qemu-native - rm -f ${D}${datadir}/qemu/trace-events-all - rm -rf ${D}${datadir}/qemu/keymaps - rm -rf ${D}${datadir}/icons/ - rm -rf ${D}${includedir}/qemu-plugin.h - - # Install qmp.py to be used with testimage - install -d ${D}${libdir}/qemu-python/qmp/ - install -D ${S}/python/qemu/qmp/* ${D}${libdir}/qemu-python/qmp/ -} diff --git a/meta/recipes-devtools/qemu/qemu-system-native_8.2.0.bb b/meta/recipes-devtools/qemu/qemu-system-native_8.2.0.bb new file mode 100644 index 0000000000..0634b34242 --- /dev/null +++ b/meta/recipes-devtools/qemu/qemu-system-native_8.2.0.bb @@ -0,0 +1,31 @@ +BPN = "qemu" + +require qemu-native.inc + +# As some of the files installed by qemu-native and qemu-system-native +# are the same, we depend on qemu-native to get the full installation set +# and avoid file clashes +DEPENDS += "glib-2.0-native zlib-native pixman-native qemu-native" + +EXTRA_OECONF:append = " --target-list=${@get_qemu_system_target_list(d)}" + +PACKAGECONFIG ??= "fdt alsa kvm pie slirp png \ + ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'virglrenderer epoxy', '', d)} \ +" + +# Handle distros such as CentOS 5 32-bit that do not have kvm support +PACKAGECONFIG:remove = "${@'kvm' if not os.path.exists('/usr/include/linux/kvm.h') else ''}" + +do_install:append() { + install -Dm 0755 ${WORKDIR}/powerpc_rom.bin ${D}${datadir}/qemu + + # The following is also installed by qemu-native + rm -f ${D}${datadir}/qemu/trace-events-all + rm -rf ${D}${datadir}/qemu/keymaps + rm -rf ${D}${datadir}/icons/ + rm -rf ${D}${includedir}/qemu-plugin.h + + # Install qmp.py to be used with testimage + install -d ${D}${libdir}/qemu-python/qmp/ + install -D ${S}/python/qemu/qmp/* ${D}${libdir}/qemu-python/qmp/ +} diff --git a/meta/recipes-devtools/qemu/qemu.inc b/meta/recipes-devtools/qemu/qemu.inc index 4ebf17e6c0..ccb2880402 100644 --- a/meta/recipes-devtools/qemu/qemu.inc +++ b/meta/recipes-devtools/qemu/qemu.inc @@ -32,7 +32,6 @@ SRC_URI = "https://download.qemu.org/${BPN}-${PV}.tar.xz \ file://0010-hw-pvrdma-Protect-against-buggy-or-malicious-guest-d.patch \ file://0002-linux-user-Replace-use-of-lfs64-related-functions-an.patch \ file://fixedmeson.patch \ - file://fixmips.patch \ file://0001-vfio-Include-libgen.h-for-basename-API.patch \ file://no-pip.patch \ file://qemu-guest-agent.init \ @@ -41,10 +40,7 @@ SRC_URI = "https://download.qemu.org/${BPN}-${PV}.tar.xz \ UPSTREAM_CHECK_REGEX = "qemu-(?P\d+(\.\d+)+)\.tar" -SRC_URI[sha256sum] = "541526a764576eb494d2ff5ec46aeb253e62ea29035d1c23c0a8af4e6cd4f087" - -SRC_URI:append:class-target = " file://cross.patch" -SRC_URI:append:class-nativesdk = " file://cross.patch" +SRC_URI[sha256sum] = "bf00d2fa12010df8b0ade93371def58e632cb32a6bfdc5f5a0ff8e6a1fb1bf32" CVE_STATUS[CVE-2017-5957] = "cpe-incorrect: Applies against virglrender < 0.6.0 and not qemu itself" @@ -117,9 +113,13 @@ EXTRA_OECONF = " \ --extra-ldflags='${LDFLAGS}' \ --disable-download \ --disable-docs \ + --host-cc=${BUILD_CC} \ ${PACKAGECONFIG_CONFARGS} \ " +EXTRA_OECONF:append:class-target = " --cross-prefix=${HOST_PREFIX}" +EXTRA_OECONF:append:class-nativesdk = " --cross-prefix=${HOST_PREFIX}" + B = "${WORKDIR}/build" #EXTRA_OECONF:append = " --python=${HOSTTOOLS_DIR}/python3" @@ -133,6 +133,7 @@ do_configure:prepend:class-native() { } do_configure() { + export PKG_CONFIG=pkg-config ${S}/configure ${EXTRA_OECONF} } do_configure[cleandirs] += "${B}" @@ -176,7 +177,7 @@ do_install:append() { # Disable kvm/virgl/mesa on targets that do not support it PACKAGECONFIG:remove:darwin = "kvm virglrenderer epoxy gtk+" -PACKAGECONFIG:remove:mingw32 = "kvm virglrenderer epoxy gtk+" +PACKAGECONFIG:remove:mingw32 = "kvm virglrenderer epoxy gtk+ pie" PACKAGECONFIG[sdl] = "--enable-sdl,--disable-sdl,libsdl2" PACKAGECONFIG[png] = "--enable-png,--disable-png,libpng" diff --git a/meta/recipes-devtools/qemu/qemu/cross.patch b/meta/recipes-devtools/qemu/qemu/cross.patch deleted file mode 100644 index 112eb92593..0000000000 --- a/meta/recipes-devtools/qemu/qemu/cross.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 76c3fc4c87231bed32974ebbbdb5079cff45a6b7 Mon Sep 17 00:00:00 2001 -From: Richard Purdie -Date: Tue, 5 Jan 2021 23:00:14 +0000 -Subject: [PATCH 12/12] qemu: Upgrade 5.1.0->5.2.0 - -We need to be able to trigger configure's cross code but we don't want -to set cross_prefix as it does other things we don't want. Patch things -so we can do what we need in the target config case. - -Upstream-Status: Inappropriate [may be rewritten in a way upstream may accept?] -Signed-off-by: Richard Purdie - ---- - configure | 4 ---- - 1 file changed, 4 deletions(-) - -Index: qemu-8.0.0/configure -=================================================================== ---- qemu-8.0.0.orig/configure -+++ qemu-8.0.0/configure -@@ -2590,7 +2590,6 @@ if test "$skip_meson" = no; then - echo "widl = [$(meson_quote $widl)]" >> $cross - echo "windres = [$(meson_quote $windres)]" >> $cross - echo "windmc = [$(meson_quote $windmc)]" >> $cross -- if test "$cross_compile" = "yes"; then - cross_arg="--cross-file config-meson.cross" - echo "[host_machine]" >> $cross - echo "system = '$targetos'" >> $cross -@@ -2608,9 +2607,6 @@ if test "$skip_meson" = no; then - else - echo "endian = 'little'" >> $cross - fi -- else -- cross_arg="--native-file config-meson.cross" -- fi - mv $cross config-meson.cross - - rm -rf meson-private meson-info meson-logs diff --git a/meta/recipes-devtools/qemu/qemu/fixedmeson.patch b/meta/recipes-devtools/qemu/qemu/fixedmeson.patch index 0cbaea07ca..9047f66dc3 100644 --- a/meta/recipes-devtools/qemu/qemu/fixedmeson.patch +++ b/meta/recipes-devtools/qemu/qemu/fixedmeson.patch @@ -1,12 +1,12 @@ Upstream-Status: Inappropriate [workaround, would need a real fix for upstream] -Index: qemu-8.1.0/configure +Index: qemu-8.2.0/configure =================================================================== ---- qemu-8.1.0.orig/configure -+++ qemu-8.1.0/configure -@@ -1032,12 +1032,7 @@ then - exit 1 - fi +--- qemu-8.2.0.orig/configure ++++ qemu-8.2.0/configure +@@ -955,12 +955,7 @@ fi + $mkvenv ensuregroup --dir "${source_path}/python/wheels" \ + ${source_path}/pythondeps.toml meson || exit 1 -# At this point, we expect Meson to be installed and available. -# We expect mkvenv or pip to have created pyvenv/bin/meson for us. diff --git a/meta/recipes-devtools/qemu/qemu/fixmips.patch b/meta/recipes-devtools/qemu/qemu/fixmips.patch deleted file mode 100644 index 01546d1030..0000000000 --- a/meta/recipes-devtools/qemu/qemu/fixmips.patch +++ /dev/null @@ -1,18 +0,0 @@ -Patch to fix mips boot hangs where virtio appears broken. Patch under discussion upstream. -Regression is introduced by other fixes to 8.1.0 to get x86 boots working. - -Upstream-Status: Pending [https://lore.kernel.org/qemu-devel/6c956b90-5a13-db96-9c02-9834a512fe6f@linaro.org/] - -Index: qemu-8.1.0/softmmu/physmem.c -=================================================================== ---- qemu-8.1.0.orig/softmmu/physmem.c -+++ qemu-8.1.0/softmmu/physmem.c -@@ -2517,7 +2517,7 @@ static void tcg_commit(MemoryListener *l - * That said, the listener is also called during realize, before - * all of the tcg machinery for run-on is initialized: thus halt_cond. - */ -- if (cpu->halt_cond) { -+ if (cpu->halt_cond && !qemu_cpu_is_self(cpu)) { - async_run_on_cpu(cpu, tcg_commit_cpu, RUN_ON_CPU_HOST_PTR(cpuas)); - } else { - tcg_commit_cpu(cpu, RUN_ON_CPU_HOST_PTR(cpuas)); diff --git a/meta/recipes-devtools/qemu/qemu/no-pip.patch b/meta/recipes-devtools/qemu/qemu/no-pip.patch index f52b4e4b83..92b2edbe9f 100644 --- a/meta/recipes-devtools/qemu/qemu/no-pip.patch +++ b/meta/recipes-devtools/qemu/qemu/no-pip.patch @@ -22,11 +22,11 @@ as it stands is a workaround. Upstream-Status: Inappropriate [oe specific] Signed-off-by: Richard Purdie -diff --git a/configure b/configure -index 133f4e3235..e4c144b4e2 100755 ---- a/configure -+++ b/configure -@@ -1009,7 +1009,7 @@ python="$(command -v "$python")" +Index: qemu-8.2.0/configure +=================================================================== +--- qemu-8.2.0.orig/configure ++++ qemu-8.2.0/configure +@@ -937,7 +937,7 @@ python="$(command -v "$python")" echo "python determined to be '$python'" echo "python version: $($python --version)" @@ -35,11 +35,11 @@ index 133f4e3235..e4c144b4e2 100755 if test "$?" -ne 0 ; then error_exit "python venv creation failed" fi -@@ -1017,6 +1017,7 @@ fi +@@ -945,6 +945,7 @@ fi # Suppress writing compiled files python="$python -B" mkvenv="$python ${source_path}/python/scripts/mkvenv.py" +mkvenv=true - mkvenv_flags="" - if test "$download" = "enabled" ; then + # Finish preparing the virtual environment using vendored .whl files + diff --git a/meta/recipes-devtools/qemu/qemu_8.1.2.bb b/meta/recipes-devtools/qemu/qemu_8.1.2.bb deleted file mode 100644 index dc1352232e..0000000000 --- a/meta/recipes-devtools/qemu/qemu_8.1.2.bb +++ /dev/null @@ -1,27 +0,0 @@ -BBCLASSEXTEND = "nativesdk" - -require qemu.inc - -DEPENDS += "glib-2.0 zlib pixman" - -DEPENDS:append:libc-musl = " libucontext" - -CFLAGS += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', '-DEGL_NO_X11=1', d)}" - -RDEPENDS:${PN}-common:class-target += "bash" - -EXTRA_OECONF:append:class-target = " --target-list=${@get_qemu_target_list(d)}" -EXTRA_OECONF:append:class-target:mipsarcho32 = "${@bb.utils.contains('BBEXTENDCURR', 'multilib', ' --disable-capstone', '', d)}" -EXTRA_OECONF:append:class-nativesdk = " --target-list=${@get_qemu_target_list(d)}" - -PACKAGECONFIG ??= " \ - fdt sdl kvm pie slirp \ - ${@bb.utils.filter('DISTRO_FEATURES', 'alsa pulseaudio xen', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'virglrenderer epoxy', '', d)} \ - ${@bb.utils.filter('DISTRO_FEATURES', 'seccomp', d)} \ -" -PACKAGECONFIG:class-nativesdk ??= "fdt sdl kvm pie slirp \ - ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'virglrenderer epoxy', '', d)} \ -" -# ppc32 hosts are no longer supported in qemu -COMPATIBLE_HOST:powerpc = "null" diff --git a/meta/recipes-devtools/qemu/qemu_8.2.0.bb b/meta/recipes-devtools/qemu/qemu_8.2.0.bb new file mode 100644 index 0000000000..dc1352232e --- /dev/null +++ b/meta/recipes-devtools/qemu/qemu_8.2.0.bb @@ -0,0 +1,27 @@ +BBCLASSEXTEND = "nativesdk" + +require qemu.inc + +DEPENDS += "glib-2.0 zlib pixman" + +DEPENDS:append:libc-musl = " libucontext" + +CFLAGS += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', '-DEGL_NO_X11=1', d)}" + +RDEPENDS:${PN}-common:class-target += "bash" + +EXTRA_OECONF:append:class-target = " --target-list=${@get_qemu_target_list(d)}" +EXTRA_OECONF:append:class-target:mipsarcho32 = "${@bb.utils.contains('BBEXTENDCURR', 'multilib', ' --disable-capstone', '', d)}" +EXTRA_OECONF:append:class-nativesdk = " --target-list=${@get_qemu_target_list(d)}" + +PACKAGECONFIG ??= " \ + fdt sdl kvm pie slirp \ + ${@bb.utils.filter('DISTRO_FEATURES', 'alsa pulseaudio xen', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'virglrenderer epoxy', '', d)} \ + ${@bb.utils.filter('DISTRO_FEATURES', 'seccomp', d)} \ +" +PACKAGECONFIG:class-nativesdk ??= "fdt sdl kvm pie slirp \ + ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'virglrenderer epoxy', '', d)} \ +" +# ppc32 hosts are no longer supported in qemu +COMPATIBLE_HOST:powerpc = "null" -- cgit v1.2.3-54-g00ecf