[yocto] [[AUH] 08/17] recipe/base.py: Add support for get recipe inherits.
Aníbal Limón
anibal.limon at linux.intel.com
Fri Nov 27 08:50:53 PST 2015
On 11/26/2015 02:25 PM, Paul Eggleton wrote:
> On Wednesday 25 November 2015 18:00:37 Aníbal Limón wrote:
>> 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
>
> I'm not sure I like this - you're not parsing the recipe so you'll miss things
> such as inc files inheriting the recipe. Would it be possible to parse the
> recipe properly instead e.g. with tinfoil?
I agree with you but for now it works for detect recipes that have ptest
enabled.
This change isn't trivial so i loaded a ticket for change AUH to use
tinfoil (may be tinfoil2 :)).
Cheers,
alimon
[1] https://bugzilla.yoctoproject.org/show_bug.cgi?id=8735
>
> Cheers,
> Paul
>
More information about the yocto
mailing list