devtool: run kernel dependencies
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] (From OE-Core rev: a9eb80de164fb8a464e29bf1cc6c7cf397f36662) Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
3b3f9bbc30
commit
2b6218d449
|
@ -170,7 +170,7 @@ def extract(args, config, basepath, workspace):
|
|||
"""Entry point for the devtool 'extract' subcommand"""
|
||||
import bb
|
||||
|
||||
tinfoil = setup_tinfoil()
|
||||
tinfoil = _prep_extract_operation(config, basepath, args.recipename)
|
||||
|
||||
rd = parse_recipe(config, tinfoil, args.recipename, True)
|
||||
if not rd:
|
||||
|
@ -210,6 +210,24 @@ class BbTaskExecutor(object):
|
|||
self.executed.append(func)
|
||||
|
||||
|
||||
def _prep_extract_operation(config, basepath, recipename):
|
||||
"""HACK: Ugly workaround for making sure that requirements are met when
|
||||
trying to extract a package. Returns the tinfoil instance to be used."""
|
||||
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')
|
||||
tinfoil = setup_tinfoil()
|
||||
except bb.process.ExecutionError as err:
|
||||
raise DevtoolError("Failed to build kern-tools-native:\n%s" %
|
||||
err.stdout)
|
||||
return tinfoil
|
||||
|
||||
|
||||
def _extract_source(srctree, keep_temp, devbranch, d):
|
||||
"""Extract sources of a recipe"""
|
||||
import bb.event
|
||||
|
@ -395,8 +413,10 @@ 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)
|
||||
|
||||
tinfoil = setup_tinfoil()
|
||||
if args.extract:
|
||||
tinfoil = _prep_extract_operation(config, basepath, args.recipename)
|
||||
else:
|
||||
tinfoil = setup_tinfoil()
|
||||
|
||||
rd = parse_recipe(config, tinfoil, args.recipename, True)
|
||||
if not rd:
|
||||
|
|
Loading…
Reference in New Issue