diff mbox series

selftest: Test installation of recipes with complex packaging

Message ID 20260210-install-tests-v1-1-2c99e3ca1d34@pbarker.dev
State Under Review
Headers show
Series selftest: Test installation of recipes with complex packaging | expand

Commit Message

Paul Barker Feb. 10, 2026, 8:07 a.m. UTC
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>
---
 meta/lib/oeqa/selftest/cases/install.py | 37 +++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)


---
base-commit: 6ce19709f7835ee5cd7915e181f89397975236c8
change-id: 20260210-install-tests-6e506dfd367f

Best regards,
diff mbox series

Patch

diff --git a/meta/lib/oeqa/selftest/cases/install.py b/meta/lib/oeqa/selftest/cases/install.py
new file mode 100644
index 000000000000..06ce5fd3b559
--- /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")