From: Bruce Ashfield <bruce.ashfield@gmail.com>
To: haitao.liu@windriver.com
Cc: meta-virtualization@lists.yoctoproject.org
Subject: Re: [meta-virtualization][PATCH] libvirt: re-add ptest support for meson build system
Date: Fri, 12 Jun 2026 11:48:02 -0700 (PDT) [thread overview]
Message-ID: <6a2c5462.f542fed9.183ec6.cc90@mx.google.com> (raw)
In-Reply-To: <20260529023941.1460960-1-haitao.liu@windriver.com>
Merged into master as 3ed3d6b3.
This one needed a small conflict resolution. Your patch was generated
against master state from before our 2026-06-02 libvirt 12.4.0 bump,
which dropped the file://0001-qemu_nbdkit.c-use-llu-to-print-time_t.patch
SRC_URI entry (upstream took an equivalent fix between v12.1.0 and
v12.4.0, so the local backport became a reverse-apply hazard).
The qemu_nbdkit line was context for your hunk's removal of
file://0001-messon.build-remove-build-path-information-to-avoid-.patch
and file://0001-tests-meson-clear-absolute-directory-paths.patch, so
git am --3way landed it as a conflict. The right resolution is the
intersection of both intents: drop the qemu_nbdkit patch (already done
on master) AND drop the two meson patches (your intent). The
substantive change in the rest of the patch — adding run-ptest,
inheriting ptest, the do_configure prepend/append blocks, and
do_install_ptest — applies cleanly.
End state of the SRC_URI block, for confirmation:
SRC_URI = "gitsm://github.com/libvirt/libvirt.git;name=libvirt;protocol=https;branch=master \
file://libvirtd.sh \
file://libvirtd.conf \
file://run-ptest \
file://dnsmasq.conf \
file://hook_support.py \
file://gnutls-helper.py;subdir=${BP} \
file://libvirt-qemu.conf \
file://0001-prevent-gendispatch.pl-generating-build-path-in-code.patch \
"
The wrynose-tagged 2/2 of this patch (#2881) is parked behind the
rejected wrynose libvirt 12.2.0 version-bump in 1/2, so this master
landing doesn't affect that decision.
Thanks for the meson ptest work.
Bruce
On Fri, May 29, 2026 at 10:39 +0800, jason.lau wrote:
> libvirt has switched its build system from Makefile to meson, so the
> original run-ptest which relied on "make -C tests -k check-TESTS" no
> longer works. Re-add ptest support based on the meson build system:
>
> - Rewrite run-ptest to directly execute the compiled test binaries
> instead of invoking make.
> - Patch meson.build at configure time to replace absolute build/source
> paths with the ptest install paths, removing the need for separate
> path-stripping patches.
> - Install test binaries and their required data files into the ptest
> directory.
>
> Test results on genericx86-64:
>
> All 120 tests passed (0 failures, 0 skips).
>
> root@genericx86-64:/usr/lib/libvirt/ptest# ./run-ptest
> PASS: chxml2xmltest
> PASS: nssguestlinktest
> PASS: virbuftest
> PASS: viracpitest
> PASS: esxutilstest
> PASS: ssh
> PASS: storagepoolxml2xmltest
> PASS: commandtest
> ...
> ...
> PASS: nwfilterebiptablestest
> PASS: cputest
>
> === Test Summary ===
> PASS: 120
> FAIL: 0
> SKIP: 0
> TOTAL: 120
>
> Signed-off-by: Haitao Liu <haitao.liu@windriver.com>
> ---
> recipes-extended/libvirt/libvirt/run-ptest | 32 ++++++++++++++-
> recipes-extended/libvirt/libvirt_git.bb | 45 ++++++++++++++++++++--
> 2 files changed, 73 insertions(+), 4 deletions(-)
>
> diff --git a/recipes-extended/libvirt/libvirt/run-ptest b/recipes-extended/libvirt/libvirt/run-ptest
> index a434b186..dd1f94d3 100644
> --- a/recipes-extended/libvirt/libvirt/run-ptest
> +++ b/recipes-extended/libvirt/libvirt/run-ptest
> @@ -1,3 +1,33 @@
> #!/bin/sh
>
> -make -C tests -k check-TESTS
> +PTEST_DIR="/usr/lib/libvirt/ptest/tests"
> +export LD_LIBRARY_PATH="${PTEST_DIR}:${LD_LIBRARY_PATH}"
> +PASS=0
> +FAIL=0
> +SKIP=0
> +
> +run_test() {
> + tname="$1"
> + tpath="$2"
> + "$tpath" >/dev/null 2>&1
> + rc=$?
> + case $rc in
> + 0) echo "PASS: $tname"; PASS=$((PASS + 1)) ;;
> + 77) echo "SKIP: $tname"; SKIP=$((SKIP + 1)) ;;
> + *) echo "FAIL: $tname"; FAIL=$((FAIL + 1)) ;;
> + esac
> +}
> +
> +# Skip run-ptest (self), commandhelper and qemucapsprobe are middleware
> +# used by other test cases, not test cases themselves.
> +for t in $(find ${PTEST_DIR} -maxdepth 1 -type f -executable ! -name "*.so" ! -name "run-ptest" ! -name "commandhelper" ! -name "qemucapsprobe"); do
> + run_test "$(basename $t)" "$t"
> +done
> +
> +# Summary
> +echo ""
> +echo "=== Test Summary ==="
> +echo "PASS: $PASS"
> +echo "FAIL: $FAIL"
> +echo "SKIP: $SKIP"
> +echo "TOTAL: $((PASS + FAIL + SKIP))"
> diff --git a/recipes-extended/libvirt/libvirt_git.bb b/recipes-extended/libvirt/libvirt_git.bb
> index 34a1ff21..d1d957cc 100644
> --- a/recipes-extended/libvirt/libvirt_git.bb
> +++ b/recipes-extended/libvirt/libvirt_git.bb
> @@ -34,17 +34,16 @@ PV = "v${LIBVIRT_VERSION}+git"
> SRC_URI = "gitsm://github.com/libvirt/libvirt.git;name=libvirt;protocol=https;branch=master \
> file://libvirtd.sh \
> file://libvirtd.conf \
> + file://run-ptest \
> file://dnsmasq.conf \
> file://hook_support.py \
> file://gnutls-helper.py;subdir=${BP} \
> file://libvirt-qemu.conf \
> file://0001-prevent-gendispatch.pl-generating-build-path-in-code.patch \
> - file://0001-messon.build-remove-build-path-information-to-avoid-.patch \
> - file://0001-tests-meson-clear-absolute-directory-paths.patch \
> file://0001-qemu_nbdkit.c-use-llu-to-print-time_t.patch \
> "
>
> -inherit meson gettext update-rc.d pkgconfig systemd useradd perlnative
> +inherit meson gettext update-rc.d pkgconfig systemd useradd perlnative ptest
> USERADD_PACKAGES = "${PN}"
> GROUPADD_PARAM:${PN} = "-r qemu; -r kvm; -r libvirt; -r virtlogin"
> USERADD_PARAM:${PN} = "-r -g qemu -G kvm qemu"
> @@ -188,6 +187,46 @@ CVE_STATUS[CVE-2023-3750] = "fixed-version: Fixed in 9.6.0, NVD tracks this as v
> # Enable the Python tool support
> require libvirt-python.inc
>
> +do_configure:prepend() {
> + sed -i \
> + -e "s|meson.current_build_dir()|'${PTEST_PATH}/tests'|g" \
> + -e "s|meson.project_build_root()|'${PTEST_PATH}'|g" \
> + -e "s|meson.current_source_dir()|'${PTEST_PATH}/datas/tests'|g" \
> + -e "s|meson.project_source_root()|'${PTEST_PATH}/datas'|g" \
> + ${S}/tests/meson.build ${S}/scripts/rpcgen/tests/meson.build ${S}/tests/schemas/meson.build
> +}
> +
> +# Guard abs_top_builddir/abs_top_srcdir defines with #ifndef to avoid
> +# -Werror redefinition conflict when tests pass them via -D compile flags.
> +do_configure:append() {
> + sed -i '/^#define abs_top_builddir/c\#ifndef abs_top_builddir\n#define abs_top_builddir " "\n#endif' ${B}/meson-config.h
> + sed -i '/^#define abs_top_srcdir/c\#ifndef abs_top_srcdir\n#define abs_top_srcdir " "\n#endif' ${B}/meson-config.h
> +}
> +
> +
> +do_install_ptest() {
> + install -d ${D}${PTEST_PATH}/tests
> + install -d ${D}${PTEST_PATH}/datas/tests
> + # The virshtest expects virsh at ${PTEST_PATH}/tests/tools/virsh, but it is
> + # installed to /usr/bin/virsh by libvirt-virsh. Create a symlink to satisfy
> + # the test's expected path.
> + install -d ${D}${PTEST_PATH}/tools
> + ln -sf /usr/bin/virsh ${D}${PTEST_PATH}/tools/virsh
> + find ${B}/tests/ -type f -executable -print -maxdepth 1 | xargs -i cp {} ${D}${PTEST_PATH}/tests -rf
> + cd ${S}/tests && find . -mindepth 1 -maxdepth 1 -type d | xargs -i cp {} ${D}${PTEST_PATH}/datas/tests -a
> + install -m 0755 ${B}/scripts/rpcgen/tests/test_demo ${D}${PTEST_PATH}/tests
> + install -m 0644 ${S}/scripts/rpcgen/tests/*.bin ${D}${PTEST_PATH}/datas/tests
> + install -D -m 0644 -t ${D}${PTEST_PATH}/datas/examples/xml/test/ ${S}/examples/xml/test/*.xml
> + install -D -m 0644 -t ${D}${PTEST_PATH}/datas/examples/xml/storage/ ${S}/examples/xml/storage/*.xml
> + install -D -m 0644 -t ${D}${PTEST_PATH}/datas/src/conf/schemas/ ${S}/src/conf/schemas/*.rng
> + install -D -m 0644 -t ${D}${PTEST_PATH}/datas/src/nwfilter/xml/ ${S}/src/nwfilter/xml/*.xml
> + install -D -m 0644 -t ${D}${PTEST_PATH}/tests/schemas/ ${B}/tests/schemas/*.rng
> + install -m 0644 ${S}/tests/openvzutilstest.conf ${D}${PTEST_PATH}/datas/tests
> + install -d ${D}${PTEST_PATH}/datas/src/network
> +}
> +
> +RDEPENDS:${PN}-ptest += " ${PN}-virsh"
> +
> do_compile() {
> cd ${B}/src
> # There may be race condition, but without creating these directories
prev parent reply other threads:[~2026-06-12 18:48 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-29 2:39 [meta-virtualization][PATCH] libvirt: re-add ptest support for meson build system Haitao Liu
2026-06-12 18:48 ` Bruce Ashfield [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=6a2c5462.f542fed9.183ec6.cc90@mx.google.com \
--to=bruce.ashfield@gmail.com \
--cc=haitao.liu@windriver.com \
--cc=meta-virtualization@lists.yoctoproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.