1eb8dc403SDave Cobbley# Development tool - build-sdk command plugin
2eb8dc403SDave Cobbley#
3eb8dc403SDave Cobbley# Copyright (C) 2015-2016 Intel Corporation
4eb8dc403SDave Cobbley#
5c342db35SBrad Bishop# SPDX-License-Identifier: GPL-2.0-only
6eb8dc403SDave Cobbley#
7eb8dc403SDave Cobbley
8eb8dc403SDave Cobbleyimport os
9eb8dc403SDave Cobbleyimport subprocess
10eb8dc403SDave Cobbleyimport logging
11eb8dc403SDave Cobbleyimport glob
12eb8dc403SDave Cobbleyimport shutil
13eb8dc403SDave Cobbleyimport errno
14eb8dc403SDave Cobbleyimport sys
15eb8dc403SDave Cobbleyimport tempfile
16*220dafdbSAndrew Geisslerfrom devtool import DevtoolError
17eb8dc403SDave Cobbleyfrom devtool import build_image
18eb8dc403SDave Cobbley
19eb8dc403SDave Cobbleylogger = logging.getLogger('devtool')
20eb8dc403SDave Cobbley
21eb8dc403SDave Cobbley
22eb8dc403SDave Cobbleydef build_sdk(args, config, basepath, workspace):
23eb8dc403SDave Cobbley    """Entry point for the devtool build-sdk command"""
24eb8dc403SDave Cobbley
25eb8dc403SDave Cobbley    sdk_targets = config.get('SDK', 'sdk_targets', '').split()
26eb8dc403SDave Cobbley    if sdk_targets:
27eb8dc403SDave Cobbley        image = sdk_targets[0]
28eb8dc403SDave Cobbley    else:
29eb8dc403SDave Cobbley        raise DevtoolError('Unable to determine image to build SDK for')
30eb8dc403SDave Cobbley
31eb8dc403SDave Cobbley    extra_append = ['SDK_DERIVATIVE = "1"']
32eb8dc403SDave Cobbley    try:
33eb8dc403SDave Cobbley        result, outputdir = build_image.build_image_task(config,
34eb8dc403SDave Cobbley                                                         basepath,
35eb8dc403SDave Cobbley                                                         workspace,
36eb8dc403SDave Cobbley                                                         image,
37eb8dc403SDave Cobbley                                                         task='populate_sdk_ext',
38eb8dc403SDave Cobbley                                                         extra_append=extra_append)
39eb8dc403SDave Cobbley    except build_image.TargetNotImageError:
40eb8dc403SDave Cobbley        raise DevtoolError('Unable to determine image to build SDK for')
41eb8dc403SDave Cobbley
42eb8dc403SDave Cobbley    if result == 0:
43eb8dc403SDave Cobbley        logger.info('Successfully built SDK. You can find output files in %s'
44eb8dc403SDave Cobbley                    % outputdir)
45eb8dc403SDave Cobbley    return result
46eb8dc403SDave Cobbley
47eb8dc403SDave Cobbley
48eb8dc403SDave Cobbleydef register_commands(subparsers, context):
49eb8dc403SDave Cobbley    """Register devtool subcommands"""
50eb8dc403SDave Cobbley    if context.fixed_setup:
51eb8dc403SDave Cobbley        parser_build_sdk = subparsers.add_parser('build-sdk',
52eb8dc403SDave Cobbley                                                 help='Build a derivative SDK of this one',
53eb8dc403SDave Cobbley                                                 description='Builds an extensible SDK based upon this one and the items in your workspace',
54eb8dc403SDave Cobbley                                                 group='advanced')
55eb8dc403SDave Cobbley        parser_build_sdk.set_defaults(func=build_sdk)
56