]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
selftest: Test installation of recipes with complex packaging
authorPaul Barker <paul@pbarker.dev>
Tue, 10 Feb 2026 08:07:57 +0000 (08:07 +0000)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Thu, 12 Feb 2026 10:28:18 +0000 (10:28 +0000)
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 <paul@pbarker.dev>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/lib/oeqa/selftest/cases/install.py [new file with mode: 0644]

diff --git a/meta/lib/oeqa/selftest/cases/install.py b/meta/lib/oeqa/selftest/cases/install.py
new file mode 100644 (file)
index 0000000..06ce5fd
--- /dev/null
@@ -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")