summaryrefslogtreecommitdiffstats
path: root/scripts/lib
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2016-01-23 00:59:49 +1300
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-01-24 09:40:32 +0000
commitd193531d5ead804380884e97e14ce00cbdccf494 (patch)
tree314729c881accf4e2fd058fbe191c094b484960d /scripts/lib
parentd3a4f72896aaea7374bd8915cfe3adaaecc55a2d (diff)
downloadpoky-d193531d5ead804380884e97e14ce00cbdccf494.tar.gz
devtool: build: ensure pkgdata is written out
When you run devtool build, you need to have the pkgdata written out at the end, so that if what you're adding is a library and the next thing you add is something that depends on that library, the necessary information to map the dependency back to the recipe is present. In practical terms all this means is we need do_packagedata to run in addition to do_populate_sysroot. This does mean that do_package needs to run which wasn't running before, and that means that the few package QA tests that run within do_package such as installed-vs-shipped will now be run. This may be a bit bothersome, and prompted a fix for one of our oe-selftest tests as a result, but I don't see an easy way around it. Ultimately if you care about using the recipe in an image you'll need to fix any such errors anyway. Fixes [YOCTO #8887]. (From OE-Core rev: 6579c7120ee5a541427ff5b6b07f838d52f9fe7c) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts/lib')
-rw-r--r--scripts/lib/devtool/build.py16
1 files changed, 11 insertions, 5 deletions
diff --git a/scripts/lib/devtool/build.py b/scripts/lib/devtool/build.py
index c4c0c9f50f..b10a6a903b 100644
--- a/scripts/lib/devtool/build.py
+++ b/scripts/lib/devtool/build.py
@@ -46,21 +46,27 @@ def _set_file_values(fn, values):
46 f.writelines(newlines) 46 f.writelines(newlines)
47 return updated 47 return updated
48 48
49def _get_build_task(config): 49def _get_build_tasks(config):
50 return config.get('Build', 'build_task', 'populate_sysroot') 50 tasks = config.get('Build', 'build_task', 'populate_sysroot,packagedata').split(',')
51 return ['do_%s' % task.strip() for task in tasks]
51 52
52def build(args, config, basepath, workspace): 53def build(args, config, basepath, workspace):
53 """Entry point for the devtool 'build' subcommand""" 54 """Entry point for the devtool 'build' subcommand"""
54 workspacepn = check_workspace_recipe(workspace, args.recipename, bbclassextend=True) 55 workspacepn = check_workspace_recipe(workspace, args.recipename, bbclassextend=True)
55 56
56 build_task = _get_build_task(config) 57 build_tasks = _get_build_tasks(config)
57 58
58 bbappend = workspace[workspacepn]['bbappend'] 59 bbappend = workspace[workspacepn]['bbappend']
59 if args.disable_parallel_make: 60 if args.disable_parallel_make:
60 logger.info("Disabling 'make' parallelism") 61 logger.info("Disabling 'make' parallelism")
61 _set_file_values(bbappend, {'PARALLEL_MAKE': ''}) 62 _set_file_values(bbappend, {'PARALLEL_MAKE': ''})
62 try: 63 try:
63 exec_build_env_command(config.init_path, basepath, 'bitbake -c %s %s' % (build_task, args.recipename), watch=True) 64 bbargs = []
65 for task in build_tasks:
66 if args.recipename.endswith('-native') and 'package' in task:
67 continue
68 bbargs.append('%s:%s' % (args.recipename, task))
69 exec_build_env_command(config.init_path, basepath, 'bitbake %s' % ' '.join(bbargs), watch=True)
64 except bb.process.ExecutionError as e: 70 except bb.process.ExecutionError as e:
65 # We've already seen the output since watch=True, so just ensure we return something to the user 71 # We've already seen the output since watch=True, so just ensure we return something to the user
66 return e.exitcode 72 return e.exitcode
@@ -73,7 +79,7 @@ def build(args, config, basepath, workspace):
73def register_commands(subparsers, context): 79def register_commands(subparsers, context):
74 """Register devtool subcommands from this plugin""" 80 """Register devtool subcommands from this plugin"""
75 parser_build = subparsers.add_parser('build', help='Build a recipe', 81 parser_build = subparsers.add_parser('build', help='Build a recipe',
76 description='Builds the specified recipe using bitbake (up to and including do_%s)' % _get_build_task(context.config)) 82 description='Builds the specified recipe using bitbake (up to and including %s)' % ', '.join(_get_build_tasks(context.config)))
77 parser_build.add_argument('recipename', help='Recipe to build') 83 parser_build.add_argument('recipename', help='Recipe to build')
78 parser_build.add_argument('-s', '--disable-parallel-make', action="store_true", help='Disable make parallelism') 84 parser_build.add_argument('-s', '--disable-parallel-make', action="store_true", help='Disable make parallelism')
79 parser_build.set_defaults(func=build) 85 parser_build.set_defaults(func=build)