build: Allow extra bitbake arguments to be passed

This allows the `kas build` command to be used when you need to pass
extra arguments to bitbake.

A `--` separator is needed when passing arguments which begin with a
dash so that argparse doesn't try to parse them as kas further
arguments.

For example, to pass `--skip-setscene` to bitbake:

    kas build config.yml -- --skip-setscene

Signed-off-by: Paul Barker <pbarker@konsulko.com>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
This commit is contained in:
Paul Barker 2020-05-19 10:45:18 +02:00 committed by Jan Kiszka
parent 8fb8b1b1e1
commit 677c469fb5

View File

@ -59,6 +59,9 @@ class Build:
bld_psr.add_argument('config',
help='Config file')
bld_psr.add_argument('extra_bitbake_args',
nargs='*',
help='Extra arguments to pass to bitbake')
bld_psr.add_argument('--target',
action='append',
help='Select target to build')
@ -102,7 +105,7 @@ class Build:
macro.add(WriteBBConfig())
# Build
macro.add(BuildCommand())
macro.add(BuildCommand(args.extra_bitbake_args))
if 'SSH_PRIVATE_KEY' in os.environ:
macro.add(CleanupSSHAgent())
@ -117,8 +120,9 @@ class BuildCommand(Command):
Implements the bitbake build step.
"""
def __init__(self):
def __init__(self, extra_bitbake_args):
super().__init__()
self.extra_bitbake_args = extra_bitbake_args
def __str__(self):
return 'build'
@ -130,7 +134,7 @@ class BuildCommand(Command):
# Start bitbake build of image
bitbake = find_program(ctx.environ['PATH'], 'bitbake')
cmd = ([bitbake, '-k', '-c', ctx.config.get_bitbake_task()]
+ ctx.config.get_bitbake_targets())
+ self.extra_bitbake_args + ctx.config.get_bitbake_targets())
if sys.stdout.isatty():
logging.info('%s$ %s', ctx.build_dir, ' '.join(cmd))
ret = subprocess.call(cmd, env=ctx.environ, cwd=ctx.build_dir)