summaryrefslogtreecommitdiffstats
path: root/meta/lib/oe/recipeutils.py
diff options
context:
space:
mode:
Diffstat (limited to 'meta/lib/oe/recipeutils.py')
-rw-r--r--meta/lib/oe/recipeutils.py37
1 files changed, 37 insertions, 0 deletions
diff --git a/meta/lib/oe/recipeutils.py b/meta/lib/oe/recipeutils.py
index f9d7dfe253..7586332fe0 100644
--- a/meta/lib/oe/recipeutils.py
+++ b/meta/lib/oe/recipeutils.py
@@ -1183,3 +1183,40 @@ def get_recipe_upgrade_status(recipes=None):
1183 pkgs_list = executor.map(_get_recipe_upgrade_status, data_copy_list) 1183 pkgs_list = executor.map(_get_recipe_upgrade_status, data_copy_list)
1184 1184
1185 return pkgs_list 1185 return pkgs_list
1186
1187def get_common_include_recipes():
1188 with bb.tinfoil.Tinfoil() as tinfoil:
1189 tinfoil.prepare(config_only=False)
1190
1191 recipes = tinfoil.all_recipe_files(variants=False)
1192
1193 recipeincludes = {}
1194 for fn in recipes:
1195 data = tinfoil.parse_recipe_file(fn)
1196 recipeincludes[fn] = {'bbincluded':data.getVar('BBINCLUDED').split(),'pn':data.getVar('PN')}
1197 return _get_common_include_recipes(recipeincludes)
1198
1199def _get_common_include_recipes(recipeincludes_all):
1200 recipeincludes = {}
1201 for fn,data in recipeincludes_all.items():
1202 bbincluded_filtered = [i for i in data['bbincluded'] if os.path.dirname(i) == os.path.dirname(fn) and i != fn]
1203 if bbincluded_filtered:
1204 recipeincludes[data['pn']] = bbincluded_filtered
1205
1206 recipeincludes_inverted = {}
1207 for k,v in recipeincludes.items():
1208 for i in v:
1209 recipeincludes_inverted.setdefault(i,set()).add(k)
1210
1211 recipeincludes_inverted_filtered = {k:v for k,v in recipeincludes_inverted.items() if len(v) > 1}
1212
1213 recipes_with_shared_includes = list()
1214 for v in recipeincludes_inverted_filtered.values():
1215 recipeset = v
1216 for v1 in recipeincludes_inverted_filtered.values():
1217 if recipeset.intersection(v1):
1218 recipeset.update(v1)
1219 if recipeset not in recipes_with_shared_includes:
1220 recipes_with_shared_includes.append(recipeset)
1221
1222 return recipes_with_shared_includes