qemu: update to 6.1.0, add usb passthrough option
authorVladimir Ermakov <redacted>
Fri, 2 Jul 2021 19:36:04 +0000 (22:36 +0300)
committerYousong Zhou <redacted>
Tue, 14 Sep 2021 13:28:45 +0000 (21:28 +0800)
One of big change is that QEMU has switched to Meson build system.
That result in few changes to build scripts to fix python interpreter
usage.
Second change that it's not possible to select binaries to build, so
now we have to build all targets at once (that require --enable-tools).

Options --disable-sheepdog and --disable-vxhs was removed from qemu
6.1.0 and 6.0.0 accordingly.

Signed-off-by: Vladimir Ermakov <redacted>
utils/qemu/Makefile
utils/qemu/patches/0001-configure-allow-disable-fortify_source.patch
utils/qemu/patches/0002-configure-allow-enabling-disabling-libudev-from-comm.patch
utils/qemu/patches/0003-configure-enable-guest_agent-no-matter-whether-softm.patch
utils/qemu/patches/0005-pc-bios-fix-compilation-when-AS-is-actually-gcc-driv.patch
utils/qemu/patches/0006-util-mmap-alloc-fix-missing-MAP_SYNC.patch
utils/qemu/patches/0007-qga-invoke-separate-applets-for-guest-shutdown-modes.patch

index 81d225cab11cb1303b2967a4600c5b8cec502215..406270d09cde684a91f897cb91b6b587f0059015 100644 (file)
@@ -9,12 +9,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=qemu
-PKG_VERSION:=5.0.0
-PKG_RELEASE:=5
+PKG_VERSION:=6.1.0
+PKG_RELEASE:=$(AUTORELEASE)
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_HASH:=2f13a92a0fa5c8b69ff0796b59b86b080bbb92ebad5d301a7724dd06b5e78cb6
+PKG_HASH:=eebc089db3414bbeedf1e464beda0a7515aad30f73261abc246c9b27503a3c96
 PKG_SOURCE_URL:=http://download.qemu.org/
-PKG_LICENSE:=GPL-2.0
+PKG_LICENSE:=GPL-2.0-only
 PKG_LICENSE_FILES:=LICENSE tcg/LICENSE
 PKG_MAINTAINER:=Yousong Zhou <yszhou4tech@gmail.com>
 PKG_CPE_ID:=cpe:/a:qemu:qemu
@@ -23,7 +23,7 @@ PKG_BUILD_PARALLEL:=1
 PKG_INSTALL:=1
 PKG_USE_MIPS16:=0
 
-PKG_BUILD_DEPENDS+=spice-protocol
+PKG_BUILD_DEPENDS+=spice-protocol meson/host
 
 include $(INCLUDE_DIR)/nls.mk
 include $(INCLUDE_DIR)/package.mk
@@ -96,7 +96,7 @@ endef
 
 define Package/qemu-img/install
        $(INSTALL_DIR) $(1)/usr/bin/
-       $(INSTALL_BIN) $(PKG_BUILD_DIR)/qemu-img $(1)/usr/bin/qemu-img
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/build/qemu-img $(1)/usr/bin/qemu-img
 endef
 
 
@@ -111,7 +111,7 @@ endef
 
 define Package/qemu-nbd/install
        $(INSTALL_DIR) $(1)/usr/sbin/
-       $(INSTALL_BIN) $(PKG_BUILD_DIR)/qemu-nbd $(1)/usr/sbin/qemu-nbd
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/build/qemu-nbd $(1)/usr/sbin/qemu-nbd
 endef
 
 
@@ -190,12 +190,13 @@ define qemu-target
     SUBMENU:=Virtualization
     TITLE:=QEMU target $(1)
     URL:=http://www.qemu.org
-    DEPENDS:= +glib2 +libpthread +zlib $(QEMU_DEPS_IN_HOST) $(qemu-target-$(1)-deps) \
+    DEPENDS:= +glib2 +libpthread +zlib +libbpf $(QEMU_DEPS_IN_HOST) $(qemu-target-$(1)-deps) \
        +QEMU_UI_VNC:qemu-keymaps \
        +QEMU_UI_VNC_JPEG:libjpeg \
        +QEMU_UI_VNC_PNG:libpng \
        +QEMU_UI_VNC_SASL:libsasl2 \
        +QEMU_UI_SPICE:libspice-server \
+       +QEMU_DEV_USB:libusb-1.0 \
        $(if $(filter %-softmmu,$(1)),+libncurses +libfdt +pixman +qemu-firmware-efi $(ICONV_DEPENDS))
   endef
 
@@ -257,6 +258,9 @@ config QEMU_UI_VNC_SASL
 config QEMU_UI_SPICE
        bool "QEMU SPICE ui support"
 
+config QEMU_DEV_USB
+       bool "QEMU USB passthrough support"
+
 endif
 endef
 
@@ -266,6 +270,7 @@ PKG_CONFIG_DEPENDS += \
        CONFIG_QEMU_UI_VNC_PNG \
        CONFIG_QEMU_UI_VNC_SASL \
        CONFIG_QEMU_UI_SPICE \
+       CONFIG_QEMU_DEV_USB \
 
 
 # QEMU configure script does not recognize these options
@@ -299,7 +304,9 @@ CONFIGURE_ARGS +=                   \
        --enable-vhost-scsi             \
        --enable-vhost-user             \
        --enable-vhost-user-fs          \
+       --enable-vhost-user-blk-server  \
        --enable-vhost-vsock            \
+       --enable-vhost-vdpa             \
 
 # Image formats support
 CONFIGURE_ARGS +=                      \
@@ -351,6 +358,8 @@ CONFIGURE_ARGS +=                   \
        --enable-live-block-migration   \
        --enable-membarrier             \
        --enable-replication            \
+       --enable-lto                    \
+       --enable-tools                  \
 
 # Review configure options not explicitly specified here
 #
@@ -375,7 +384,7 @@ CONFIGURE_ARGS +=                   \
        --disable-debug-tcg             \
        --disable-docs                  \
        --disable-gcrypt                \
-       --disable-git-update            \
+       --with-git-submodules=ignore    \
        --disable-glusterfs             \
        --disable-gnutls                \
        --disable-guest-agent-msi       \
@@ -385,7 +394,7 @@ CONFIGURE_ARGS +=                   \
        --disable-libpmem               \
        --disable-libssh                \
        --disable-libudev               \
-       --disable-libusb                \
+       --$(if $(CONFIG_QEMU_DEV_USB),enable,disable)-libusb            \
        --disable-libxml2               \
        --disable-linux-aio             \
        --disable-linux-io-uring        \
@@ -405,19 +414,16 @@ CONFIGURE_ARGS +=                 \
        --disable-rdma                  \
        --disable-sanitizers            \
        --disable-seccomp               \
-       --disable-sheepdog              \
        --disable-smartcard             \
        --disable-snappy                \
        --disable-sparse                \
        --disable-strip                 \
        --disable-tcg-interpreter       \
        --disable-tcmalloc              \
-       --disable-tools                 \
        --disable-tpm                   \
        --disable-usb-redir             \
        --disable-vde                   \
        --disable-virtfs                \
-       --disable-vxhs                  \
        --disable-werror                \
        --disable-xen-pci-passthrough   \
        --disable-xkbcommon             \
@@ -435,17 +441,6 @@ MAKE_FLAGS:=$(filter-out   \
        ARCH=%                  \
        ,$(MAKE_FLAGS))
 
-QEMU_MAKE_TARGETS := \
-       $(if $(CONFIG_PACKAGE_qemu-ga),qemu-ga) \
-       $(if $(CONFIG_PACKAGE_qemu-bridge-helper),qemu-bridge-helper) \
-       $(if $(CONFIG_PACKAGE_qemu-img),qemu-img) \
-       $(if $(CONFIG_PACKAGE_qemu-nbd),qemu-nbd) \
-       $(foreach target,$(qemu-target-list),$(if $(CONFIG_PACKAGE_qemu-$(target)),$(target)/all)) \
-
-define Build/Compile
-       $(if $(strip $(QEMU_MAKE_TARGETS)),$(call Build/Compile/Default,$(QEMU_MAKE_TARGETS)))
-endef
-
 $(eval $(call BuildPackage,virtio-console-helper))
 $(eval $(call BuildPackage,qemu-ga))
 $(eval $(call BuildPackage,qemu-bridge-helper))
index 8f1c5fe576cff6082553389b922d3381a7f571fa..0cafa774b3d6f1b03aeffb3f209df68b06c213db 100644 (file)
@@ -11,9 +11,9 @@ OpenWrt base build system decide flavor of fortify_source to use
 
 --- a/configure
 +++ b/configure
-@@ -1601,6 +1601,8 @@ for opt do
+@@ -1581,6 +1581,8 @@ for opt do
    ;;
-   --gdb=*) gdb_bin="$optarg"
+   --disable-slirp-smbd) slirp_smbd=no
    ;;
 +  --disable-fortify-source) fortify_source="no"
 +  ;;
index 162a06f25b9a1f687471632d8431331106268dc1..3902b9e22cdd0406ed4da36273ee0a494f6687e1 100644 (file)
@@ -9,9 +9,9 @@ Subject: [PATCH] configure: allow enabling/disabling libudev from command line
 
 --- a/configure
 +++ b/configure
-@@ -1601,6 +1601,10 @@ for opt do
+@@ -1581,6 +1581,10 @@ for opt do
    ;;
-   --gdb=*) gdb_bin="$optarg"
+   --disable-slirp-smbd) slirp_smbd=no
    ;;
 +  --enable-libudev) libudev=yes
 +  ;;
index 5a49ab596f0aa71daf9a1a578a93985381cd9980..31d97df1205ce7dcb785c99bd90dddd7abccd59b 100644 (file)
@@ -14,7 +14,7 @@ Fixes a512590 ("configure: qemu-ga is only needed with softmmu targets")
 
 --- a/configure
 +++ b/configure
-@@ -6414,7 +6414,7 @@ fi
+@@ -4375,7 +4375,7 @@ fi
  # Probe for guest agent support/options
  
  if [ "$guest_agent" != "no" ]; then
@@ -22,4 +22,4 @@ Fixes a512590 ("configure: qemu-ga is only needed with softmmu targets")
 +  if [ "$guest_agent" = "" -a "$want_tools" = no ] ; then
        guest_agent=no
    elif [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
-       tools="qemu-ga\$(EXESUF) $tools"
+       guest_agent=yes
index ae0fc6d97bdc3ee34dd093034497db0c97eb2194..f4746b69bae86ddb3afd1a006cec8e58d6503ce3 100644 (file)
@@ -9,21 +9,21 @@ Subject: [PATCH] pc-bios: fix compilation when $(AS) is actually gcc driver
 
 --- a/pc-bios/optionrom/Makefile
 +++ b/pc-bios/optionrom/Makefile
-@@ -34,7 +34,7 @@ endif
- QEMU_INCLUDES += -I$(SRC_PATH)
+@@ -36,7 +36,7 @@ override CFLAGS += -m32 -include $(SRC_D
+ endif
  
  Wa = -Wa,
--ASFLAGS += -32
-+ASFLAGS += $(Wa)-32
- QEMU_CFLAGS += $(call cc-c-option, $(QEMU_CFLAGS), $(Wa)-32)
- build-all: multiboot.bin linuxboot.bin linuxboot_dma.bin kvmvapic.bin pvh.bin
-@@ -44,7 +44,7 @@ build-all: multiboot.bin linuxboot.bin l
+-override ASFLAGS += -32
++override ASFLAGS += $(Wa)-32
+ override CFLAGS += $(call cc-option, $(Wa)-32)
  
+ LD_I386_EMULATION ?= elf_i386
+@@ -47,7 +47,7 @@ all: multiboot.bin linuxboot.bin linuxbo
+ pvh.img: pvh.o pvh_main.o
  
  %.o: %.S
--      $(call quiet-command,$(CPP) $(QEMU_INCLUDES) $(QEMU_DGFLAGS) -c -o - $< | $(AS) $(ASFLAGS) -o $@,"AS","$(TARGET_DIR)$@")
-+      $(call quiet-command,$(CPP) $(QEMU_INCLUDES) $(QEMU_DGFLAGS) -c -o - $< | $(AS) $(ASFLAGS) -o $@ -x assembler -,"AS","$(TARGET_DIR)$@")
+-      $(call quiet-command,$(CPP) $(CPPFLAGS) -c -o - $< | $(AS) $(ASFLAGS) -o $@,"AS","$@")
++      $(call quiet-command,$(CPP) $(CPPFLAGS) -c -o - $< | $(AS) $(ASFLAGS) -o $@ -x assembler -,"AS","$@")
  
- pvh.img: pvh.o pvh_main.o
-       $(call quiet-command,$(LD) $(LDFLAGS_NOPIE) -m $(LD_I386_EMULATION) -T $(SRC_PATH)/pc-bios/optionrom/flat.lds -s -o $@ $^,"BUILD","$(TARGET_DIR)$@")
+ %.o: %.c
+       $(call quiet-command,$(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@,"CC","$@")
index 75ed9fd6f3818cd6320f76296939423303acfa28..e09447bd1ef81a096f5fd9b95ef7ba35d0d38af8 100644 (file)
@@ -32,7 +32,7 @@ Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
  #endif /* CONFIG_LINUX */
  
  #include "qemu/osdep.h"
-@@ -27,6 +24,13 @@
+@@ -29,6 +26,13 @@
  #include <sys/vfs.h>
  #endif
  
index 97991a8788ac0593fea908e2473d6778de1b7bdd..d51abc2d5b256df2c5918b486ef2f3a16c871e0f 100644 (file)
@@ -38,7 +38,7 @@ https://gitlab.alpinelinux.org/alpine/aports/commit/76b81b486480fd9c3294cd420bcf
 @@ -111,6 +115,7 @@ void qmp_guest_shutdown(bool has_mode, c
  
          execle("/sbin/shutdown", "shutdown", "-h", shutdown_flag, "+0",
-                "hypervisor initiated shutdown", (char*)NULL, environ);
+                "hypervisor initiated shutdown", (char *)NULL, environ);
 +        execle(fallback_cmd, fallback_cmd, (char*)NULL, environ);
          _exit(EXIT_FAILURE);
      } else if (pid < 0) {
git clone https://git.99rst.org/PROJECT