summaryrefslogtreecommitdiffstats
path: root/meta
diff options
context:
space:
mode:
authorAlexander Kanavin <alex.kanavin@gmail.com>2020-01-20 18:24:53 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2020-01-21 12:52:53 +0000
commit9896be8f750ef6a99b3a11e806a0007e19ecabaf (patch)
tree915bb3bb3f2a715276005c76d65e7398475eff3c /meta
parent9d0347f17c2d76e487e14e43715d710967ee222f (diff)
downloadpoky-9896be8f750ef6a99b3a11e806a0007e19ecabaf.tar.gz
selftest: check maintainers.inc for entries without recipes
Also remove a couple of entries found by the test :) (From OE-Core rev: 749f44b3735e4ae3657255b373fa55c357501cc5) Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r--meta/conf/distro/include/maintainers.inc6
-rw-r--r--meta/lib/oeqa/selftest/cases/distrodata.py34
2 files changed, 32 insertions, 8 deletions
diff --git a/meta/conf/distro/include/maintainers.inc b/meta/conf/distro/include/maintainers.inc
index ffb6da7dae..01afc25b93 100644
--- a/meta/conf/distro/include/maintainers.inc
+++ b/meta/conf/distro/include/maintainers.inc
@@ -183,7 +183,6 @@ RECIPE_MAINTAINER_pn-flex = "Chen Qi <Qi.Chen@windriver.com>"
183RECIPE_MAINTAINER_pn-font-alias = "Armin Kuster <akuster808@gmail.com>" 183RECIPE_MAINTAINER_pn-font-alias = "Armin Kuster <akuster808@gmail.com>"
184RECIPE_MAINTAINER_pn-font-util = "Armin Kuster <akuster808@gmail.com>" 184RECIPE_MAINTAINER_pn-font-util = "Armin Kuster <akuster808@gmail.com>"
185RECIPE_MAINTAINER_pn-fontconfig = "Ross Burton <ross.burton@intel.com>" 185RECIPE_MAINTAINER_pn-fontconfig = "Ross Burton <ross.burton@intel.com>"
186RECIPE_MAINTAINER_pn-foomatic-filters = "Chen Qi <Qi.Chen@windriver.com>"
187RECIPE_MAINTAINER_pn-formfactor = "Ross Burton <ross.burton@intel.com>" 186RECIPE_MAINTAINER_pn-formfactor = "Ross Burton <ross.burton@intel.com>"
188RECIPE_MAINTAINER_pn-freetype = "Ross Burton <ross.burton@intel.com>" 187RECIPE_MAINTAINER_pn-freetype = "Ross Burton <ross.burton@intel.com>"
189RECIPE_MAINTAINER_pn-fribidi = "Ross Burton <ross.burton@intel.com>" 188RECIPE_MAINTAINER_pn-fribidi = "Ross Burton <ross.burton@intel.com>"
@@ -551,7 +550,6 @@ RECIPE_MAINTAINER_pn-pciutils = "Chen Qi <Qi.Chen@windriver.com>"
551RECIPE_MAINTAINER_pn-pcmanfm = "Alexander Kanavin <alex.kanavin@gmail.com>" 550RECIPE_MAINTAINER_pn-pcmanfm = "Alexander Kanavin <alex.kanavin@gmail.com>"
552RECIPE_MAINTAINER_pn-perf = "Bruce Ashfield <bruce.ashfield@gmail.com>" 551RECIPE_MAINTAINER_pn-perf = "Bruce Ashfield <bruce.ashfield@gmail.com>"
553RECIPE_MAINTAINER_pn-perl = "Alexander Kanavin <alex.kanavin@gmail.com>" 552RECIPE_MAINTAINER_pn-perl = "Alexander Kanavin <alex.kanavin@gmail.com>"
554RECIPE_MAINTAINER_pn-perl-native = "Alexander Kanavin <alex.kanavin@gmail.com>"
555RECIPE_MAINTAINER_pn-piglit = "Ross Burton <ross.burton@intel.com>" 553RECIPE_MAINTAINER_pn-piglit = "Ross Burton <ross.burton@intel.com>"
556RECIPE_MAINTAINER_pn-pigz = "Hongxu Jia <hongxu.jia@windriver.com>" 554RECIPE_MAINTAINER_pn-pigz = "Hongxu Jia <hongxu.jia@windriver.com>"
557RECIPE_MAINTAINER_pn-pinentry = "Armin Kuster <akuster808@gmail.com>" 555RECIPE_MAINTAINER_pn-pinentry = "Armin Kuster <akuster808@gmail.com>"
@@ -574,9 +572,6 @@ RECIPE_MAINTAINER_pn-ptest-runner = "Ross Burton <ross.burton@intel.com>"
574RECIPE_MAINTAINER_pn-pulseaudio = "Tanu Kaskinen <tanuk@iki.fi>" 572RECIPE_MAINTAINER_pn-pulseaudio = "Tanu Kaskinen <tanuk@iki.fi>"
575RECIPE_MAINTAINER_pn-pulseaudio-client-conf-sato = "Tanu Kaskinen <tanuk@iki.fi>" 573RECIPE_MAINTAINER_pn-pulseaudio-client-conf-sato = "Tanu Kaskinen <tanuk@iki.fi>"
576RECIPE_MAINTAINER_pn-puzzles = "Anuj Mittal <anuj.mittal@intel.com>" 574RECIPE_MAINTAINER_pn-puzzles = "Anuj Mittal <anuj.mittal@intel.com>"
577RECIPE_MAINTAINER_pn-python = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
578RECIPE_MAINTAINER_pn-python-native = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
579RECIPE_MAINTAINER_pn-python-setuptools = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
580RECIPE_MAINTAINER_pn-python3 = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>" 575RECIPE_MAINTAINER_pn-python3 = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
581RECIPE_MAINTAINER_pn-python3-async = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>" 576RECIPE_MAINTAINER_pn-python3-async = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
582RECIPE_MAINTAINER_pn-python3-dbus = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>" 577RECIPE_MAINTAINER_pn-python3-dbus = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
@@ -586,7 +581,6 @@ RECIPE_MAINTAINER_pn-python3-git = "Oleksandr Kravchuk <open.source@oleksandr-kr
586RECIPE_MAINTAINER_pn-python3-gitdb = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>" 581RECIPE_MAINTAINER_pn-python3-gitdb = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
587RECIPE_MAINTAINER_pn-python3-iniparse = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>" 582RECIPE_MAINTAINER_pn-python3-iniparse = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
588RECIPE_MAINTAINER_pn-python3-mako = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>" 583RECIPE_MAINTAINER_pn-python3-mako = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
589RECIPE_MAINTAINER_pn-python3-native = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
590RECIPE_MAINTAINER_pn-python3-nose = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>" 584RECIPE_MAINTAINER_pn-python3-nose = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
591RECIPE_MAINTAINER_pn-python3-numpy = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>" 585RECIPE_MAINTAINER_pn-python3-numpy = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
592RECIPE_MAINTAINER_pn-python3-pbr = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>" 586RECIPE_MAINTAINER_pn-python3-pbr = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
diff --git a/meta/lib/oeqa/selftest/cases/distrodata.py b/meta/lib/oeqa/selftest/cases/distrodata.py
index 68ba556485..5f7f488349 100644
--- a/meta/lib/oeqa/selftest/cases/distrodata.py
+++ b/meta/lib/oeqa/selftest/cases/distrodata.py
@@ -42,8 +42,9 @@ but their recipes claim otherwise by setting UPSTREAM_VERSION_UNKNOWN. Please re
42 42
43 def test_maintainers(self): 43 def test_maintainers(self):
44 """ 44 """
45 Summary: Test that oe-core recipes have a maintainer 45 Summary: Test that oe-core recipes have a maintainer and entries in maintainers list have a recipe
46 Expected: All oe-core recipes (except a few special static/testing ones) should have a maintainer listed in maintainers.inc file. 46 Expected: All oe-core recipes (except a few special static/testing ones) should have a maintainer listed in maintainers.inc file.
47 Expected: All entries in maintainers list should have a recipe file that matches them
47 Product: oe-core 48 Product: oe-core
48 Author: Alexander Kanavin <alex.kanavin@gmail.com> 49 Author: Alexander Kanavin <alex.kanavin@gmail.com>
49 """ 50 """
@@ -54,7 +55,16 @@ but their recipes claim otherwise by setting UPSTREAM_VERSION_UNKNOWN. Please re
54 return True 55 return True
55 return False 56 return False
56 57
57 feature = 'require conf/distro/include/maintainers.inc\n' 58 def is_maintainer_exception(entry):
59 exceptions = ["systemd", "musl", "libpam", "newlib", "linux-yocto", "opensbi", "linux-dummy",
60 "mesa-gl", "libgfortran", "volatile-binds", "libgloss", "bsd-headers",
61 "cve-update-db-native", "libssp-nonshared", "argp-standalone", "fts"]
62 for i in exceptions:
63 if i in entry:
64 return True
65 return False
66
67 feature = 'require conf/distro/include/maintainers.inc\nLICENSE_FLAGS_WHITELIST += " commercial"\n'
58 self.write_config(feature) 68 self.write_config(feature)
59 69
60 with bb.tinfoil.Tinfoil() as tinfoil: 70 with bb.tinfoil.Tinfoil() as tinfoil:
@@ -62,6 +72,11 @@ but their recipes claim otherwise by setting UPSTREAM_VERSION_UNKNOWN. Please re
62 72
63 with_maintainer_list = [] 73 with_maintainer_list = []
64 no_maintainer_list = [] 74 no_maintainer_list = []
75
76 missing_recipes = []
77 recipes = []
78 prefix = "RECIPE_MAINTAINER_pn-"
79
65 # We could have used all_recipes() here, but this method will find 80 # We could have used all_recipes() here, but this method will find
66 # every recipe if we ever move to setting RECIPE_MAINTAINER in recipe files 81 # every recipe if we ever move to setting RECIPE_MAINTAINER in recipe files
67 # instead of maintainers.inc 82 # instead of maintainers.inc
@@ -71,6 +86,7 @@ but their recipes claim otherwise by setting UPSTREAM_VERSION_UNKNOWN. Please re
71 continue 86 continue
72 rd = tinfoil.parse_recipe_file(fn, appends=False) 87 rd = tinfoil.parse_recipe_file(fn, appends=False)
73 pn = rd.getVar('PN') 88 pn = rd.getVar('PN')
89 recipes.append(pn)
74 if is_exception(pn): 90 if is_exception(pn):
75 continue 91 continue
76 if rd.getVar('RECIPE_MAINTAINER'): 92 if rd.getVar('RECIPE_MAINTAINER'):
@@ -78,6 +94,15 @@ but their recipes claim otherwise by setting UPSTREAM_VERSION_UNKNOWN. Please re
78 else: 94 else:
79 no_maintainer_list.append((pn, fn)) 95 no_maintainer_list.append((pn, fn))
80 96
97 maintainers = tinfoil.config_data.keys()
98 for key in maintainers:
99 if key.startswith(prefix):
100 recipe = tinfoil.config_data.expand(key[len(prefix):])
101 if is_maintainer_exception(recipe):
102 continue
103 if recipe not in recipes:
104 missing_recipes.append(recipe)
105
81 if no_maintainer_list: 106 if no_maintainer_list:
82 self.fail(""" 107 self.fail("""
83The following recipes do not have a maintainer assigned to them. Please add an entry to meta/conf/distro/include/maintainers.inc file. 108The following recipes do not have a maintainer assigned to them. Please add an entry to meta/conf/distro/include/maintainers.inc file.
@@ -87,3 +112,8 @@ The following recipes do not have a maintainer assigned to them. Please add an e
87 self.fail(""" 112 self.fail("""
88The list of oe-core recipes with maintainers is empty. This may indicate that the test has regressed and needs fixing. 113The list of oe-core recipes with maintainers is empty. This may indicate that the test has regressed and needs fixing.
89""") 114""")
115
116 if missing_recipes:
117 self.fail("""
118Unable to find recipes for the following entries in maintainers.inc:
119""" + "\n".join(['%s' % i for i in missing_recipes]))