[OE-core] [PATCH 3/3] devtool: run kernel dependencies
Paul Eggleton
paul.eggleton at linux.intel.com
Thu Aug 27 12:45:33 UTC 2015
Hi Markus,
On Thursday 27 August 2015 14:49:50 Markus Lehtonen wrote:
> 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 <markus.lehtonen at linux.intel.com>
> ---
> 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()
Hmm, surely you need to call shutdown() in the non-kernel case as well?
Otherwise won't the lock still be in place when this function returns and then
setup_tinfoil() is called a second time?
> + 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)
Cheers,
Paul
--
Paul Eggleton
Intel Open Source Technology Centre
More information about the Openembedded-core
mailing list