From 9c3ba88628853b20fb4c98c99cf3fe8349024016 Mon Sep 17 00:00:00 2001 From: Denys Dmytriyenko Date: Tue, 19 Nov 2024 19:22:42 -0500 Subject: [PATCH] yocto-check-layer: expand to cover all required QA checks insane.bbclass now defines CHECKLAYER_REQUIRED_TESTS list with required QA checks that are becoming mandatory for Yocto Project Compatible layers. Update yocto-check-layer.bbclass in order to catch when packages from such layers try to skip any of the required QA checks. Signed-off-by: Denys Dmytriyenko Signed-off-by: Mathieu Dubois-Briand Signed-off-by: Richard Purdie --- meta/classes-global/yocto-check-layer.bbclass | 28 +++++++++++++++++++ meta/classes/yocto-check-layer.bbclass | 22 --------------- 2 files changed, 28 insertions(+), 22 deletions(-) create mode 100644 meta/classes-global/yocto-check-layer.bbclass delete mode 100644 meta/classes/yocto-check-layer.bbclass diff --git a/meta/classes-global/yocto-check-layer.bbclass b/meta/classes-global/yocto-check-layer.bbclass new file mode 100644 index 00000000000..1cdab49661b --- /dev/null +++ b/meta/classes-global/yocto-check-layer.bbclass @@ -0,0 +1,28 @@ +# +# Copyright OpenEmbedded Contributors +# +# SPDX-License-Identifier: MIT +# + +# +# 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 +# + +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()) + 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") +} diff --git a/meta/classes/yocto-check-layer.bbclass b/meta/classes/yocto-check-layer.bbclass deleted file mode 100644 index 404f5fd9f22..00000000000 --- a/meta/classes/yocto-check-layer.bbclass +++ /dev/null @@ -1,22 +0,0 @@ -# -# Copyright OpenEmbedded Contributors -# -# SPDX-License-Identifier: MIT -# - -# -# 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) -} -- 2.47.3