[OE-core] [PATCH] rm_work.bbclass: re-enable recursive do_rm_work_all
Burton, Ross
ross.burton at intel.com
Thu Mar 16 22:32:17 UTC 2017
On 14 March 2017 at 15:29, Patrick Ohly <patrick.ohly at intel.com> wrote:
> When rewriting the do_rm_work injection, do_rm_work_all had been
> removed because it seemed obsolete, as do_build now always triggers
> do_rm_work.
>
> However, do_build does not get triggered for all recipes and thus
> do_rm_work was not called for recipes that got built only
> partially. For example, zlib depends indirectly on
> zlib-native:do_populate_sysroot. Because of that dependency,
> zlib-native got compiled, but do_rm_work was never called for it.
>
> Re-introducing do_rm_work_all fixes that by making do_build depend on
> do_rm_work_all, which then recursively depends on do_rm_work of all
> dependencies. This has the unintended side-effect that do_rm_work then
> also triggers additional work (like do_populate_lic) that normally
> doesn't need to be done for a build. This seems like the lesser evil,
> compared to an incomplete cleanup because it mostly enables the
> lighter tasks after do_populate_sysroot.
>
> The real solution would be to have two kinds of relationships: a weak
> ordering relationship ("if A and B are enabled, A must run before B,
> but B can also run without A") and hard dependencies ("B cannot run
> unless A has run before").
>
If I do a build with rm_work enabled I tend to get this error at rootfs
time:
ERROR: core-image-sato-1.0-r0 do_image_wic: Error executing a python
function in exec_python_func() autogenerated:
The stack trace of python calls that resulted in this exception/failure was:
File: 'exec_python_func() autogenerated', lineno: 2, function: <module>
0001:
*** 0002:extend_recipe_sysroot(d)
0003:
File: '/home/ross/Yocto/poky/meta/classes/staging.bbclass', lineno: 623,
function: extend_recipe_sysroot
0619: dest = newmanifest[l]
0620: if l.endswith("/"):
0621: staging_copydir(l, targetdir, dest,
seendirs)
0622: continue
*** 0623: staging_copyfile(l, targetdir, dest,
postinsts, seendirs)
0624:
0625: for f in fixme:
0626: if f == '':
0627: staging_processfixme(fixme[f], recipesysroot,
recipesysroot, recipesysrootnative, d)
File: '/home/ross/Yocto/poky/meta/classes/staging.bbclass', lineno: 269,
function: staging_copyfile
0265: os.symlink(linkto, dest)
0266: #bb.warn(c)
0267: else:
0268: try:
*** 0269: os.link(c, dest)
0270: except OSError as err:
0271: if err.errno == errno.EXDEV:
0272: bb.utils.copyfile(c, dest)
0273: else:
Exception: FileExistsError: [Errno 17] File exists:
'/data/poky-master/tmp/sysroots-components/corei7-64/glibc/usr/lib/crt1.o'
->
'/data/poky-master/tmp/work/intel_corei7_64-poky-linux/core-image-sato/1.0-r0/recipe-sysroot/usr/lib/crt1.o'
ERROR: core-image-sato-1.0-r0 do_image_wic: Function failed:
extend_recipe_sysroot
ERROR: Logfile of failure stored in:
/data/poky-master/tmp/work/intel_corei7_64-poky-linux/core-image-sato/1.0-r0/temp/log.do_image_wic.21552
ERROR: Task
(/home/ross/Yocto/poky/meta/recipes-sato/images/core-image-sato.bb:do_image_wic)
failed with exit code '1'
Reverting this patch makes it go away.
Ross
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20170316/44d0f410/attachment-0002.html>
More information about the Openembedded-core
mailing list