Hi Himani,

On Mon, Sep 7, 2026 at 9:09 AM Himani Ramesh Barde <
[email protected]> 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.
>
> 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.
>

Please try to keep the commit message to approximately 72 characters per
line.


>
> [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 \
>

Please fix the indentation.


>             "
>
>  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]
>

I think this comment could be dropped and moved to the commit message.


> +PACKAGECONFIG[tests] = "-Dtests=unsafe -Dinstall-tests=true,-Dtests=false
> -Dinstall-tests=false,python3-pefile-native"
>

Any special reason to not put the PACKAGECONFIG[tests] along with the
others?
https://git.openembedded.org/openembedded-core/tree/meta/recipes-core/systemd/systemd_261.2.bb#n110


> +PACKAGECONFIG:append = " ${@bb.utils.contains('PTEST_ENABLED', '1',
> 'tests', '', d)}"
>

The bb.utils.contains fits better along with the others?
https://git.openembedded.org/openembedded-core/tree/meta/recipes-core/systemd/systemd_261.2.bb#n52

Jose


> +
> +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 (#245247): 
https://lists.openembedded.org/g/openembedded-core/message/245247
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