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