mirror of
https://git.yoctoproject.org/poky
synced 2026-01-29 21:08:42 +01:00
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. (From OE-Core rev: 8a75d614a8a1ff72c4af448ac3e1292d0e1d1a79) Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
e47d6f9e71
commit
d6fe480c2b
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user