summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYoann Congal <yoann.congal@smile.fr>2023-09-28 23:56:39 +0200
committerLuca Ceresoli <luca.ceresoli@bootlin.com>2023-10-27 19:09:14 +0200
commit6e8ce1d617d09bbb45edef64dc8c3abb7ef93173 (patch)
tree482e98c827fe21a2dd96fe4fb8bbd296ec6a9d5e
parent2e2625735181160e9760a6f3af4955bda2ea6d4d (diff)
downloadopenembedded-core-contrib-6e8ce1d617d09bbb45edef64dc8c3abb7ef93173.tar.gz
insane: Add QA check for RRECOMMENDS on non-existent packages
Add a package QA check for when a package RRECOMMENDS another that won't be built because it is empty and ALLOW_EMPTY is not set. This happens usually when ${PN}-dev RRECOMMENDS ${PN} but ${PN} is empty. This is not an error but might be something to look into. Example of a generated warning: WARNING: python3-3.11.2-r0 do_package_qa: QA Issue: python3-dev -> python3 but won't be build [rrecommends-non-existent] Note: This QA check is voluntarily not enabled by default. This will make bugs [YOCTO #8222] and [YOCTO #6839] appear in the QA logs. Co-authored-by: Fawzi Khaber <fawzi.khaber@smile.fr> Signed-off-by: Yoann Congal <yoann.congal@smile.fr> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
-rw-r--r--meta/classes-global/insane.bbclass11
1 files changed, 11 insertions, 0 deletions
diff --git a/meta/classes-global/insane.bbclass b/meta/classes-global/insane.bbclass
index ecc868a4e0..307a09d115 100644
--- a/meta/classes-global/insane.bbclass
+++ b/meta/classes-global/insane.bbclass
@@ -1092,6 +1092,17 @@ def package_qa_check_empty_dirs(pkg, d, messages):
msg = "%s installs files in %s, %s" % (pkg, dir, recommendation)
oe.qa.add_message(messages, "empty-dirs", msg)
+QAPKGTEST[rrecommends-non-existent] = "package_qa_check_rrecommends_non_existent"
+def package_qa_check_rrecommends_non_existent(pkg, d, messages):
+ pkg_data = oe.packagedata.read_subpkgdata_dict(pkg, d)
+ rrecommends = bb.utils.explode_dep_versions2(pkg_data.get("RRECOMMENDS", ""))
+ for rrecommend in rrecommends:
+ rrec_data = oe.packagedata.read_subpkgdata_dict(rrecommend, d)
+ if (rrecommend in (d.getVar("PACKAGES") or "").split()
+ and rrec_data["FILES_INFO"] == "{}"
+ and not bb.utils.to_boolean(rrec_data.get("ALLOW_EMPTY", "0"), False)):
+ oe.qa.add_message(messages, "rrecommends-non-existent", "{0} rrecommends {1} but {1} won't be built".format(pkg, rrecommend))
+
def package_qa_check_encoding(keys, encode, d):
def check_encoding(key, enc):
sane = True