[OE-core] [PATCH resend^2] wic: allow bitbake variables in kickstarter files

Rasmus Villemoes rasmus.villemoes at prevas.dk
Wed Jan 9 06:57:11 UTC 2019


ping

On 29/12/2018 01.06, Rasmus Villemoes wrote:
> image_types_wic.bbclass has a mechanism for doing variable substitution
> on .wks files by simply letting the input file be called
> .wks.in. However, that doesn't allow using variables in files included
> via the include directive. This is unfortunate, because lacking either
> the ability to include other files or variable substitution leads to
> fragile and error-prone duplication between kickstarter files and
> recipes/configuration files used for various boards.
> 
> This adds (somewhat naive) support for variable substitution in all
> files parsed by wic. The user should add all required variables to
> WICVARS to get them exported appropriately.
> 
> Signed-off-by: Rasmus Villemoes <rasmus.villemoes at prevas.dk>
> ---
> scripts/lib/wic/ksparser.py | 17 +++++++++++++++++
>  1 file changed, 17 insertions(+)
> 
> diff --git a/scripts/lib/wic/ksparser.py b/scripts/lib/wic/ksparser.py
> index 7e5a9c5092..08baf76123 100644
> --- a/scripts/lib/wic/ksparser.py
> +++ b/scripts/lib/wic/ksparser.py
> @@ -28,14 +28,30 @@
>  import os
>  import shlex
>  import logging
> +import re
>  
>  from argparse import ArgumentParser, ArgumentError, ArgumentTypeError
>  
>  from wic.engine import find_canned
>  from wic.partition import Partition
> +from wic.misc import get_bitbake_var
>  
>  logger = logging.getLogger('wic')
>  
> +__expand_var_regexp__ = re.compile(r"\${[^{}@\n\t :]+}")
> +
> +def expand_line(line):
> +    while True:
> +        m = __expand_var_regexp__.search(line)
> +        if not m:
> +            return line
> +        key = m.group()[2:-1]
> +        val = get_bitbake_var(key)
> +        if val is None:
> +            logger.warning("cannot expand variable %s" % key)
> +            return line
> +        line = line[:m.start()] + val + line[m.end():]
> +
>  class KickStartError(Exception):
>      """Custom exception."""
>      pass
> @@ -190,6 +206,7 @@ class KickStart():
>                  line = line.strip()
>                  lineno += 1
>                  if line and line[0] != '#':
> +                    line = expand_line(line)
>                      try:
>                          line_args = shlex.split(line)
>                          parsed = parser.parse_args(line_args)
> 


-- 
Rasmus Villemoes
Software Developer
Prevas A/S
Hedeager 3
DK-8200 Aarhus N
+45 51210274
rasmus.villemoes at prevas.dk
www.prevas.dk


More information about the Openembedded-core mailing list