diff mbox series

insane: add test for recipe naming/class mismatches

Message ID 20250605201151.2019194-1-ross.burton@arm.com
State New
Headers show
Series insane: add test for recipe naming/class mismatches | expand

Commit Message

Ross Burton June 5, 2025, 8:11 p.m. UTC
It's not unheard of for new users to create a recipe called foo-native
that has BBCLASSEXTEND="native" instead of "inherit native". This will
result in a foo-native recipe that is actually a target recipe, and a
foo-native-native recipe for native builds.

Add a test in recipe_qa to verify that recipes called -native inherit
native, and recipes called nativesdk- inherit nativesdk.

As this behaviour is expected, add the new test to the set of tests
required to pass for Yocto Project Compatible status.

Signed-off-by: Ross Burton <ross.burton@arm.com>
---
 meta/classes-global/insane.bbclass | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

Comments

Quentin Schulz June 6, 2025, 2:32 p.m. UTC | #1
Hi Ross,

On 6/5/25 10:11 PM, Ross Burton via lists.openembedded.org wrote:
> It's not unheard of for new users to create a recipe called foo-native
> that has BBCLASSEXTEND="native" instead of "inherit native". This will
> result in a foo-native recipe that is actually a target recipe, and a
> foo-native-native recipe for native builds.
> 
> Add a test in recipe_qa to verify that recipes called -native inherit
> native, and recipes called nativesdk- inherit nativesdk.
> 
> As this behaviour is expected, add the new test to the set of tests
> required to pass for Yocto Project Compatible status.
> 

Once this gets merged, would you mind sending a patch for yocto-docs 
that adds it to documentation/ref-manual/classes.rst ("insane" class 
description)?

Thanks!
Quentin
diff mbox series

Patch

diff --git a/meta/classes-global/insane.bbclass b/meta/classes-global/insane.bbclass
index 152bef8ad58..eb8591f6242 100644
--- a/meta/classes-global/insane.bbclass
+++ b/meta/classes-global/insane.bbclass
@@ -32,7 +32,7 @@  CHECKLAYER_REQUIRED_TESTS = "\
     invalid-packageconfig la \
     license-checksum license-exception license-exists license-file-missing license-format license-no-generic license-syntax \
     mime mime-xdg missing-update-alternatives multilib obsolete-license \
-    packages-list patch-fuzz patch-status perllocalpod perm-config perm-line perm-link \
+    packages-list patch-fuzz patch-status perllocalpod perm-config perm-line perm-link recipe-naming \
     pkgconfig pkgvarcheck pkgv-undefined pn-overrides shebang-size src-uri-bad symlink-to-sysroot \
     unhandled-features-check unknown-configure-option unlisted-pkg-lics uppercase-pn useless-rpaths \
     var-undefined virtual-slash xorg-driver-abi"
@@ -1438,6 +1438,12 @@  python do_qa_unpack() {
 python do_recipe_qa() {
     import re
 
+    def test_naming(pn, d):
+        if pn.endswith("-native") and not bb.data.inherits_class("native", d):
+            oe.qa.handle_error("recipe-naming", "Recipe %s appears native but is not, should inherit native" % pn, d)
+        if pn.startswith("nativesdk-") and not bb.data.inherits_class("nativesdk", d):
+            oe.qa.handle_error("recipe-naming", "Recipe %s appears nativesdk but is not, should inherit nativesdk" % pn, d)
+
     def test_missing_metadata(pn, d):
         fn = d.getVar("FILE")
         srcfile = d.getVar('SRC_URI').split()
@@ -1482,6 +1488,7 @@  python do_recipe_qa() {
                 oe.qa.handle_error("invalid-packageconfig", error_msg, d)
 
     pn = d.getVar('PN')
+    test_naming(pn, d)
     test_missing_metadata(pn, d)
     test_missing_maintainer(pn, d)
     test_srcuri(pn, d)