From: Alexandre Belloni <alexandre.belloni@bootlin.com>
To: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Cc: openembedded-core@lists.openembedded.org
Subject: Re: [OE-core] [PATCHv2 2/2] oeqa/selftest/bbclasses: Add tests for systemd and update-rc.d interaction
Date: Sat, 24 Aug 2024 14:54:54 +0200 [thread overview]
Message-ID: <202408241254541c6af4cb@mail.local> (raw)
In-Reply-To: <20240823170633.2776886-2-pkj@axis.com>
Hello,
This causes the following failures on the AB:
https://autobuilder.yoctoproject.org/typhoon/#/builders/131/builds/4746/steps/14/logs/stdio
https://autobuilder.yoctoproject.org/typhoon/#/builders/102/builds/6435/steps/15/logs/stdio
https://autobuilder.yoctoproject.org/typhoon/#/builders/107/builds/6486/steps/14/logs/stdio
https://autobuilder.yoctoproject.org/typhoon/#/builders/109/builds/8223/steps/15/logs/stdio
https://autobuilder.yoctoproject.org/typhoon/#/builders/101/builds/8110/steps/14/logs/stdio
Traceback (most recent call last):
File "/home/pokybuild/yocto-worker/qemux86-alt/build/meta/lib/oeqa/core/decorator/__init__.py", line 35, in wrapped_f
return func(*args, **kwargs)
File "/home/pokybuild/yocto-worker/qemux86-alt/build/meta/lib/oeqa/core/decorator/__init__.py", line 35, in wrapped_f
return func(*args, **kwargs)
File "/home/pokybuild/yocto-worker/qemux86-alt/build/meta/lib/oeqa/core/decorator/__init__.py", line 35, in wrapped_f
return func(*args, **kwargs)
[Previous line repeated 1 more time]
File "/home/pokybuild/yocto-worker/qemux86-alt/build/meta/lib/oeqa/runtime/cases/opkg.py", line 59, in test_opkg_install_from_repo
self.pkg('install run-postinsts-dev')
File "/home/pokybuild/yocto-worker/qemux86-alt/build/meta/lib/oeqa/runtime/cases/opkg.py", line 19, in pkg
self.assertEqual(status, expected, message)
AssertionError: 255 != 0 : opkg install run-postinsts-dev
Synchronizing state of run-postinsts.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable run-postinsts
Failed to execute /usr/lib/systemd/systemd-sysv-install: No such file or directory
error: pkg_run_script: package "run-postinsts" postinst script returned status 1.
error: opkg_configure: run-postinsts.postinst returned 1.
On 23/08/2024 19:06:33+0200, Peter Kjellerstedt wrote:
> These tests verify that the correct files are left behind when systemd
> is inherited and depending on whether the systemd and/or sysvinit distro
> features are enabled.
>
> Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
> ---
>
> PATCHv2:
> * Change LICENSE to MIT for the test recipes.
> * Add EXCLUDE_FROM_WORLD to the test recipes.
>
> .../bbclasses/systemd-and-sysvinit.bb | 17 +++
> .../recipes-test/bbclasses/systemd-only.bb | 12 ++
> meta/lib/oeqa/selftest/cases/bbclasses.py | 106 ++++++++++++++++++
> 3 files changed, 135 insertions(+)
> create mode 100644 meta-selftest/recipes-test/bbclasses/systemd-and-sysvinit.bb
> create mode 100644 meta-selftest/recipes-test/bbclasses/systemd-only.bb
> create mode 100644 meta/lib/oeqa/selftest/cases/bbclasses.py
>
> diff --git a/meta-selftest/recipes-test/bbclasses/systemd-and-sysvinit.bb b/meta-selftest/recipes-test/bbclasses/systemd-and-sysvinit.bb
> new file mode 100644
> index 0000000000..f9fc59a494
> --- /dev/null
> +++ b/meta-selftest/recipes-test/bbclasses/systemd-and-sysvinit.bb
> @@ -0,0 +1,17 @@
> +LICENSE = "MIT"
> +
> +inherit allarch systemd update-rc.d
> +
> +do_install() {
> + install -d ${D}${systemd_system_unitdir}
> + touch ${D}${systemd_system_unitdir}/${BPN}.service
> +
> + install -d ${D}${INIT_D_DIR}
> + touch ${D}${INIT_D_DIR}/${BPN}
> +}
> +
> +INITSCRIPT_NAME = "${BPN}"
> +
> +SYSTEMD_SERVICE:${PN} = "${BPN}.service"
> +
> +EXCLUDE_FROM_WORLD="1"
> diff --git a/meta-selftest/recipes-test/bbclasses/systemd-only.bb b/meta-selftest/recipes-test/bbclasses/systemd-only.bb
> new file mode 100644
> index 0000000000..590a27b9cb
> --- /dev/null
> +++ b/meta-selftest/recipes-test/bbclasses/systemd-only.bb
> @@ -0,0 +1,12 @@
> +LICENSE = "MIT"
> +
> +inherit allarch systemd
> +
> +do_install() {
> + install -d ${D}${systemd_system_unitdir}
> + touch ${D}${systemd_system_unitdir}/${BPN}.service
> +}
> +
> +SYSTEMD_SERVICE:${PN} = "${BPN}.service"
> +
> +EXCLUDE_FROM_WORLD="1"
> diff --git a/meta/lib/oeqa/selftest/cases/bbclasses.py b/meta/lib/oeqa/selftest/cases/bbclasses.py
> new file mode 100644
> index 0000000000..10545ebe65
> --- /dev/null
> +++ b/meta/lib/oeqa/selftest/cases/bbclasses.py
> @@ -0,0 +1,106 @@
> +#
> +# Copyright OpenEmbedded Contributors
> +#
> +# SPDX-License-Identifier: MIT
> +#
> +
> +from oeqa.selftest.case import OESelftestTestCase
> +from oeqa.utils.commands import get_bb_vars, bitbake
> +
> +class Systemd(OESelftestTestCase):
> + """
> + Tests related to the systemd bbclass.
> + """
> +
> + def getVars(self, recipe):
> + self.bb_vars = get_bb_vars(
> + [
> + 'BPN',
> + 'D',
> + 'INIT_D_DIR',
> + 'prefix',
> + 'systemd_system_unitdir',
> + 'sysconfdir',
> + ],
> + recipe,
> + )
> +
> + def fileExists(self, filename):
> + self.assertExists(filename.format(**self.bb_vars))
> +
> + def fileNotExists(self, filename):
> + self.assertNotExists(filename.format(**self.bb_vars))
> +
> + def test_systemd_in_distro(self):
> + """
> + Summary: Verify that no sysvinit files are installed when the
> + systemd distro feature is enabled, but sysvinit is not.
> + Expected: Systemd service file exists, but /etc does not.
> + Product: OE-Core
> + Author: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
> + """
> +
> + self.write_config("""
> +DISTRO_FEATURES:append = " systemd usrmerge"
> +DISTRO_FEATURES:remove = "sysvinit"
> +VIRTUAL-RUNTIME_init_manager = "systemd"
> +""")
> + bitbake("systemd-only systemd-and-sysvinit -c install")
> +
> + self.getVars("systemd-only")
> + self.fileExists("{D}{systemd_system_unitdir}/{BPN}.service")
> +
> + self.getVars("systemd-and-sysvinit")
> + self.fileExists("{D}{systemd_system_unitdir}/{BPN}.service")
> + self.fileNotExists("{D}{sysconfdir}")
> +
> + def test_systemd_and_sysvinit_in_distro(self):
> + """
> + Summary: Verify that both systemd and sysvinit files are installed
> + when both the systemd and sysvinit distro features are
> + enabled.
> + Expected: Systemd service file and sysvinit initscript exist.
> + Product: OE-Core
> + Author: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
> + """
> +
> + self.write_config("""
> +DISTRO_FEATURES:append = " systemd sysvinit usrmerge"
> +VIRTUAL-RUNTIME_init_manager = "systemd"
> +""")
> + bitbake("systemd-only systemd-and-sysvinit -c install")
> +
> + self.getVars("systemd-only")
> + self.fileExists("{D}{systemd_system_unitdir}/{BPN}.service")
> +
> + self.getVars("systemd-and-sysvinit")
> + self.fileExists("{D}{systemd_system_unitdir}/{BPN}.service")
> + self.fileExists("{D}{INIT_D_DIR}/{BPN}")
> +
> + def test_sysvinit_in_distro(self):
> + """
> + Summary: Verify that no systemd service files are installed when the
> + sysvinit distro feature is enabled, but systemd is not.
> + Expected: The systemd service file does not exist, nor does /usr.
> + The sysvinit initscript exists.
> + Product: OE-Core
> + Author: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
> + """
> +
> + self.write_config("""
> +DISTRO_FEATURES:remove = "systemd"
> +DISTRO_FEATURES:append = " sysvinit usrmerge"
> +VIRTUAL-RUNTIME_init_manager = "sysvinit"
> +""")
> + bitbake("systemd-only systemd-and-sysvinit -c install")
> +
> + self.getVars("systemd-only")
> + self.fileNotExists("{D}{systemd_system_unitdir}/{BPN}.service")
> + self.fileNotExists("{D}{prefix}")
> + self.fileNotExists("{D}{sysconfdir}")
> + self.fileExists("{D}")
> +
> + self.getVars("systemd-and-sysvinit")
> + self.fileNotExists("{D}{systemd_system_unitdir}/{BPN}.service")
> + self.fileNotExists("{D}{prefix}")
> + self.fileExists("{D}{INIT_D_DIR}/{BPN}")
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#203702): https://lists.openembedded.org/g/openembedded-core/message/203702
> Mute This Topic: https://lists.openembedded.org/mt/108059587/3617179
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alexandre.belloni@bootlin.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
--
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
next prev parent reply other threads:[~2024-08-24 12:55 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-23 17:06 [PATCHv2 1/2] systemd.bbclass: Clean up empty parent directories Peter Kjellerstedt
2024-08-23 17:06 ` [PATCHv2 2/2] oeqa/selftest/bbclasses: Add tests for systemd and update-rc.d interaction Peter Kjellerstedt
2024-08-24 12:54 ` Alexandre Belloni [this message]
2024-08-24 23:49 ` [OE-core] " Peter Kjellerstedt
-- strict thread matches above, loose matches on Subject: below --
2024-08-20 22:31 [PATCHv2 1/2] systemd.bbclass: Clean up empty parent directories Peter Kjellerstedt
2024-08-20 22:31 ` [PATCHv2 2/2] oeqa/selftest/bbclasses: Add tests for systemd and update-rc.d interaction Peter Kjellerstedt
2024-08-22 10:07 ` [OE-core] " Richard Purdie
[not found] ` <17EE05117ACE9BE7.29141@lists.openembedded.org>
2024-08-22 10:10 ` Richard Purdie
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=202408241254541c6af4cb@mail.local \
--to=alexandre.belloni@bootlin.com \
--cc=openembedded-core@lists.openembedded.org \
--cc=peter.kjellerstedt@axis.com \
/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.