[oe-commits] [openembedded-core] 18/18: wic: allow bitbake variables in kickstarter files

git at git.openembedded.org git at git.openembedded.org
Fri Jan 11 13:23:13 UTC 2019


This is an automated email from the git hooks/post-receive script.

rpurdie pushed a commit to branch master-next
in repository openembedded-core.

commit 97141985d839cbe61a5ec872d98724f342968c81
Author: Rasmus Villemoes <rasmus.villemoes at prevas.dk>
AuthorDate: Tue Jul 3 14:54:14 2018 +0200

    wic: allow bitbake variables in kickstarter files
    
    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>
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 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 7e5a9c5..08baf76 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)

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list