Build issue related to android-headers (Bug #1213)

Added by Christophe Chapuis about 1 month ago. Updated about 1 month ago.

Status:New Start date:09/23/2017
Priority:Normal Due date:
Assignee:- % Done:


Target version:-


When building consecutively several targets (hammerhead followed by tenderloin for example), without cleaning up anything, we often get the following error message for several recipes:

@NOTE: Executing RunQueue Tasks
ERROR: libqtubuntu-media-signals-0.3+bzr21-r0 do_prepare_recipe_sysroot: 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)
File: '/media/LuneOS/testing/webos-ports/openembedded-core/meta/classes/staging.bbclass', lineno: 628, function: extend_recipe_sysroot
0624: dest = newmanifest[l]
0625: if l.endswith("/"):
0626: staging_copydir(l, targetdir, dest, seendirs)
0627: continue *** 0628: staging_copyfile(l, targetdir, dest, postinsts, seendirs)
0630: for f in fixme:
0631: if f '':
0632: staging_processfixme(fixme[f], recipesysroot, recipesysroot, recipesysrootnative, d)
File: '/media/LuneOS/testing/webos-ports/openembedded-core/meta/classes/staging.bbclass', lineno: 233, function: staging_copyfile
0229: os.symlink(linkto, dest)
0230: #bb.warn(c)
0231: else:
0232: try: *** 0233:, dest)
0234: except OSError as err:
0235: if err.errno errno.EXDEV:
0236: bb.utils.copyfile(c, dest)
0237: else:
Exception: FileExistsError: [Errno 17] File exists: '/media/LuneOS/testing/webos-ports/tmp-glibc/sysroots-components/tenderloin/android-headers-tenderloin/usr/include/android/android-version.h' -> '/media/LuneOS/testing/webos-ports/tmp-glibc/work/armv7ahf-neon-webos-linux-gnueabi/libqtubuntu-media-signals/0.3+bzr21-r0/recipe-sysroot/usr/include/android/android-version.h'

ERROR: libqtubuntu-media-signals-0.3+bzr21-r0 do_prepare_recipe_sysroot: Function failed: extend_recipe_sysroot
ERROR: Logfile of failure stored in: /media/LuneOS/testing/webos-ports/tmp-glibc/work/armv7ahf-neon-webos-linux-gnueabi/libqtubuntu-media-signals/0.3+bzr21-r0/temp/log.do_prepare_recipe_sysroot.26719
ERROR: Task (/media/LuneOS/testing/webos-ports/meta-webos-ports/meta-luneos/recipes-multimedia/qtubuntu-camera/ failed with exit code '1'
NOTE: Tasks Summary: Attempted 2756 tasks of which 2708 didn't need to be rerun and 1 failed.

The reason is that many machine-agnostic (i.e. "arm", not "tenderloin" or "hammerhead") recipes have an indirect dependency on android-headers, and the latter is specific to a target. Therefore the "android-version.h" sysroot file already exists in these recipes from a previous build, but as it doesn't correspond to the current build machine yocto tries to re-do the symlink.


Updated by Christophe Chapuis about 1 month ago

One more detail: note that the recipes that fail do not actually depend on these headers, and are really machine-agnotic. But yocto can't know that, because it doesn't know if the direct dependencies's headers are making use of android-headers's headers or not, so it brings them in.

Also available in: Atom PDF