From: Paul Barker Date: Tue, 10 Feb 2026 08:07:57 +0000 (+0000) Subject: selftest: Test installation of recipes with complex packaging X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6f3aab6bfa754ecaeee0acc013cb6be1f07c1ec0;p=thirdparty%2Fopenembedded%2Fopenembedded-core-contrib.git selftest: Test installation of recipes with complex packaging When recipes have complex and dynamic packaging, it's easy to accidentally end up with one or more packages that build but can't be installed. We've seen this recently with linux-firmware [1]. Skimming through the recipes that set PACKAGESPLITFUNCS or PACKAGES_DYNAMIC or are otherwise known offenders, I've also picked out gstreamer1.0-plugins-*, kernel-modules, perl and python3 as recipes where it would be easy to end up with similar issues in the future. [1]: https://lore.kernel.org/openembedded-core/20260123163305.880111-1-dmitry.baryshkov@oss.qualcomm.com/ Signed-off-by: Paul Barker Signed-off-by: Mathieu Dubois-Briand Signed-off-by: Ross Burton Signed-off-by: Richard Purdie --- diff --git a/meta/lib/oeqa/selftest/cases/install.py b/meta/lib/oeqa/selftest/cases/install.py new file mode 100644 index 0000000000..06ce5fd3b5 --- /dev/null +++ b/meta/lib/oeqa/selftest/cases/install.py @@ -0,0 +1,37 @@ +# +# Copyright OpenEmbedded Contributors +# +# SPDX-License-Identifier: MIT +# + +from oeqa.selftest.case import OESelftestTestCase +from oeqa.utils.commands import bitbake + +class InstallTests(OESelftestTestCase): + """Test installability of recipes which use complex dynamic packaging""" + + def do_installation_test(self, packages, extra_config=""): + self.write_config('CORE_IMAGE_EXTRA_INSTALL = "{}"\n{}'.format(packages, extra_config)) + bitbake("core-image-minimal") + + def test_gstreamer_plugins(self): + """Ensure that all gstreamer plugins can be installed together""" + self.do_installation_test("gstreamer1.0-plugins-base gstreamer1.0-plugins-good \ + gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly", + extra_config='LICENSE_FLAGS_ACCEPTED += "commercial"') + + def test_linux_firmware(self): + """Ensure that all linux-firmware packages can be installed together""" + self.do_installation_test("linux-firmware") + + def test_linux_modules(self): + """Ensure that all in-tree kernel modules can be installed together""" + self.do_installation_test("kernel-modules") + + def test_perl(self): + """Ensure that all built-in perl modules can be installed together""" + self.do_installation_test("perl perl-modules") + + def test_python(self): + """Ensure that all built-in python modules can be installed together""" + self.do_installation_test("python3 python3-modules python3-misc")