[yocto] [[AUH] 08/17] recipe/base.py: Add support for get recipe inherits.
Aníbal Limón
anibal.limon at linux.intel.com
Wed Nov 25 16:00:37 PST 2015
Recipe inherits are needed to detect what recipes support
certain feature.
For example: For detect ptest enable recipes and then do
ptest runtime test after succesful upgrade.
Signed-off-by: Aníbal Limón <anibal.limon at linux.intel.com>
---
modules/recipe/base.py | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/modules/recipe/base.py b/modules/recipe/base.py
index 5c70c61..dabad2f 100644
--- a/modules/recipe/base.py
+++ b/modules/recipe/base.py
@@ -57,6 +57,16 @@ def modify_recipe_files(func):
os.rename(full_path_f + ".tmp", full_path_f)
return modify
+def read_recipe_files(func):
+ def read(env, recipe_dir):
+ for f in os.listdir(recipe_dir):
+ full_path_f = os.path.join(recipe_dir, f)
+ if is_recipe_or_include_file(env, full_path_f, f):
+ with open(full_path_f) as recipe:
+ for line in recipe:
+ func(line)
+ return read
+
class Recipe(object):
def __init__(self, env, new_ver, interactive, workdir, recipe_dir, bitbake, git):
self.env = env
@@ -85,8 +95,23 @@ class Recipe(object):
self.commit_msg = self.env['PN'] + ": upgrade to " + self.new_ver + "\n\n"
self.rm_patches_msg = "\n\nRemoved the following patch(es):\n"
+ self._inherits = None
+
super(Recipe, self).__init__()
+ def get_inherits(self):
+ @read_recipe_files
+ def _get_inherits(line):
+ m = re.search("^inherit (.*)$", line)
+ if m:
+ tmp = m.group(1).split()
+ self._inherits.extend(tmp)
+
+ if not self._inherits:
+ self._inherits = []
+ _get_inherits(self.env, self.recipe_dir)
+
+ return self._inherits
def update_env(self, env):
self.env = env
--
2.1.4
More information about the yocto
mailing list