archiver: generalise task running when in configured mode

When in configured mode the archive will re-run configure itself, but that
doesn't work if there are other tasks that need to run such as cmake's
generate_toolchain_file.

Instead of hard-coding a list of classes and tasks, obtain the list of tasks
preceeding do_configure, filter out ones we don't want to re-run such as
do_patch and do_prepare_recipe_sysroot, and run those too.

(From OE-Core rev: fe26382f94d8cb7d2453d9937aee451b757252b8)

Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Ross Burton
2018-09-28 14:45:41 +01:00
committed by Richard Purdie
parent e85f567f96
commit 4771a7c2ed

View File

@@ -246,21 +246,27 @@ python do_ar_configured() {
# do_configure, we archive the already configured ${S} to
# instead of.
elif pn != 'libtool-native':
def runTask(task):
bb.warn("running %s" % task)
prefuncs = d.getVarFlag(task, 'prefuncs') or ''
for func in prefuncs.split():
if func != "sysroot_cleansstate":
bb.build.exec_func(func, d)
bb.build.exec_func(task, d)
postfuncs = d.getVarFlag(task, 'postfuncs') or ''
for func in postfuncs.split():
if func != 'do_qa_configure':
bb.build.exec_func(func, d)
# Change the WORKDIR to make do_configure run in another dir.
d.setVar('WORKDIR', d.getVar('ARCHIVER_WORKDIR'))
if bb.data.inherits_class('kernel-yocto', d):
bb.build.exec_func('do_kernel_configme', d)
if bb.data.inherits_class('cmake', d):
bb.build.exec_func('do_generate_toolchain_file', d)
prefuncs = d.getVarFlag('do_configure', 'prefuncs')
for func in (prefuncs or '').split():
if func != "sysroot_cleansstate":
bb.build.exec_func(func, d)
bb.build.exec_func('do_configure', d)
postfuncs = d.getVarFlag('do_configure', 'postfuncs')
for func in (postfuncs or '').split():
if func != "do_qa_configure":
bb.build.exec_func(func, d)
preceeds = bb.build.preceedtask('do_configure', False, d)
for task in preceeds:
if task != 'do_patch' and task != 'do_prepare_recipe_sysroot':
runTask(task)
runTask('do_configure')
srcdir = d.getVar('S')
builddir = d.getVar('B')
if srcdir != builddir: