similarity index 27%
rename from meta/classes/yocto-check-layer.bbclass
rename to meta/classes-global/yocto-check-layer.bbclass
@@ -5,18 +5,24 @@
#
#
-# 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
+# This class is used by yocto-check-layer script to ensure that packages
+# from Yocto Project Compatible layers don't skip required QA checks listed
+# in CHECKLAYER_REQUIRED_TESTS defined by insane.bbclass
+#
+# It adds an anonymous python function with extra processing to all recipes,
+# globally inheriting this class isn't advisable - yocto-check-layer script
+# handles that during its signature dump
#
-
-WARN_QA:remove = "installed-vs-shipped"
-ERROR_QA:append = " installed-vs-shipped"
python () {
+ required_tests = set((d.getVar('CHECKLAYER_REQUIRED_TESTS') or '').split())
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)
+ skip_required = skip & required_tests
+ if skip_required:
+ oe.qa.write_error(" ".join(skip_required), 'Package %s is skipping required QA tests.' % package, d)
+ bb.error("QA Issue: %s [%s]" % ('Package %s is skipping required QA tests.' % package, " ".join(skip_required)))
+ d.setVar("QA_ERRORS_FOUND", "True")
}