mirror of
https://gitlab.com/qemu-project/qemu.git
synced 2025-12-05 18:56:55 -06:00
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:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
6
configure
vendored
@@ -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
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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)
|
||||
''''''''''''''''''''''''''''''''''''''''''
|
||||
|
||||
|
||||
@@ -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); |
|
||||
+------------------------------------------+----------------------------------+
|
||||
|
||||
@@ -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=
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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 \
|
||||
|
||||
@@ -4,6 +4,7 @@ packages:
|
||||
- bash
|
||||
- bc
|
||||
- bison
|
||||
- bzip2
|
||||
- ccache
|
||||
- findutils
|
||||
- flex
|
||||
|
||||
@@ -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
|
||||
#
|
||||
|
||||
@@ -39,6 +39,8 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
||||
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file
|
||||
_require_secret
|
||||
|
||||
|
||||
filter_test_dir()
|
||||
{
|
||||
|
||||
@@ -39,6 +39,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
||||
|
||||
_supported_fmt qcow qcow2
|
||||
_supported_proto file
|
||||
_require_secret
|
||||
|
||||
|
||||
size=128M
|
||||
|
||||
@@ -39,6 +39,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
||||
|
||||
_supported_fmt qcow qcow2
|
||||
_supported_proto file
|
||||
_require_secret
|
||||
|
||||
|
||||
size=128M
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user