summaryrefslogtreecommitdiffstats
path: root/meta/classes/yocto-check-layer.bbclass
diff options
context:
space:
mode:
authorDenys Dmytriyenko <denis@denix.org>2022-01-31 22:16:42 -0500
committerRichard Purdie <richard.purdie@linuxfoundation.org>2022-02-21 21:53:54 +0000
commite8baa75535fc888f1d768b23a0140475e832c910 (patch)
treec79c4adefea143782e8b7065fdbfbf7fd33eb85d /meta/classes/yocto-check-layer.bbclass
parentbcb21ee2760a2c76039412a56c6cda43fbf96fd0 (diff)
downloadopenembedded-core-contrib-e8baa75535fc888f1d768b23a0140475e832c910.tar.gz
yocto-check-layer: add ability to perform tests from a global bbclass
This is useful when needing to test layer's recipes, where this special bbclass can define a global python function that gets called on each recipe parsing during "bitbake -S none world" signature dump and be able to fail layer's check accordingly. First test being added is to detect recipes skipping "installed-vs-shipped" QA check. As "installed-vs-shipped" is a packaging QA check, it happens very late in the build process and failing it could mean some potential issues with packaging, especially when recipe uses BBCLASSEXTEND="nativesdk" and resulting package is used in an SDK. In OE-Core failing this QA check leads to an error, but other layers can suppress it or change it to a warning. Detecting weird packaging problems with SDKs is quite difficult and time consuming. Also, waiting for the actual "installed-vs-shipped" packaging QA check to fail means that all recipes in the layer under test have to run through all standard tasks in the build chain, equivalent to a multi-hour world-build. Hence yocto-check-layer takes a shortcut and only detects a mere attempt at skipping "installed-vs-shipped" QA check in the INSANE_SKIP list during initial parsing when dumping the signature information for the layer. Signed-off-by: Denys Dmytriyenko <denis@denix.org> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes/yocto-check-layer.bbclass')
-rw-r--r--meta/classes/yocto-check-layer.bbclass16
1 files changed, 16 insertions, 0 deletions
diff --git a/meta/classes/yocto-check-layer.bbclass b/meta/classes/yocto-check-layer.bbclass
new file mode 100644
index 0000000000..329d3f8edb
--- /dev/null
+++ b/meta/classes/yocto-check-layer.bbclass
@@ -0,0 +1,16 @@
+#
+# This class is used by yocto-check-layer script for additional per-recipe tests
+# The first test ensures that the layer has no recipes skipping 'installed-vs-shipped' QA checks
+#
+
+WARN_QA:remove = "installed-vs-shipped"
+ERROR_QA:append = " installed-vs-shipped"
+
+python () {
+ packages = set((d.getVar('PACKAGES') or '').split())
+ for package in packages:
+ skip = set((d.getVar('INSANE_SKIP') or "").split() +
+ (d.getVar('INSANE_SKIP:' + package) or "").split())
+ if 'installed-vs-shipped' in skip:
+ oe.qa.handle_error("installed-vs-shipped", 'Package %s is skipping "installed-vs-shipped" QA test.' % package, d)
+}