The kernel package needs "kern-tools-native" in order for it's do_kernel_metadata. Thus, devtool extract for kernel in a pristine environment fails. With the current bb.tinfoil implementation it is not possible to run arbitrary bitbake commands - e.g. run "bitbake kern-tools-native -c populate_sysroot" in our case. This patch implements an ugly workaround for that problem, basically by hardcoding this dependency and running the required bitbake task(s) before tinfoil is initialized.
[YOCTO #6658] Signed-off-by: Markus Lehtonen <[email protected]> --- scripts/lib/devtool/standard.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/scripts/lib/devtool/standard.py b/scripts/lib/devtool/standard.py index 3725d87..bf24e32 100644 --- a/scripts/lib/devtool/standard.py +++ b/scripts/lib/devtool/standard.py @@ -197,6 +197,8 @@ def extract(args, config, basepath, workspace): """Entry point for the devtool 'extract' subcommand""" import bb + _check_extract_deps(config, basepath, args.recipename) + tinfoil = setup_tinfoil() rd = _parse_recipe(config, tinfoil, args.recipename, True) @@ -237,6 +239,20 @@ class BbTaskExecutor(object): self.executed.append(func) +def _check_extract_deps(config, basepath, recipename): + """HACK: Ugly workaround for making sure that requirements are met when + trying to extract a package""" + tinfoil = setup_tinfoil() + rd = _parse_recipe(config, tinfoil, recipename, True) + if bb.data.inherits_class('kernel-yocto', rd): + tinfoil.shutdown() + try: + stdout, _ = exec_build_env_command(config.init_path, basepath, + 'bitbake kern-tools-native') + except bb.process.ExecutionError as err: + raise DevtoolError("Failed to build kern-tools-native:\n%s" % + err.stdout) + def _extract_source(srctree, keep_temp, devbranch, d): """Extract sources of a recipe""" import bb.event @@ -422,7 +438,8 @@ def modify(args, config, basepath, workspace): raise DevtoolError("directory %s does not exist or not a directory " "(specify -x to extract source from recipe)" % args.srctree) - + if args.extract: + _check_extract_deps(config, basepath, args.recipename) tinfoil = setup_tinfoil() rd = _parse_recipe(config, tinfoil, args.recipename, True) -- 2.1.4 -- _______________________________________________ Openembedded-core mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-core
