Re: [PATCH v2 40/50] test: helper-to-tcg docker tests
Pierrick Bouvier <[email protected]> Fri, 31 Jul 2026 09:47:45 -0700
| Newsgroups | org.nongnu.qemu-devel |
|---|---|
| Message-ID | <[email protected]> |
On 7/29/2026 8:10 PM, Anton Johansson wrote: > Adds a docker container with LLVM versions 15-21 and a docker test for > building helper-to-tcg and running end-to-end tests along with running > check-tcg, for testing targets such as Hexagon. > > Signed-off-by: Anton Johansson <[email protected]> > -- > NOTE: Last I checked I had some troubles with C++17 support within the > container, was a while ago though. > --- > tests/docker/dockerfiles/debian-llvm.docker | 38 +++++++++++++++++++ > tests/docker/test-helper-to-tcg | 41 +++++++++++++++++++++ > 2 files changed, 79 insertions(+) > create mode 100644 tests/docker/dockerfiles/debian-llvm.docker > create mode 100755 tests/docker/test-helper-to-tcg > > diff --git a/tests/docker/dockerfiles/debian-llvm.docker b/tests/docker/dockerfiles/debian-llvm.docker > new file mode 100644 > index 0000000000..7bfc084a34 > --- /dev/null > +++ b/tests/docker/dockerfiles/debian-llvm.docker > @@ -0,0 +1,38 @@ > +FROM docker.io/library/debian:11-slim > + As Alessandro mentioned in his answer, all others containers are using debian:13-slim, you can migrate to this one also. > +RUN apt update && \ > + DEBIAN_FRONTEND=noninteractive apt install -yy eatmydata && \ > + DEBIAN_FRONTEND=noninteractive eatmydata \ > + apt install -y --no-install-recommends \ > + bison \ > + ca-certificates \ > + flex \ > + gawk \ > + libmpc-dev \ > + libmpfr-dev \ > + libglib2.0-dev \ > + libpixman-1-dev \ > + make \ > + ninja-build \ > + rsync \ > + pkgconf \ > + wget \ > + lsb-release \ > + software-properties-common \ > + gnupg \ > + meson \ > + python3-pip \ > + python3-setuptools \ > + python3-venv \ > + python3-wheel > + > +RUN /usr/bin/pip3 install tomli > + > +RUN wget https://apt.llvm.org/llvm.sh && chmod +x llvm.sh > +RUN ./llvm.sh 15 all > +RUN ./llvm.sh 16 all > +RUN ./llvm.sh 17 all > +RUN ./llvm.sh 18 all > +RUN ./llvm.sh 19 all > +RUN ./llvm.sh 20 all > +RUN ./llvm.sh 21 all > diff --git a/tests/docker/test-helper-to-tcg b/tests/docker/test-helper-to-tcg > new file mode 100755 > index 0000000000..0c27040d60 > --- /dev/null > +++ b/tests/docker/test-helper-to-tcg > @@ -0,0 +1,41 @@ > +#!/bin/bash -e > + > +TEST_COMMAND="" > +TARGET_LIST="" > + > +cd "$BUILD_DIR" > + > +# Checks helper-to-tcg builds and passes unit tests > +# for targetted LLVM versions. Run meson from QEMU source so helper-to-tcg tests can find > +# `tcg-global-mappings.h`. > +for version in {15..21}; do > + llvm_config=llvm-config-${version} > + build_dir="${BUILD_DIR}/build-helper-to-tcg-${version}" > + cxx=$(${llvm_config} --bindir)/clang++ > + [ ! -d ${build_dir} ] && mkdir ${build_dir} > + CXX=${cxx} meson setup ${build_dir} ${QEMU_SRC}/subprojects/helper-to-tcg -Dllvm_config_path=${llvm_config} > + meson compile -C ${build_dir} > + meson test -C ${build_dir} --suite 'helper-to-tcg:helper-to-tcg' > +done > + > +# Runs check-tcg for all LLVM versions > +llvm_config_main=llvm-config-15 > +bin_main=$(${llvm_config_main} --bindir) > +cc_main=${bin_main}/clang > +cxx_main=${bin_main}/clang++ > +for version in {15..21}; do > + llvm_config=llvm-config-${version} > + build_dir=build-qemu-${version} > + bin=$(${llvm_config} --bindir) > + cxx=${bin}/clang++ > + cc=${bin}/clang > + [ ! -d ${build_dir} ] && mkdir ${build_dir} > + > + pushd ${build_dir} > + > + TARGET_LIST=${TARGET_LIST:-$DEF_TARGET_LIST} \ > + build_qemu "--cc=${cc_main} --cxx=${cxx_main} -Dhelper-to-tcg:llvm_config_path=${llvm_config} --enable-debug-tcg" > + check_tcg > + > + popd > +done