[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