From fe3039322e2f846b336ac5af5177e9da27d79695 Mon Sep 17 00:00:00 2001 From: Markus Lehtonen Date: Fri, 29 Apr 2016 15:55:40 +0300 Subject: oeqa.utils.commands: Introduce get_bb_vars() A new function for getting values of multiple bitbake variables at the same time. Signed-off-by: Markus Lehtonen Signed-off-by: Ross Burton --- meta/lib/oeqa/utils/commands.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/meta/lib/oeqa/utils/commands.py b/meta/lib/oeqa/utils/commands.py index 18fe39ecfe..0297e53dcc 100644 --- a/meta/lib/oeqa/utils/commands.py +++ b/meta/lib/oeqa/utils/commands.py @@ -141,6 +141,39 @@ def get_bb_env(target=None, postconfig=None): else: return bitbake("-e", postconfig=postconfig).output +def get_bb_vars(variables=None, target=None, postconfig=None): + """Get values of multiple bitbake variables""" + bbenv = get_bb_env(target, postconfig=postconfig) + + var_re = re.compile(r'^(export )?(?P[a-zA-Z]\w+)="(?P.*)"$') + unset_re = re.compile(r'^unset (?P[a-zA-Z]\w+)$') + lastline = None + values = {} + for line in bbenv.splitlines(): + match = var_re.match(line) + val = None + if match: + val = match.group('value') + else: + match = unset_re.match(line) + if match: + # Handle [unexport] variables + if lastline.startswith('# "'): + val = lastline.split('"')[1] + if val: + var = match.group('var') + if variables is None: + values[var] = val + else: + if var in variables: + values[var] = val + variables.remove(var) + # Stop after all required variables have been found + if not variables: + break + lastline = line + return values + def get_bb_var(var, target=None, postconfig=None): val = None bbenv = get_bb_env(target, postconfig=postconfig) -- cgit 1.2.3-korg