From 3c0c177ff9043c48f936fa5f8127132719c113af Mon Sep 17 00:00:00 2001 From: Andrew Cooper Date: Thu, 11 Sep 2025 00:02:02 +0100 Subject: [PATCH] CI: Switch qemu-arm* jobs to using the distro provided QEMU This removes qemu-system-aarch64-6.0.0-*-export and fixes the outstanding TODOs about efi-virtio.rom, now that the QEMU in use has it's /usr/share/ properly packaged. Signed-off-by: Andrew Cooper Reviewed-by: Michal Orzel --- automation/gitlab-ci/build.yaml | 33 -------- automation/gitlab-ci/test.yaml | 2 - automation/scripts/include/xtf-arm64 | 7 +- automation/scripts/qemu-smoke-dom0-arm32.sh | 6 +- automation/scripts/qemu-smoke-dom0-arm64.sh | 6 +- .../scripts/qemu-smoke-dom0less-arm32.sh | 6 +- .../scripts/qemu-smoke-dom0less-arm64.sh | 6 +- .../6.0.0-arm64v8.dockerfile | 77 ------------------- 8 files changed, 10 insertions(+), 133 deletions(-) delete mode 100644 automation/tests-artifacts/qemu-system-aarch64/6.0.0-arm64v8.dockerfile diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml index a1acf2e827..0e5fb26c85 100644 --- a/automation/gitlab-ci/build.yaml +++ b/automation/gitlab-ci/build.yaml @@ -266,39 +266,6 @@ variables: <<: *gcc -## Test artifacts common - -.test-jobs-artifact-common: - stage: build - needs: [] - rules: - - if: $CI_JOB_NAME =~ $SELECTED_JOBS_ONLY - when: on_success - -# Arm test artifacts - -qemu-system-aarch64-6.0.0-arm64-export: - extends: .test-jobs-artifact-common - image: registry.gitlab.com/xen-project/xen/tests-artifacts/qemu-system-aarch64:6.0.0-arm64v8 - script: - - mkdir binaries && cp /qemu-system-aarch64 binaries/qemu-system-aarch64 - artifacts: - paths: - - binaries/qemu-system-aarch64 - tags: - - arm64 - -qemu-system-aarch64-6.0.0-arm32-export: - extends: .test-jobs-artifact-common - image: registry.gitlab.com/xen-project/xen/tests-artifacts/qemu-system-aarch64:6.0.0-arm64v8 - script: - - mkdir binaries && cp /qemu-system-arm binaries/qemu-system-arm - artifacts: - paths: - - binaries/qemu-system-arm - tags: - - arm64 - # Jobs below this line # Build jobs needed for tests diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml index 008deef98d..1722800c15 100644 --- a/automation/gitlab-ci/test.yaml +++ b/automation/gitlab-ci/test.yaml @@ -12,7 +12,6 @@ - project: $ARTIFACTS_REPO job: alpine-3.18-arm64-rootfs ref: $ARTIFACTS_BRANCH - - qemu-system-aarch64-6.0.0-arm64-export .arm32-test-needs: &arm32-test-needs # Bodge to ensure binaries/ is non-root. Can be any artefact which comes @@ -21,7 +20,6 @@ - project: $ARTIFACTS_REPO job: microcode-x86 ref: $ARTIFACTS_BRANCH - - qemu-system-aarch64-6.0.0-arm32-export .x86-64-test-needs: &x86-64-test-needs - project: $ARTIFACTS_REPO diff --git a/automation/scripts/include/xtf-arm64 b/automation/scripts/include/xtf-arm64 index 1a318b7aa0..5d851af788 100644 --- a/automation/scripts/include/xtf-arm64 +++ b/automation/scripts/include/xtf-arm64 @@ -7,7 +7,7 @@ function xtf_arch_prepare() { export FW_PREFIX="${FW_PREFIX:-/usr/lib/u-boot/qemu_arm64/}" - export QEMU_PREFIX="${QEMU_PREFIX:-${WORKDIR}/}" + export QEMU_PREFIX="${QEMU_PREFIX:-}" export XEN_BINARY="${XEN_BINARY:-${WORKDIR}/xen}" export XEN_CMDLINE="${XEN_CMDLINE:-loglvl=all noreboot console_timestamps=boot console=dtuart}" export XTF_SRC_BRANCH="${XTF_SRC_BRANCH:-xtf-arm}" @@ -18,9 +18,6 @@ function xtf_arch_prepare() # Perform arch-specific XTF environment setup. function xtf_arch_setup() { - # QEMU looks for "efi-virtio.rom" even if it is unneeded - curl -fsSLO https://github.com/qemu/qemu/raw/v5.2.0/pc-bios/efi-virtio.rom - # Crude check for local testing if [ ! -d imagebuilder ]; then git clone --depth 1 https://gitlab.com/xen-project/imagebuilder.git @@ -47,7 +44,7 @@ EOF cp ${XTF_BINARY} ${WORKDIR}/xtf-test # Generate virt-gicv2.dtb - ${WORKDIR}/qemu-system-aarch64 \ + ${QEMU_PREFIX}qemu-system-aarch64 \ -machine virtualization=true \ -cpu cortex-a57 \ -machine type=virt \ diff --git a/automation/scripts/qemu-smoke-dom0-arm32.sh b/automation/scripts/qemu-smoke-dom0-arm32.sh index 58797f7d30..5dc348c71a 100755 --- a/automation/scripts/qemu-smoke-dom0-arm32.sh +++ b/automation/scripts/qemu-smoke-dom0-arm32.sh @@ -39,9 +39,7 @@ cp ../zImage ./root find . | cpio -R 0:0 -H newc -o | gzip > ../initrd.gz cd .. -# XXX QEMU looks for "efi-virtio.rom" even if it is unneeded -curl -fsSLO https://github.com/qemu/qemu/raw/v5.2.0/pc-bios/efi-virtio.rom -./qemu-system-arm \ +qemu-system-arm \ -machine virt \ -machine virtualization=true \ -smp 4 \ @@ -77,7 +75,7 @@ git clone --depth 1 https://gitlab.com/xen-project/imagebuilder.git bash imagebuilder/scripts/uboot-script-gen -t tftp -d . -c config rm -f ${serial_log} -export TEST_CMD="./qemu-system-arm \ +export TEST_CMD="qemu-system-arm \ -machine virt \ -machine virtualization=true \ -smp 4 \ diff --git a/automation/scripts/qemu-smoke-dom0-arm64.sh b/automation/scripts/qemu-smoke-dom0-arm64.sh index 05962bdc02..1d673f1842 100755 --- a/automation/scripts/qemu-smoke-dom0-arm64.sh +++ b/automation/scripts/qemu-smoke-dom0-arm64.sh @@ -57,9 +57,7 @@ chmod +x etc/local.d/xen.start find . | cpio -R 0:0 -H newc -o | gzip >> ../dom0-rootfs.cpio.gz cd ../.. -# XXX QEMU looks for "efi-virtio.rom" even if it is unneeded -curl -fsSLO https://github.com/qemu/qemu/raw/v5.2.0/pc-bios/efi-virtio.rom -./binaries/qemu-system-aarch64 \ +qemu-system-aarch64 \ -machine virtualization=true \ -cpu cortex-a57 -machine type=virt \ -m 2048 -smp 2 -display none \ @@ -90,7 +88,7 @@ bash imagebuilder/scripts/uboot-script-gen -t tftp -d binaries/ -c binaries/conf # Run the test rm -f smoke.serial -export TEST_CMD="./binaries/qemu-system-aarch64 \ +export TEST_CMD="qemu-system-aarch64 \ -machine virtualization=true \ -cpu cortex-a57 -machine type=virt \ -m 2048 -monitor none -serial stdio \ diff --git a/automation/scripts/qemu-smoke-dom0less-arm32.sh b/automation/scripts/qemu-smoke-dom0less-arm32.sh index 627d890a39..20e43b4f04 100755 --- a/automation/scripts/qemu-smoke-dom0less-arm32.sh +++ b/automation/scripts/qemu-smoke-dom0less-arm32.sh @@ -78,9 +78,7 @@ chmod +x init find . | cpio -R 0:0 -H newc -o | gzip > ../initrd.gz cd .. -# XXX QEMU looks for "efi-virtio.rom" even if it is unneeded -curl -fsSLO https://github.com/qemu/qemu/raw/v5.2.0/pc-bios/efi-virtio.rom -./qemu-system-arm \ +qemu-system-arm \ -machine virt \ -machine virtualization=true \ -smp 4 \ @@ -130,7 +128,7 @@ bash imagebuilder/scripts/uboot-script-gen -t tftp -d . -c config # Run the test rm -f ${serial_log} -export TEST_CMD="./qemu-system-arm \ +export TEST_CMD="qemu-system-arm \ -machine virt \ -machine virtualization=true \ -smp 4 \ diff --git a/automation/scripts/qemu-smoke-dom0less-arm64.sh b/automation/scripts/qemu-smoke-dom0less-arm64.sh index 05c4a6acbb..a9e99f1ae3 100755 --- a/automation/scripts/qemu-smoke-dom0less-arm64.sh +++ b/automation/scripts/qemu-smoke-dom0less-arm64.sh @@ -78,9 +78,7 @@ if [[ "${test_variant}" == "gicv3" ]]; then domU_check="echo \"${passed}\"" fi -# XXX QEMU looks for "efi-virtio.rom" even if it is unneeded -curl -fsSLO https://github.com/qemu/qemu/raw/v5.2.0/pc-bios/efi-virtio.rom -./binaries/qemu-system-aarch64 \ +qemu-system-aarch64 \ -machine virtualization=true \ -cpu cortex-a57 -machine type=virt,gic-version=$gic_version \ -m 2048 -smp 2 -display none \ @@ -203,7 +201,7 @@ bash imagebuilder/scripts/uboot-script-gen -t tftp -d binaries/ -c binaries/conf # Run the test rm -f smoke.serial -export TEST_CMD="./binaries/qemu-system-aarch64 \ +export TEST_CMD="qemu-system-aarch64 \ -machine virtualization=true \ -cpu cortex-a57 -machine type=virt,gic-version=$gic_version \ -m 2048 -monitor none -serial stdio \ diff --git a/automation/tests-artifacts/qemu-system-aarch64/6.0.0-arm64v8.dockerfile b/automation/tests-artifacts/qemu-system-aarch64/6.0.0-arm64v8.dockerfile deleted file mode 100644 index e9f5576be7..0000000000 --- a/automation/tests-artifacts/qemu-system-aarch64/6.0.0-arm64v8.dockerfile +++ /dev/null @@ -1,77 +0,0 @@ -# syntax=docker/dockerfile:1 -FROM --platform=linux/arm64/v8 debian:bookworm -LABEL maintainer.name="The Xen Project" \ - maintainer.email="xen-devel@lists.xenproject.org" - -ENV DEBIAN_FRONTEND=noninteractive -ENV QEMU_VERSION=6.0.0 -ENV USER root - -RUN mkdir /build -WORKDIR /build - -# build depends -RUN apt-get update && \ - apt-get --quiet --yes install \ - build-essential \ - curl \ - python3 \ - ninja-build \ - pkg-config \ - libglib2.0-dev \ - libpixman-1-dev \ - && \ - \ - curl -fsSLO https://download.qemu.org/qemu-"$QEMU_VERSION".tar.xz && \ - tar xvJf qemu-"$QEMU_VERSION".tar.xz && \ - cd qemu-"$QEMU_VERSION" && \ - ./configure \ - --target-list=arm-softmmu,aarch64-softmmu \ - --enable-system \ - --disable-blobs \ - --disable-bsd-user \ - --disable-debug-info \ - --disable-glusterfs \ - --disable-gtk \ - --disable-guest-agent \ - --disable-linux-user \ - --disable-sdl \ - --disable-spice \ - --disable-tpm \ - --disable-vhost-net \ - --disable-vhost-scsi \ - --disable-vhost-user \ - --disable-vhost-vsock \ - --disable-virtfs \ - --disable-vnc \ - --disable-werror \ - --disable-xen \ - --disable-safe-stack \ - --disable-libssh \ - --disable-opengl \ - --disable-tools \ - --disable-virglrenderer \ - --disable-stack-protector \ - --disable-containers \ - --disable-replication \ - --disable-cloop \ - --disable-dmg \ - --disable-vvfat \ - --disable-vdi \ - --disable-parallels \ - --disable-qed \ - --disable-bochs \ - --disable-qom-cast-debug \ - --disable-vhost-vdpa \ - --disable-vhost-kernel \ - --disable-qcow1 \ - --disable-live-block-migration \ - && \ - make -j$(nproc) && \ - cp ./build/qemu-system-aarch64 / && \ - cp ./build/qemu-system-arm / && \ - cd /build && \ - rm -rf qemu-"$QEMU_VERSION"* && \ - apt-get autoremove -y && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists* /tmp/* /var/tmp/*