ptest support for systemd was dropped in 2018 (commit 906230a73b3c) when the 
recipe switched to meson, as there was no easy way to install and run the test 
suite. Current systemd and meson resolve this: the meson 'install-tests' option 
installs the unit-test binaries and a run-unit-tests.py runner under 
${prefix}/lib/systemd/tests, and run-unit-tests.py already emits PASS:/SKIP: 
results per test.

Add a 'tests' PACKAGECONFIG gated on PTEST_ENABLED that sets -Dtests and 
-Dinstall-tests and pulls in python3-pefile-native (needed to build the boot 
hwids test). do_install_ptest relocates the installed tests into ${PTEST_PATH} 
and drops the mkosi/integration-tests harness (which needs a booted system). A 
run-ptest wrapper drives run-unit-tests.py, and systemd is registered in 
ptest-packagelists.inc.

The test/units integration tests, which require a booted system, are out of 
scope here and can be addressed separately.

Verified on oe-core master (261.2, qemux86-64): with ptest enabled, 342 
unit-test binaries plus run-unit-tests.py install into ${PTEST_PATH} and 
systemd-ptest packages cleanly with no QA errors.

[YOCTO #16386]

Signed-off-by: Himani Ramesh Barde <[email protected]>
---
v2:
- Gate tests via a PACKAGECONFIG on PTEST_ENABLED (Jose Quaresma).
- Drop the redundant copy; relocate installed tests into ${PTEST_PATH}
  (Jose Quaresma).
- Register systemd in ptest-packagelists.inc, fixing the missing-ptest QA
  error seen on the autobuilder (Khem Raj, Richard Purdie).
- Add python3-pefile-native dependency (fixes boot hwids test build failure).
- Exclude the mkosi/integration-test harness from the ptest package.
 .../distro/include/ptest-packagelists.inc     |  1 +
 meta/recipes-core/systemd/systemd/run-ptest   | 11 ++++++++++
 meta/recipes-core/systemd/systemd_261.2.bb    | 21 ++++++++++++++++++-
 3 files changed, 32 insertions(+), 1 deletion(-)
 create mode 100755 meta/recipes-core/systemd/systemd/run-ptest

diff --git a/meta/conf/distro/include/ptest-packagelists.inc 
b/meta/conf/distro/include/ptest-packagelists.inc
index ce6c0a2d76..4697843555 100644
--- a/meta/conf/distro/include/ptest-packagelists.inc
+++ b/meta/conf/distro/include/ptest-packagelists.inc
@@ -146,6 +146,7 @@ PTESTS_SLOW = "\
     python3-numpy \
     python3-xmltodict \
     strace \
+    systemd \
     tar \
     tcl \
     tcl8 \
diff --git a/meta/recipes-core/systemd/systemd/run-ptest 
b/meta/recipes-core/systemd/systemd/run-ptest
new file mode 100755
index 0000000000..b2204b96d4
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/run-ptest
@@ -0,0 +1,11 @@
+#!/bin/sh
+# Run systemd's installed meson unit tests in ptest format.
+# systemd's -Dinstall-tests=true installs run-unit-tests.py plus the
+# unit-tests/test-* binaries; run-unit-tests.py already emits PASS:/SKIP: 
lines.
+set -u
+here="$(cd "$(dirname "$0")" && pwd)"
+for cand in "$here/run-unit-tests.py" "$here/tests/run-unit-tests.py" 
/usr/lib/systemd/tests/run-unit-tests.py; do
+    [ -f "$cand" ] && { python3 "$cand" 2>&1; exit 0; }
+done
+echo "FAIL: systemd-ptest (run-unit-tests.py not found)"
+exit 1
diff --git a/meta/recipes-core/systemd/systemd_261.2.bb 
b/meta/recipes-core/systemd/systemd_261.2.bb
index 80e1aa07d1..3e04bd803c 100644
--- a/meta/recipes-core/systemd/systemd_261.2.bb
+++ b/meta/recipes-core/systemd/systemd_261.2.bb
@@ -9,7 +9,7 @@ DEPENDS:append:libc-musl = " libucontext"
 
 SECTION = "base/shell"
 
-inherit useradd pkgconfig meson perlnative update-rc.d update-alternatives 
systemd gettext bash-completion manpages features_check mime
+inherit useradd pkgconfig meson perlnative update-rc.d update-alternatives 
systemd gettext bash-completion manpages features_check mime ptest
 
 # unmerged-usr support is deprecated upstream, taints the system and will be
 # removed in the near future. Fail the build if it is not enabled.
@@ -37,6 +37,7 @@ SRC_URI += " \
            file://systemd-pager.sh \
            
file://0001-binfmt-Don-t-install-dependency-links-at-install-tim.patch \
            file://0003-Do-not-create-var-log-README.patch \
+file://run-ptest \
            "
 
 PAM_PLUGINS = " \
@@ -937,3 +938,21 @@ python do_warn_musl() {
         bb.warn("Using systemd with musl is experimental, see 
https://github.com/systemd/systemd/blob/9ca4334/NEWS#L524 for details")
 }
 addtask warn_musl before do_configure
+
+# ptest support. systemd's meson 'install-tests' option installs the unit-test
+# binaries and run-unit-tests.py under ${prefix}/lib/systemd/tests. Gate it on
+# ptest being enabled and package the installed tree. [YOCTO #16386]
+PACKAGECONFIG[tests] = "-Dtests=unsafe -Dinstall-tests=true,-Dtests=false 
-Dinstall-tests=false,python3-pefile-native"
+PACKAGECONFIG:append = " ${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', 
'', d)}"
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}
+    if [ -d ${D}${prefix}/lib/systemd/tests ]; then
+        mv ${D}${prefix}/lib/systemd/tests/* ${D}${PTEST_PATH}/
+        rm -rf ${D}${prefix}/lib/systemd/tests
+    fi
+    rm -rf ${D}${PTEST_PATH}/mkosi ${D}${PTEST_PATH}/integration-tests
+}
+
+RDEPENDS:${PN}-ptest += "python3-core bash"
+INSANE_SKIP:${PN}-ptest += "dev-deps debug-files"
-- 
2.54.0

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#245244): 
https://lists.openembedded.org/g/openembedded-core/message/245244
Mute This Topic: https://lists.openembedded.org/mt/121126408/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to