From fc35c10fed382e385f00b76abcee94a0148b4aee Mon Sep 17 00:00:00 2001 From: Ed Bartosh Date: Fri, 21 Aug 2015 16:00:57 +0300 Subject: devtool: implement build-image plugin Implemented new plugin to build image from workspace packages. Plugin creates .bbappend file, adds all workspace packages to the image using IMAGE_INSTALL_append variable in bbappend file. After that it runs 'bitbake '. (From OE-Core rev: 00bc43868da3ea2a4532215d3abef8e150c7b2e5) Signed-off-by: Ed Bartosh Signed-off-by: Ross Burton Signed-off-by: Richard Purdie --- scripts/lib/devtool/build-image.py | 56 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 scripts/lib/devtool/build-image.py (limited to 'scripts/lib') diff --git a/scripts/lib/devtool/build-image.py b/scripts/lib/devtool/build-image.py new file mode 100644 index 0000000000..d8e7b12832 --- /dev/null +++ b/scripts/lib/devtool/build-image.py @@ -0,0 +1,56 @@ +# Development tool - build-image plugin +# +# Copyright (C) 2015 Intel Corporation +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +"""Devtool plugin containing the build-image subcommand.""" + +import os +import logging + +from bb.process import ExecutionError +from devtool import exec_build_env_command, add_md5 + +LOG = logging.getLogger('devtool') + +def plugin_init(pluginlist): + """Plugin initialization""" + pass + +def build_image(args, config, basepath, workspace): + """Entry point for the devtool 'build-image' subcommand.""" + image = args.recipe + appendfile = os.path.join(config.workspace_path, 'appends', + '%s.bbappend' % image) + with open(appendfile, 'w') as afile: + afile.write('IMAGE_INSTALL_append = " %s"\n' % \ + ' '.join(workspace.keys())) + + add_md5(config, image, appendfile) + + try: + exec_build_env_command(config.init_path, basepath, + 'bitbake %s' % image, watch=True) + except ExecutionError as err: + return err.exitcode + + LOG.info('Successfully built %s', image) + +def register_commands(subparsers, context): + """Register devtool subcommands from the build-image plugin""" + parser_package = subparsers.add_parser('build-image', help='Build image') + parser_package.add_argument('recipe', help='Image recipe to build') + parser_package.set_defaults(func=build_image) + -- cgit v1.2.3