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