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>
This commit is contained in:
Richard Henderson
2025-12-05 12:38:37 -06:00
19 changed files with 265 additions and 108 deletions

View File

@@ -656,14 +656,12 @@ build-tci:
--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

View File

@@ -37,7 +37,7 @@ x64-freebsd-14-build:
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

View File

@@ -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:

View File

@@ -4444,12 +4444,13 @@ R: Philippe Mathieu-Daudé <philmd@linaro.org>
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
-------------

6
configure vendored
View File

@@ -1801,7 +1801,7 @@ if test "$plugins" = "yes" ; then
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 @@ for target in $target_list; do
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

View File

@@ -98,6 +98,8 @@ class BinaryFile:
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):

View File

@@ -308,13 +308,24 @@ I2C devices connected to the board can be defined via the QEMU command
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)
''''''''''''''''''''''''''''''''''''''''''

View File

@@ -266,7 +266,7 @@ Splitting a loop can also be useful to reduce the number of barriers:
| 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 @@ as well) ``smp_wmb()``:
| | 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); |
+------------------------------------------+----------------------------------+

View File

@@ -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 @@ build QEMU in MSYS2 itself.
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 @@ and force a cross compilation (with empty prefix).
::
./configure --cpu=x86_64 --cross-prefix=

View File

@@ -175,6 +175,7 @@ static void fby35_class_init(ObjectClass *oc, const void *data)
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;

View File

@@ -119,6 +119,7 @@ static void plugin_vcpu_cb__discon(CPUState *cpu,
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 @@ static void plugin_vcpu_cb__discon(CPUState *cpu,
func(cb->ctx->id, cpu->cpu_index, type, from, to);
}
}
qemu_plugin_set_cb_flags(cpu, QEMU_PLUGIN_CB_NO_REGS);
}
/*

View File

@@ -37,6 +37,15 @@ export SRC_PATH
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))

View File

@@ -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 \

View File

@@ -4,6 +4,7 @@ packages:
- bash
- bc
- bison
- bzip2
- ccache
- findutils
- flex

View File

@@ -161,6 +161,46 @@ ubuntu2204_rust_extras = [
'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 @@ try:
# 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
#

View File

@@ -39,6 +39,8 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
_supported_fmt qcow2
_supported_proto file
_require_secret
filter_test_dir()
{

View File

@@ -39,6 +39,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
_supported_fmt qcow qcow2
_supported_proto file
_require_secret
size=128M

View File

@@ -39,6 +39,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
_supported_fmt qcow qcow2
_supported_proto file
_require_secret
size=128M

View File

@@ -1053,6 +1053,20 @@ _require_one_device_of()
_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