diff mbox series

systemd: re-enable ptest support

Message ID 20260904080004.2501262-1-HimaniRamesh.Barde@windriver.com
State New
Headers show
Series systemd: re-enable ptest support | expand

Commit Message

Himani Ramesh Barde Sept. 4, 2026, 8 a.m. UTC
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.

Enable install-tests, package the installed tree into systemd-ptest, and add a run-ptest wrapper that drives run-unit-tests.py. This provides ptest coverage for the systemd:test and libsystemd meson unit-test suites.

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

Verified on systemd 257.6: -Dinstall-tests=true installs 313 test-* unit-test binaries plus run-unit-tests.py; systemd-ptest packages cleanly. The recipe change parses without error against oe-core master (261.2).

[YOCTO #16386]

Signed-off-by: Himani Ramesh Barde <HimaniRamesh.Barde@windriver.com>
---
 meta/recipes-core/systemd/systemd/run-ptest | 11 +++++++++++
 meta/recipes-core/systemd/systemd_261.2.bb  | 18 +++++++++++++++++-
 2 files changed, 28 insertions(+), 1 deletion(-)
 create mode 100755 meta/recipes-core/systemd/systemd/run-ptest

Comments

Richard Purdie Sept. 4, 2026, 4:34 p.m. UTC | #1
On Fri, 2026-09-04 at 08:00 +0000, Himani Ramesh Barde via lists.openembedded.org wrote:
> 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.
> 
> Enable install-tests, package the installed tree into systemd-ptest,
> and add a run-ptest wrapper that drives run-unit-tests.py. This
> provides ptest coverage for the systemd:test and libsystemd meson
> unit-test suites.
> 
> The test/units integration tests, which require a booted system, are
> out of scope here and can be addressed separately.
> 
> Verified on systemd 257.6: -Dinstall-tests=true installs 313 test-*
> unit-test binaries plus run-unit-tests.py; systemd-ptest packages
> cleanly. The recipe change parses without error against oe-core
> master (261.2).
> 
> [YOCTO #16386]
> 
> Signed-off-by: Himani Ramesh Barde <HimaniRamesh.Barde@windriver.com>
> ---
>  meta/recipes-core/systemd/systemd/run-ptest | 11 +++++++++++
>  meta/recipes-core/systemd/systemd_261.2.bb  | 18 +++++++++++++++++-
>  2 files changed, 28 insertions(+), 1 deletion(-)
>  create mode 100755 meta/recipes-core/systemd/systemd/run-ptest

First issue found in test:

https://autobuilder.yoctoproject.org/valkyrie/#/builders/10/builds/4554

Cheers,

Richard
Khem Raj Sept. 4, 2026, 4:42 p.m. UTC | #2
with master-next I am seeing

ERROR: systemd-1_261.2-r0 do_package_qa: QA Issue: supports ptests but is
not included in oe-core's ptest-packagelists.inc [missing-ptest]
ERROR: systemd-1_261.2-r0 do_package_qa: Fatal QA errors were found,
failing task.

perhaps due to the same patch ?

On Fri, Sep 4, 2026 at 9:35 AM Richard Purdie via lists.openembedded.org
<richard.purdie=linuxfoundation.org@lists.openembedded.org> wrote:

> On Fri, 2026-09-04 at 08:00 +0000, Himani Ramesh Barde via
> lists.openembedded.org wrote:
> > 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.
> >
> > Enable install-tests, package the installed tree into systemd-ptest,
> > and add a run-ptest wrapper that drives run-unit-tests.py. This
> > provides ptest coverage for the systemd:test and libsystemd meson
> > unit-test suites.
> >
> > The test/units integration tests, which require a booted system, are
> > out of scope here and can be addressed separately.
> >
> > Verified on systemd 257.6: -Dinstall-tests=true installs 313 test-*
> > unit-test binaries plus run-unit-tests.py; systemd-ptest packages
> > cleanly. The recipe change parses without error against oe-core
> > master (261.2).
> >
> > [YOCTO #16386]
> >
> > Signed-off-by: Himani Ramesh Barde <HimaniRamesh.Barde@windriver.com>
> > ---
> >  meta/recipes-core/systemd/systemd/run-ptest | 11 +++++++++++
> >  meta/recipes-core/systemd/systemd_261.2.bb  | 18 +++++++++++++++++-
> >  2 files changed, 28 insertions(+), 1 deletion(-)
> >  create mode 100755 meta/recipes-core/systemd/systemd/run-ptest
>
> First issue found in test:
>
> https://autobuilder.yoctoproject.org/valkyrie/#/builders/10/builds/4554
>
> Cheers,
>
> Richard
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#245124):
> https://lists.openembedded.org/g/openembedded-core/message/245124
> Mute This Topic: https://lists.openembedded.org/mt/121086003/1997914
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [
> raj.khem@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
>
Jose Quaresma Sept. 4, 2026, 10:56 p.m. UTC | #3
On Fri, Sep 4, 2026 at 3:01 PM Himani Ramesh Barde via
lists.openembedded.org <HimaniRamesh.Barde=
windriver.com@lists.openembedded.org> wrote:

> 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.
>
> Enable install-tests, package the installed tree into systemd-ptest, and
> add a run-ptest wrapper that drives run-unit-tests.py. This provides ptest
> coverage for the systemd:test and libsystemd meson unit-test suites.
>
> The test/units integration tests, which require a booted system, are out
> of scope here and can be addressed separately.
>
> Verified on systemd 257.6: -Dinstall-tests=true installs 313 test-*
> unit-test binaries plus run-unit-tests.py; systemd-ptest packages cleanly.
> The recipe change parses without error against oe-core master (261.2).
>
> [YOCTO #16386]
>
> Signed-off-by: Himani Ramesh Barde <HimaniRamesh.Barde@windriver.com>
> ---
>  meta/recipes-core/systemd/systemd/run-ptest | 11 +++++++++++
>  meta/recipes-core/systemd/systemd_261.2.bb  | 18 +++++++++++++++++-
>  2 files changed, 28 insertions(+), 1 deletion(-)
>  create mode 100755 meta/recipes-core/systemd/systemd/run-ptest
>
> 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..dfd2b7c0c9 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 \
>

indentation


>             "
>
>  PAM_PLUGINS = " \
> @@ -937,3 +938,18 @@ 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.
> Package them
> +# into systemd-ptest and drive them via run-ptest. [YOCTO #16386]
> +EXTRA_OEMESON:append = " -Dinstall-tests=true"
>

This should go in PACKAGECONFIG and condition to PTEST_ENABLED because
ptest is
not enabled in all builds. Something like
"${@bb.utils.contains('PTEST_ENABLED',
'1', 'tests', '', d)}
and then select it with PACKAGECONFIG[tests] = "-Dinstall-tests=true,
-Dinstall-tests=false"

+
> +do_install_ptest() {
> +    install -d ${D}${PTEST_PATH}
> +    if [ -d ${D}${prefix}/lib/systemd/tests ]; then
> +        cp -r ${D}${prefix}/lib/systemd/tests/* ${D}${PTEST_PATH}/
> +    fi
> +}
>

This part also seems redundant; if you say the tests are installed with
"-Dinstall-tests=true",
it shouldn't be necessary to do this.

Jose


> +
> +RDEPENDS:${PN}-ptest += "${PN} 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 (#245116):
> https://lists.openembedded.org/g/openembedded-core/message/245116
> Mute This Topic: https://lists.openembedded.org/mt/121086003/10043485
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [
> jose.quaresma@oss.qualcomm.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
>
diff mbox series

Patch

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..dfd2b7c0c9 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,18 @@  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. Package them
+# into systemd-ptest and drive them via run-ptest. [YOCTO #16386]
+EXTRA_OEMESON:append = " -Dinstall-tests=true"
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}
+    if [ -d ${D}${prefix}/lib/systemd/tests ]; then
+        cp -r ${D}${prefix}/lib/systemd/tests/* ${D}${PTEST_PATH}/
+    fi
+}
+
+RDEPENDS:${PN}-ptest += "${PN} python3-core bash"
+INSANE_SKIP:${PN}-ptest += "dev-deps debug-files"