On 14 March 2017 at 15:29, Patrick Ohly <patrick.o...@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
-- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core