Files
buildroot/package/qemu-xen/qemu-xen.mk
Matthew Weber 46b5c95647 package/xen: bump to 4.21.1
Bump Xen from 4.19.5 to 4.21.1.

Resolved in version bump:
- 0002-Arm-platforms-fix-build-with-gcc15.patch
  Upstream: https://xenbits.xen.org/gitweb/?p=xen.git;a=commitdiff;h=39f95089e2ba15c5438ce904c0cbbd8d79d3e6e7

The git-checkout.sh fix for non-master branch checkout is now included:
  https://xenbits.xenproject.org/gitweb/?p=xen.git;a=commitdiff;h=01fb23dd71006d87e874f310e9c50f31582f274e

Remaining patches refreshed for updated context:
- 0001-No-trace-backend.patch (Buildroot specific, cross-compile workaround)
- 0002-Update-linker-flags.patch (Buildroot specific, cross-compile workaround)

Starting with Xen 4.20, qemu-xen is no longer bundled in the release
tarball. Add a new qemu-xen package that provides the qemu-xen source
tree with required meson subprojects pre-populated. This avoids any
network access during the build.

New dependencies:
- qemu-xen (provides qemu-xen source for tools build)
- host-python-distlib (needed by QEMU's mkvenv)

The qemu-xen package:
- Fetches qemu-xen via git (without recursive submodules to avoid
  massive ROM downloads)
- Pre-populates required meson subprojects (keycodemapdb,
  berkeley-softfloat-3, berkeley-testfloat-3) from gitlab archives
- Applies packagefiles overlays (meson.build) for subprojects that
  need them
- Removes .wrap files for unused subprojects to prevent any network
  access attempts during the build
- Patches xen_native.h #error to #warning for cross-compile

Tested with:
    support/testing/run-tests \
        -d dl -o output_folder \
        tests.package.test_xen.TestXenAarch64
    support/testing/run-tests \
        -d dl -o output_folder \
        tests.package.test_xen.TestXenArmv7

Both aarch64 and arm32 runtime tests pass.

Quick build defconfig used for iteration:
    BR2_aarch64=y
    BR2_TOOLCHAIN_EXTERNAL=y
    BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
    BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_GLIBC_STABLE=y
    BR2_PACKAGE_XEN=y
    BR2_PACKAGE_XEN_HYPERVISOR=y
    BR2_PACKAGE_XEN_TOOLS=y
    # BR2_TARGET_ROOTFS_TAR is not set

Related prior attempts:
  https://patchwork.ozlabs.org/project/buildroot/patch/20260211055138.719459-1-matthew.l.weber@gmail.com/
  https://patchwork.ozlabs.org/project/buildroot/patch/20251007164756.893264-1-titouan.christophe@mind.be/

Cc: Neal Frager <neal.frager@amd.com>
Cc: Julien Olivain <ju.o@free.fr>
Cc: Vincent Stehlé <vincent.stehle@arm.com>
Cc: Titouan Christophe <titouan.christophe@mind.be>
Cc: John Ernberg <john.ernberg@actia.se>
Signed-off-by: Matthew Weber <mathew.l.weber3@boeing.com>
[Julien:
 - update qemu-xen package url in Config.in
 - split XEN_DEPENDENCIES lines
 - add COPYING license hash in qemu-xen.hash
]
Signed-off-by: Julien Olivain <ju.o@free.fr>
2026-08-01 16:07:05 +02:00

58 lines
2.8 KiB
Makefile

################################################################################
#
# qemu-xen
#
################################################################################
# We do NOT use GIT_SUBMODULES = YES because qemu-xen has massive ROM
# submodules (edk2, u-boot, etc.) that are not needed for the Xen tools
# cross-build. Instead, we pre-populate only the required meson
# subprojects and remove .wrap files for the rest to prevent any network
# access during the build.
# Determined from Xen repo's hash for this repo @ XEN_VERSION
QEMU_XEN_VERSION = e064f42c80be6f6ff8c12dcb2a663bdf70f965f6
QEMU_XEN_SITE = https://xenbits.xen.org/git-http/qemu-xen.git
QEMU_XEN_SITE_METHOD = git
QEMU_XEN_LICENSE = GPL-2.0
QEMU_XEN_LICENSE_FILES = COPYING
QEMU_XEN_REDISTRIBUTE = NO
# Required meson subprojects for the QEMU build
QEMU_XEN_KEYCODEMAPDB_VERSION = f5772a62ec52591ff6870b7e8ef32482371f22c6
QEMU_XEN_SOFTFLOAT3_VERSION = b64af41c3276f97f0e181920400ee056b9c88037
QEMU_XEN_TESTFLOAT3_VERSION = e7af9751d9f9fd3b47911f51a5cfd08af256a9ab
QEMU_XEN_EXTRA_DOWNLOADS = \
https://gitlab.com/qemu-project/keycodemapdb/-/archive/$(QEMU_XEN_KEYCODEMAPDB_VERSION)/keycodemapdb-$(QEMU_XEN_KEYCODEMAPDB_VERSION).tar.gz \
https://gitlab.com/qemu-project/berkeley-softfloat-3/-/archive/$(QEMU_XEN_SOFTFLOAT3_VERSION)/berkeley-softfloat-3-$(QEMU_XEN_SOFTFLOAT3_VERSION).tar.gz \
https://gitlab.com/qemu-project/berkeley-testfloat-3/-/archive/$(QEMU_XEN_TESTFLOAT3_VERSION)/berkeley-testfloat-3-$(QEMU_XEN_TESTFLOAT3_VERSION).tar.gz
define QEMU_XEN_INSTALL_SUBPROJECTS
rm -rf $(@D)/subprojects/keycodemapdb
mkdir -p $(@D)/subprojects/keycodemapdb
$(TAR) --strip-components=1 -C $(@D)/subprojects/keycodemapdb \
-xf $(QEMU_XEN_DL_DIR)/keycodemapdb-$(QEMU_XEN_KEYCODEMAPDB_VERSION).tar.gz
rm -rf $(@D)/subprojects/berkeley-softfloat-3
mkdir -p $(@D)/subprojects/berkeley-softfloat-3
$(TAR) --strip-components=1 -C $(@D)/subprojects/berkeley-softfloat-3 \
-xf $(QEMU_XEN_DL_DIR)/berkeley-softfloat-3-$(QEMU_XEN_SOFTFLOAT3_VERSION).tar.gz
cp -f $(@D)/subprojects/packagefiles/berkeley-softfloat-3/* \
$(@D)/subprojects/berkeley-softfloat-3/
rm -rf $(@D)/subprojects/berkeley-testfloat-3
mkdir -p $(@D)/subprojects/berkeley-testfloat-3
$(TAR) --strip-components=1 -C $(@D)/subprojects/berkeley-testfloat-3 \
-xf $(QEMU_XEN_DL_DIR)/berkeley-testfloat-3-$(QEMU_XEN_TESTFLOAT3_VERSION).tar.gz
cp -f $(@D)/subprojects/packagefiles/berkeley-testfloat-3/* \
$(@D)/subprojects/berkeley-testfloat-3/
# Remove .wrap files for subprojects we do NOT pre-provide to prevent
# meson from attempting any network access during the build.
rm -f $(@D)/subprojects/dtc.wrap
rm -f $(@D)/subprojects/libblkio.wrap
rm -f $(@D)/subprojects/libvfio-user.wrap
rm -f $(@D)/subprojects/slirp.wrap
endef
QEMU_XEN_POST_EXTRACT_HOOKS += QEMU_XEN_INSTALL_SUBPROJECTS
$(eval $(generic-package))