Merge tag 'pull-10.2-final-fixes-051225-2' of https://gitlab.com/stsquad/qemu into staging
Final fixes for 10.2 (gitlab, testing, docker, docs, plugins)
- drop out of date --disable-pie workaround for aarch64 custom job
- remove explicit pxe-test from build with no libslirp
- update the FreeBSD test image
- don't try and run check-tcg tests we haven't built qemu for
- skip iotests which need crypto if we haven't got support
- transition debian-all-test-cross to lcitool
- update build env documentation to refer to lcitool
- update MAINTAINERS entry for custom runners
- ensure discon plugins can read registers
- fix a bug on uftrace symbol helper script
- deprecate the fby35 machine
# -----BEGIN PGP SIGNATURE-----
#
# iQEzBAABCgAdFiEEZoWumedRZ7yvyN81+9DbCVqeKkQFAmkzAAsACgkQ+9DbCVqe
# KkSCmAf/e5bJGX4GJhNBV9OwBahjDx0U+oCPUCQwH5E7KgUbvBKMd2e+icgjoPnF
# mAA+SVk1wlqi/EPywqMWIcYTNSwg1ZKkqxQwKnzjlinzshk5Q3Rd8CkIUCDE+i6B
# Cn5HXNMxAHwJZXi2ftOUm2wvb5p4NgahbtKUkEAsYvVWgHF+gQ+1KrpbKze2+Mzk
# 707c2zf0/8mcNl7GZDc7ti6MXEmlejR46UTsKz6u12hGTHjN13UDa+yQXqpot5y7
# blUxwneXo7zdxB6EnGgvArzZQh8o0fOo0zWoC5GDKrbdLIrBVxhXYoWCqgaQv7h7
# v5HhMvzq7obIa+qRnjRzUO68MT1rcw==
# =e46t
# -----END PGP SIGNATURE-----
# gpg: Signature made Fri 05 Dec 2025 09:53:47 AM CST
# gpg: using RSA key 6685AE99E75167BCAFC8DF35FBD0DB095A9E2A44
# gpg: Good signature from "Alex Bennée (Master Work Key) <alex.bennee@linaro.org>" [unknown]
# gpg: WARNING: This key is not certified with a trusted signature!
# gpg: There is no indication that the signature belongs to the owner.
# Primary key fingerprint: 6685 AE99 E751 67BC AFC8 DF35 FBD0 DB09 5A9E 2A44
* tag 'pull-10.2-final-fixes-051225-2' of https://gitlab.com/stsquad/qemu:
aspeed: Deprecate the fby35 machine
contrib/plugins/uftrace_symbols.py: unbreak --no-prefix-symbols
plugins/core: allow reading of registers during discon events
MAINTAINERS: update the custom runner entries
docs/devel: Correct typo
docs/devel: update build environment setup documentation
tests/docker: drop --disable-[tools|system] from all-test-cross
tests/docker: transition debian-all-test-cross to lcitool
tests/lcitool: add bzip2 to the minimal dependency list
tests/qemu-iotests: Check for a functional "secret" object before using it
tests/tcg: honour the available QEMU binaries when running check-tcg
gitlab-ci.d/cirrus: Update the FreeBSD job to v14.3
gitlab: drop explicit pxe-test from the build-tci job
gitlab: drop --disable-pie from aarch64-all-linux-static build
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
diff --git a/.gitlab-ci.d/buildtest.yml b/.gitlab-ci.d/buildtest.yml
index 44df116..dfe954f 100644
--- a/.gitlab-ci.d/buildtest.yml
+++ b/.gitlab-ci.d/buildtest.yml
@@ -656,14 +656,12 @@
--target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)"
|| { cat config.log meson-logs/meson-log.txt && exit 1; }
- make -j"$JOBS"
- - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test
+ - make tests/qtest/boot-serial-test tests/qtest/cdrom-test
- for tg in $TARGETS ; do
export QTEST_QEMU_BINARY="./qemu-system-${tg}" ;
./tests/qtest/boot-serial-test || exit 1 ;
./tests/qtest/cdrom-test || exit 1 ;
done
- - QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test
- - QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow
- make check-tcg
# Check our reduced build configurations
diff --git a/.gitlab-ci.d/cirrus.yml b/.gitlab-ci.d/cirrus.yml
index 13a0bf5..0d66a14 100644
--- a/.gitlab-ci.d/cirrus.yml
+++ b/.gitlab-ci.d/cirrus.yml
@@ -37,7 +37,7 @@
NAME: freebsd-14
CIRRUS_VM_INSTANCE_TYPE: freebsd_instance
CIRRUS_VM_IMAGE_SELECTOR: image_family
- CIRRUS_VM_IMAGE_NAME: freebsd-14-2
+ CIRRUS_VM_IMAGE_NAME: freebsd-14-3
CIRRUS_VM_CPUS: 8
CIRRUS_VM_RAM: 8G
UPDATE_COMMAND: pkg update; pkg upgrade -y
diff --git a/.gitlab-ci.d/custom-runners/ubuntu-24.04-aarch64.yml b/.gitlab-ci.d/custom-runners/ubuntu-24.04-aarch64.yml
index 98d9919..b4c0faa 100644
--- a/.gitlab-ci.d/custom-runners/ubuntu-24.04-aarch64.yml
+++ b/.gitlab-ci.d/custom-runners/ubuntu-24.04-aarch64.yml
@@ -41,9 +41,7 @@
ubuntu-24.04-aarch64-all-linux-static:
extends: .ubuntu_aarch64_template
variables:
- # Disable -static-pie due to build error with system libc:
- # https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1987438
- CONFIGURE_ARGS: --enable-debug --static --disable-system --disable-pie
+ CONFIGURE_ARGS: --enable-debug --static --disable-system
MAKE_CHECK_ARGS: check-tcg
ubuntu-24.04-aarch64-all:
diff --git a/MAINTAINERS b/MAINTAINERS
index d007584..63e9ba5 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -4444,12 +4444,13 @@
S: Maintained
F: tests/tcg/Makefile.target
-GitLab custom runner (Works On Arm Sponsored)
+GitLab custom runners (HW sponsored by Linaro, OSOUL and IBM)
M: Alex Bennée <alex.bennee@linaro.org>
M: Philippe Mathieu-Daudé <philmd@linaro.org>
S: Maintained
-F: .gitlab-ci.d/custom-runners/ubuntu-22.04-aarch64.yml
-F: .gitlab-ci.d/custom-runners/ubuntu-22.04-aarch32.yml
+F: .gitlab-ci.d/custom-runners/ubuntu-24.04-aarch64.yml
+F: .gitlab-ci.d/custom-runners/ubuntu-24.04-s390x.yml
+F: .gitlab-ci.d/custom-runners/debian-13-ppc64le.yml
Documentation
-------------
diff --git a/configure b/configure
index a2f66f7..82cace1 100755
--- a/configure
+++ b/configure
@@ -1801,7 +1801,7 @@
fi
echo "PYTHON=$python" >> tests/tcg/$config_host_mak
-tcg_tests_targets=
+tcg_tests_with_compilers=
for target in $target_list; do
arch=${target%%-*}
@@ -1852,12 +1852,12 @@
fi
echo "run-tcg-tests-$target: $qemu\$(EXESUF)" >> Makefile.prereqs
- tcg_tests_targets="$tcg_tests_targets $target"
+ tcg_tests_with_compilers="$tcg_tests_with_compilers $target"
fi
done
if test "$tcg" = "enabled"; then
- echo "TCG_TESTS_TARGETS=$tcg_tests_targets" >> $config_host_mak
+ echo "TCG_TESTS_WITH_COMPILERS=$tcg_tests_with_compilers" >> $config_host_mak
fi
if test "$skip_meson" = no; then
diff --git a/contrib/plugins/uftrace_symbols.py b/contrib/plugins/uftrace_symbols.py
index 45fb79c..2170454 100755
--- a/contrib/plugins/uftrace_symbols.py
+++ b/contrib/plugins/uftrace_symbols.py
@@ -98,6 +98,8 @@ def generate_symbol_file(self, prefix_symbols):
size = f'{s.size:{addrx}}'
if prefix_symbols:
name = f'{binary_name}:{s.name}'
+ else:
+ name = s.name
print(addr, size, 'T', name, file=sym_file)
def generate_debug_file(self):
diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
index 9386cff..ac31a2b 100644
--- a/docs/about/deprecated.rst
+++ b/docs/about/deprecated.rst
@@ -308,13 +308,24 @@
line.
Arm ``fp5280g2-bmc`` machine (since 10.2)
-'''''''''''''''''''''''''''''''''''''''''''
+'''''''''''''''''''''''''''''''''''''''''
The ``fp5280g2-bmc`` machine does not rely on any specific device
models, it can be replaced by the ``ast2500-evb`` machine using the
``fmc-model`` option to specify the flash type. The I2C devices
connected to the board can be defined via the QEMU command line.
+Arm ``fby35`` machine (since 10.2)
+''''''''''''''''''''''''''''''''''
+
+The ``fby35`` machine was originally added as an example of a
+multi-SoC system, with the expectation the models would evolve over
+time in an heterogeneous system. This hasn't happened and no public
+firmware is available to boot it. It can be replaced by the
+``ast2700fc``, another multi-SoC machine based on the newer AST2700
+SoCs which are excepted to receive better support in the future.
+
+
RISC-V default machine option (since 10.0)
''''''''''''''''''''''''''''''''''''''''''
diff --git a/docs/devel/atomics.rst b/docs/devel/atomics.rst
index 95c7b77..ea4ede4 100644
--- a/docs/devel/atomics.rst
+++ b/docs/devel/atomics.rst
@@ -266,7 +266,7 @@
| n = 0; | smp_mb_release(); |
| for (i = 0; i < 10; i++) { | for (i = 0; i < 10; i++) |
| qatomic_store_release(&a[i], false); | qatomic_set(&a[i], false); |
- | smp_mb(); | smb_mb(); |
+ | smp_mb(); | smp_mb(); |
| n += qatomic_read(&b[i]); | n = 0; |
| } | for (i = 0; i < 10; i++) |
| | n += qatomic_read(&b[i]); |
@@ -283,7 +283,7 @@
| | smp_mb_release(); |
| for (i = 0; i < 10; i++) { | for (i = 0; i < 10; i++) |
| qatomic_store_release(&a[i], false); | qatomic_set(&a[i], false); |
- | qatomic_store_release(&b[i], false); | smb_wmb(); |
+ | qatomic_store_release(&b[i], false); | smp_wmb(); |
| } | for (i = 0; i < 10; i++) |
| | qatomic_set(&b[i], false); |
+------------------------------------------+----------------------------------+
diff --git a/docs/devel/build-environment.rst b/docs/devel/build-environment.rst
index 661f6ea..61b2dc0 100644
--- a/docs/devel/build-environment.rst
+++ b/docs/devel/build-environment.rst
@@ -4,55 +4,103 @@
Setup build environment
=======================
-QEMU uses a lot of dependencies on the host system. glib2 is used everywhere in
-the code base, and most of the other dependencies are optional.
+QEMU uses a lot of dependencies on the host system a large number of
+which are optional. At a minimum we expect to have a system C library
+(usually glibc but others can work), the glib2 library (used heavily
+in the code base) and a few other core libraries for interfacing with
+code modules and system build descriptions.
-We present here simple instructions to enable native builds on most popular
-systems.
+We use the ``libvirt-ci`` project to handle the mapping of
+dependencies to a wide variety output formats including system install
+scripts. For example:
-You can find additional instructions on `QEMU wiki <https://wiki.qemu.org/>`_:
+.. code-block:: bash
-- `Linux <https://wiki.qemu.org/Hosts/Linux>`_
-- `MacOS <https://wiki.qemu.org/Hosts/Mac>`_
-- `Windows <https://wiki.qemu.org/Hosts/W32>`_
-- `BSD <https://wiki.qemu.org/Hosts/BSD>`_
+ # THIS FILE WAS AUTO-GENERATED
+ #
+ # $ lcitool buildenvscript debian-13 ./tests/lcitool/projects/qemu-minimal.yml
+ #
+ # https://gitlab.com/libvirt/libvirt-ci
-Note: Installing dependencies using your package manager build dependencies may
-miss out on deps that have been newly introduced in qemu.git. In more, it misses
-deps the distribution has decided to exclude.
+ function install_buildenv() {
+ export DEBIAN_FRONTEND=noninteractive
+ apt-get update
+ apt-get dist-upgrade -y
+ apt-get install --no-install-recommends -y \
+ bash \
+ bc \
+ bison \
+ bzip2 \
+ ca-certificates \
+ ccache \
+ findutils \
+ flex \
+ gcc \
+ git \
+ libc6-dev \
+ libfdt-dev \
+ libffi-dev \
+ libglib2.0-dev \
+ libpixman-1-dev \
+ locales \
+ make \
+ meson \
+ ninja-build \
+ pkgconf \
+ python3 \
+ python3-venv \
+ sed \
+ tar
+ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen
+ dpkg-reconfigure locales
+ rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED
+ dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt
+ mkdir -p /usr/libexec/ccache-wrappers
+ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc
+ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
+ }
-Linux
------
+ export CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+ export LANG="en_US.UTF-8"
+ export MAKE="/usr/bin/make"
+ export NINJA="/usr/bin/ninja"
+ export PYTHON="/usr/bin/python3"
-Fedora
-++++++
+If you instead select the ``qemu.yml`` project file you will get all
+the dependencies that the project can use.
-::
+Using you system package manager
+--------------------------------
- sudo dnf update && sudo dnf builddep qemu
+.. note::
-Debian/Ubuntu
-+++++++++++++
+ Installing dependencies using your package manager build dependencies may
+ miss out on deps that have been newly introduced in qemu.git. It
+ also misses deps the distribution has decided to exclude.
-You first need to enable `Sources List <https://wiki.debian.org/SourcesList>`_.
-Then, use apt to install dependencies:
+Systems with Package Managers
++++++++++++++++++++++++++++++
-::
+.. list-table:: Package Manager Commands
+ :widths: 10 50 40
+ :header-rows: 1
- sudo apt update && sudo apt build-dep qemu
-
-MacOS
------
-
-You first need to install `Homebrew <https://brew.sh/>`_. Then, use it to
-install dependencies:
-
-::
-
- brew update && brew install $(brew deps --include-build qemu)
+ * - System
+ - Command
+ - Notes
+ * - Fedora
+ - ``sudo dnf update && sudo dnf builddep qemu``
+ -
+ * - Debian/Ubuntu
+ - ``sudo apt update && sudo apt build-dep qemu``
+ - Must enable `Sources List
+ <https://wiki.debian.org/SourcesList>`_ first
+ * - MacOS
+ - ``brew update && brew install $(brew deps --include-build qemu)``
+ - Using `Homebrew <https://brew.sh/>`_.
Windows
--------
++++++++
You first need to install `MSYS2 <https://www.msys2.org/>`_.
MSYS2 offers `different environments <https://www.msys2.org/docs/environments/>`_.
@@ -104,7 +152,7 @@
makepkg --syncdeps --nobuild PKGBUILD || true
Build on windows-aarch64
-++++++++++++++++++++++++
+~~~~~~~~~~~~~~~~~~~~~~~~
When trying to cross compile meson for x86_64 using UCRT64 or MINGW64 env,
configure will run into an error because the cpu detected is not correct.
@@ -115,4 +163,3 @@
::
./configure --cpu=x86_64 --cross-prefix=
-
diff --git a/hw/arm/fby35.c b/hw/arm/fby35.c
index 70d3a99..e61a643 100644
--- a/hw/arm/fby35.c
+++ b/hw/arm/fby35.c
@@ -175,6 +175,7 @@
MachineClass *mc = MACHINE_CLASS(oc);
mc->desc = "Meta Platforms fby35";
+ mc->deprecation_reason = "For a multi-soc machine, use 'ast2700fc' instead";
mc->init = fby35_init;
mc->no_floppy = 1;
mc->no_cdrom = 1;
diff --git a/plugins/core.c b/plugins/core.c
index 8f8bc72..b4b7830 100644
--- a/plugins/core.c
+++ b/plugins/core.c
@@ -119,6 +119,7 @@
struct qemu_plugin_cb *cb, *next;
uint64_t to = cpu->cc->get_pc(cpu);
+ qemu_plugin_set_cb_flags(cpu, QEMU_PLUGIN_CB_RW_REGS);
if (cpu->cpu_index < plugin.num_vcpus) {
/* iterate safely; plugins might uninstall themselves at any time */
QLIST_FOREACH_SAFE_RCU(cb, &plugin.cb_lists[ev], entry, next) {
@@ -127,6 +128,7 @@
func(cb->ctx->id, cpu->cpu_index, type, from, to);
}
}
+ qemu_plugin_set_cb_flags(cpu, QEMU_PLUGIN_CB_NO_REGS);
}
/*
diff --git a/tests/Makefile.include b/tests/Makefile.include
index d4dfbf3..7728098 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -37,6 +37,15 @@
SPEED = quick
+
+# TCG_TESTS_WITH_COMPILERS represents the test targets we have cross compiler
+# support for, CONFIGURED_TEST_TARGETS it what meson has finally
+# configured having rejected stuff we can't build.
+CONFIGURED_TCG_TARGETS=$(patsubst %-config-target.h, %, $(wildcard *-config-target.h))
+
+# This is the intersection of what tests we can build and is configured
+TCG_TESTS_TARGETS=$(filter $(CONFIGURED_TCG_TARGETS), $(TCG_TESTS_WITH_COMPILERS))
+
# Per guest TCG tests
BUILD_TCG_TARGET_RULES=$(patsubst %,build-tcg-tests-%, $(TCG_TESTS_TARGETS))
CLEAN_TCG_TARGET_RULES=$(patsubst %,clean-tcg-tests-%, $(TCG_TESTS_TARGETS))
diff --git a/tests/docker/dockerfiles/debian-all-test-cross.docker b/tests/docker/dockerfiles/debian-all-test-cross.docker
index 420a4e3..1823233 100644
--- a/tests/docker/dockerfiles/debian-all-test-cross.docker
+++ b/tests/docker/dockerfiles/debian-all-test-cross.docker
@@ -1,77 +1,97 @@
+# THIS FILE WAS AUTO-GENERATED
#
-# Docker all cross-compiler target (tests only)
+# $ lcitool dockerfile --layers all debian-13 qemu-minimal
#
-# While the normal cross builds take care to setup proper multiarch
-# build environments which can cross build QEMU this just installs the
-# basic compilers for as many targets as possible. We shall use this
-# to build and run linux-user tests on GitLab
-#
-FROM docker.io/library/debian:12-slim
+# https://gitlab.com/libvirt/libvirt-ci
-# Duplicate deb line as deb-src
-RUN sed -in "s/Types: deb/Types: deb deb-src/g" /etc/apt/sources.list.d/debian.sources
+FROM docker.io/library/debian:13-slim
RUN export DEBIAN_FRONTEND=noninteractive && \
apt-get update && \
apt-get install -y eatmydata && \
eatmydata apt-get dist-upgrade -y && \
- apt build-dep -yy --arch-only qemu
+ eatmydata apt-get install --no-install-recommends -y \
+ bash \
+ bc \
+ bison \
+ bzip2 \
+ ca-certificates \
+ ccache \
+ findutils \
+ flex \
+ gcc \
+ git \
+ libc6-dev \
+ libfdt-dev \
+ libffi-dev \
+ libglib2.0-dev \
+ libpixman-1-dev \
+ locales \
+ make \
+ ninja-build \
+ pkgconf \
+ python3 \
+ python3-pip \
+ python3-setuptools \
+ python3-venv \
+ python3-wheel \
+ sed \
+ tar && \
+ eatmydata apt-get autoremove -y && \
+ eatmydata apt-get autoclean -y && \
+ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
+ dpkg-reconfigure locales && \
+ rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED && \
+ dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
+ mkdir -p /usr/libexec/ccache-wrappers && \
+ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \
+ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
-# Add extra build tools and as many cross compilers as we can for testing
+RUN /usr/bin/pip3 install meson==1.8.1
+
+ENV CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+ENV LANG="en_US.UTF-8"
+ENV MAKE="/usr/bin/make"
+ENV NINJA="/usr/bin/ninja"
+ENV PYTHON="/usr/bin/python3"
+# extras for cross and alternate toolchains
RUN DEBIAN_FRONTEND=noninteractive eatmydata \
- apt install -y --no-install-recommends \
- bison \
- ccache \
- clang \
- dpkg-dev \
- flex \
- gcc \
- git \
- libclang-rt-dev \
- ninja-build \
- python3-pip \
- python3-setuptools \
- python3-tomli \
- python3-venv \
- python3-wheel
-
-# All the generally available compilers
+ apt install -y --no-install-recommends \
+ clang\
+ dpkg-dev\
+ libclang-rt-dev
ENV AVAILABLE_COMPILERS gcc-aarch64-linux-gnu \
- libc6-dev-arm64-cross \
- gcc-arm-linux-gnueabihf \
- libc6-dev-armhf-cross \
- gcc-mips-linux-gnu \
- libc6-dev-mips-cross \
- gcc-mips64-linux-gnuabi64 \
- libc6-dev-mips64-cross \
- gcc-mips64el-linux-gnuabi64 \
- libc6-dev-mips64el-cross \
- gcc-mipsel-linux-gnu \
- libc6-dev-mipsel-cross \
- gcc-powerpc64le-linux-gnu \
- libc6-dev-ppc64el-cross \
- gcc-riscv64-linux-gnu \
- libc6-dev-riscv64-cross \
- gcc-s390x-linux-gnu \
- libc6-dev-s390x-cross
-
+ libc6-dev-arm64-cross \
+ gcc-arm-linux-gnueabihf \
+ libc6-dev-armhf-cross \
+ gcc-mips-linux-gnu \
+ libc6-dev-mips-cross \
+ gcc-mips64-linux-gnuabi64 \
+ libc6-dev-mips64-cross \
+ gcc-mips64el-linux-gnuabi64 \
+ libc6-dev-mips64el-cross \
+ gcc-mipsel-linux-gnu \
+ libc6-dev-mipsel-cross \
+ gcc-powerpc64le-linux-gnu \
+ libc6-dev-ppc64el-cross \
+ gcc-riscv64-linux-gnu \
+ libc6-dev-riscv64-cross \
+ gcc-s390x-linux-gnu \
+ libc6-dev-s390x-cross
RUN if dpkg-architecture -e amd64; then \
export AVAILABLE_COMPILERS="${AVAILABLE_COMPILERS} gcc-hppa-linux-gnu libc6-dev-hppa-cross"; \
export AVAILABLE_COMPILERS="${AVAILABLE_COMPILERS} gcc-m68k-linux-gnu libc6-dev-m68k-cross"; \
export AVAILABLE_COMPILERS="${AVAILABLE_COMPILERS} gcc-powerpc-linux-gnu libc6-dev-powerpc-cross"; \
export AVAILABLE_COMPILERS="${AVAILABLE_COMPILERS} gcc-powerpc64-linux-gnu libc6-dev-ppc64-cross"; \
export AVAILABLE_COMPILERS="${AVAILABLE_COMPILERS} gcc-sparc64-linux-gnu libc6-dev-sparc64-cross"; \
- fi && \
- DEBIAN_FRONTEND=noninteractive eatmydata \
- apt install -y --no-install-recommends \
- ${AVAILABLE_COMPILERS} && \
- dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt
-
-
-ENV QEMU_CONFIGURE_OPTS --disable-system --disable-docs --disable-tools
+fi && \
+DEBIAN_FRONTEND=noninteractive eatmydata \
+apt install -y --no-install-recommends \
+${AVAILABLE_COMPILERS} && \
+dpkg-query --showformat '${Package}_${Version}_${Architecture}' --show > /packages.txt
+ENV QEMU_CONFIGURE_OPTS --disable-docs
ENV DEF_TARGET_LIST aarch64-linux-user,arm-linux-user,hppa-linux-user,i386-linux-user,m68k-linux-user,mips-linux-user,mips64-linux-user,mips64el-linux-user,mipsel-linux-user,ppc-linux-user,ppc64-linux-user,ppc64le-linux-user,riscv64-linux-user,s390x-linux-user,sparc64-linux-user
# As a final step configure the user (if env is defined)
-ENV MAKE /usr/bin/make
ARG USER
ARG UID
RUN if [ "${USER}" ]; then \
diff --git a/tests/lcitool/projects/qemu-minimal.yml b/tests/lcitool/projects/qemu-minimal.yml
index 6bc232a..2a1ac51 100644
--- a/tests/lcitool/projects/qemu-minimal.yml
+++ b/tests/lcitool/projects/qemu-minimal.yml
@@ -4,6 +4,7 @@
- bash
- bc
- bison
+ - bzip2
- ccache
- findutils
- flex
diff --git a/tests/lcitool/refresh b/tests/lcitool/refresh
index 3a31fcf..9df607a 100755
--- a/tests/lcitool/refresh
+++ b/tests/lcitool/refresh
@@ -161,6 +161,46 @@
'RUN cargo install bindgen-cli\n',
]
+debian_all_test_cross_compilers = [
+ "# extras for cross and alternate toolchains\n",
+ "RUN DEBIAN_FRONTEND=noninteractive eatmydata \\\n",
+ " apt install -y --no-install-recommends \\\n",
+ " clang\\\n",
+ " dpkg-dev\\\n",
+ " libclang-rt-dev\n",
+ "ENV AVAILABLE_COMPILERS gcc-aarch64-linux-gnu \\\n",
+ " libc6-dev-arm64-cross \\\n",
+ " gcc-arm-linux-gnueabihf \\\n",
+ " libc6-dev-armhf-cross \\\n",
+ " gcc-mips-linux-gnu \\\n",
+ " libc6-dev-mips-cross \\\n",
+ " gcc-mips64-linux-gnuabi64 \\\n",
+ " libc6-dev-mips64-cross \\\n",
+ " gcc-mips64el-linux-gnuabi64 \\\n",
+ " libc6-dev-mips64el-cross \\\n",
+ " gcc-mipsel-linux-gnu \\\n",
+ " libc6-dev-mipsel-cross \\\n",
+ " gcc-powerpc64le-linux-gnu \\\n",
+ " libc6-dev-ppc64el-cross \\\n",
+ " gcc-riscv64-linux-gnu \\\n",
+ " libc6-dev-riscv64-cross \\\n",
+ " gcc-s390x-linux-gnu \\\n",
+ " libc6-dev-s390x-cross\n",
+ "RUN if dpkg-architecture -e amd64; then \\\n",
+ " export AVAILABLE_COMPILERS=\"${AVAILABLE_COMPILERS} gcc-hppa-linux-gnu libc6-dev-hppa-cross\"; \\\n",
+ " export AVAILABLE_COMPILERS=\"${AVAILABLE_COMPILERS} gcc-m68k-linux-gnu libc6-dev-m68k-cross\"; \\\n",
+ " export AVAILABLE_COMPILERS=\"${AVAILABLE_COMPILERS} gcc-powerpc-linux-gnu libc6-dev-powerpc-cross\"; \\\n",
+ " export AVAILABLE_COMPILERS=\"${AVAILABLE_COMPILERS} gcc-powerpc64-linux-gnu libc6-dev-ppc64-cross\"; \\\n",
+ " export AVAILABLE_COMPILERS=\"${AVAILABLE_COMPILERS} gcc-sparc64-linux-gnu libc6-dev-sparc64-cross\"; \\\n",
+ "fi && \\\n",
+ "DEBIAN_FRONTEND=noninteractive eatmydata \\\n",
+ "apt install -y --no-install-recommends \\\n",
+ "${AVAILABLE_COMPILERS} && \\\n",
+ "dpkg-query --showformat '${Package}_${Version}_${Architecture}' --show > /packages.txt\n",
+ "ENV QEMU_CONFIGURE_OPTS --disable-docs\n",
+ "ENV DEF_TARGET_LIST aarch64-linux-user,arm-linux-user,hppa-linux-user,i386-linux-user,m68k-linux-user,mips-linux-user,mips64-linux-user,mips64el-linux-user,mipsel-linux-user,ppc-linux-user,ppc64-linux-user,ppc64le-linux-user,riscv64-linux-user,s390x-linux-user,sparc64-linux-user\n",
+]
+
def cross_build(prefix, targets):
conf = "ENV QEMU_CONFIGURE_OPTS=--cross-prefix=%s\n" % (prefix)
targets = "ENV DEF_TARGET_LIST=%s\n" % (targets)
@@ -256,6 +296,15 @@
# https://github.com/mesonbuild/meson/pull/14991
enable_rust=False)
+ # We also generate some docker files with minimal dependencies and
+ # as many cross-compilers as Debian will package for building TCG
+ # tests.
+
+ generate_dockerfile("debian-all-test-cross", "debian-13",
+ project="qemu-minimal",
+ enable_rust=False,
+ trailer="".join(debian_all_test_cross_compilers))
+
#
# Cirrus packages lists for GitLab
#
diff --git a/tests/qemu-iotests/049 b/tests/qemu-iotests/049
index ed12fa4..a1b9220 100755
--- a/tests/qemu-iotests/049
+++ b/tests/qemu-iotests/049
@@ -39,6 +39,8 @@
_supported_fmt qcow2
_supported_proto file
+_require_secret
+
filter_test_dir()
{
diff --git a/tests/qemu-iotests/134 b/tests/qemu-iotests/134
index b2c3c03..cc1e35e 100755
--- a/tests/qemu-iotests/134
+++ b/tests/qemu-iotests/134
@@ -39,6 +39,7 @@
_supported_fmt qcow qcow2
_supported_proto file
+_require_secret
size=128M
diff --git a/tests/qemu-iotests/158 b/tests/qemu-iotests/158
index 3a9ad7e..8fc4e98 100755
--- a/tests/qemu-iotests/158
+++ b/tests/qemu-iotests/158
@@ -39,6 +39,7 @@
_supported_fmt qcow qcow2
_supported_proto file
+_require_secret
size=128M
diff --git a/tests/qemu-iotests/common.rc b/tests/qemu-iotests/common.rc
index e977cb4..10d83d8 100644
--- a/tests/qemu-iotests/common.rc
+++ b/tests/qemu-iotests/common.rc
@@ -1053,6 +1053,20 @@
_notrun "$* not available"
}
+_require_secret()
+{
+ if [ -e "$TEST_IMG" ]; then
+ echo "unwilling to overwrite existing file"
+ exit 1
+ fi
+ if $QEMU_IMG create -f $IMGFMT --object secret,id=sec0,data=123 \
+ -o encryption=on,encrypt.key-secret=sec0 "$TEST_IMG" 1M 2>&1 \
+ | grep "Unsupported cipher" ; then
+ _notrun "missing cipher support"
+ fi
+ rm -f "$TEST_IMG"
+}
+
_qcow2_dump_header()
{
if [[ "$1" == "--no-filter-compression" ]]; then