[bitbake-devel] [PATCH 2/2] ConfHandler.py: allow inherit or include with multiple parameters

Peter Kjellerstedt peter.kjellerstedt at axis.com
Wed Jun 7 14:52:29 UTC 2017


> -----Original Message-----
> From: bitbake-devel-bounces at lists.openembedded.org [mailto:bitbake-
> devel-bounces at lists.openembedded.org] On Behalf Of Patrick Ohly
> Sent: den 7 juni 2017 15:56
> To: bitbake-devel at lists.openembedded.org
> Subject: [bitbake-devel] [PATCH 2/2] ConfHandler.py: allow inherit or
> include with multiple parameters

Change "inherit or include" to "include or require".

> "inherit" already allows inheriting more than one class in a single
> statement. The same also makes sense for "include" and "require",
> because then one can generate a list of files to be included
> dynamically also for the case that more than one file needs to be
> included.
> 
> For example, with a new utility method, include files could be
> included depending on the current distro features like this:
> 
>    require ${@ oe.utils.optional_includes(d, \
>                "foo,bar:foo-or-bar.inc xyz:x.inc,y.inc,z.inc", \
>                "DISTRO_FEATURES")}
> 
> Signed-off-by: Patrick Ohly <patrick.ohly at intel.com>
> ---
>  lib/bb/parse/parse_py/ConfHandler.py | 20 ++++++++++++--------
>  1 file changed, 12 insertions(+), 8 deletions(-)
> 
> diff --git a/lib/bb/parse/parse_py/ConfHandler.py
> b/lib/bb/parse/parse_py/ConfHandler.py
> index b006d06..97aa130 100644
> --- a/lib/bb/parse/parse_py/ConfHandler.py
> +++ b/lib/bb/parse/parse_py/ConfHandler.py
> @@ -69,21 +69,25 @@ def init(data):
>  def supports(fn, d):
>      return fn[-5:] == ".conf"
> 
> -def include(parentfn, fn, lineno, data, error_out):
> +def include(parentfn, fns, lineno, data, error_out):
>      """
>      error_out: A string indicating the verb (e.g. "include", "inherit") to be
>      used in a ParseError that will be raised if the file to be included could
>      not be included. Specify False to avoid raising an error in this case.
>      """
> -    if parentfn == fn: # prevent infinite recursion
> -        return None
> -
> -    fn = data.expand(fn)
> +    fns = data.expand(fns)
>      parentfn = data.expand(parentfn)
> 
> -    if not fn:
> -        # "include" or "require" without parameter is fine, just return.
> -        return
> +    # "include" or "require" accept zero to n space-separated file names to include.
> +    for fn in fns.split():
> +        include_single_file(parentfn, fn, lineno, data, error_out)
> +
> +def include_single_file(parentfn, fn, lineno, data, error_out):
> +    """
> +    Helper function for include() which does not expand or split its parameters.
> +    """
> +    if parentfn == fn: # prevent infinite recursion
> +        return None
> 
>      if not os.path.isabs(fn):
>          dname = os.path.dirname(parentfn)
> --
> git-series 0.9.1

//Peter




More information about the bitbake-devel mailing list