[OE-core] Recipe specific sysroot: handling recipes creating same files

Andreas Müller schnitzeltony at googlemail.com
Sun Feb 19 22:04:27 UTC 2017


Hi,

I have the case that two recipes are trying to install same files.

In my case:

samba and libldb install

/usr/lib/python2.7/site-packages/_ldb_text.py

I bet samba doe that due to missing dependency on libldb but I don't
want to discuss that here - I'll find a proper solution.

What I would like to discuss is that both recipes build fine without
an error. The error comes up on gvfs depending on both. gvfs fails
with cryptic python backtrace:

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/superandy/data/oe-core/sources/openembedded-core/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/superandy/data/oe-core/sources/openembedded-core/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:
'/home/superandy/tmp/oe-core-glibc/sysroots-components/cortexa7t2hf-neon-vfpv4/libldb/usr/lib/python2.7/site-packages/_ldb_text.py'
-> '/home/superandy/tmp/oe-core-glibc/work/cortexa7t2hf-neon-vfpv4-angstrom-linux-gnueabi/gvfs/1.28.3-r0/recipe-sysroot/usr/lib/python2.7/site-packages/_ldb_text.py'

This needs love: One can guess that libldb is trying to install stuff
already there - nothing mentions samba and the error pops up for gvfs
which does nothing really wrong. I consider this as bug introduced by
RSS.

Andreas



More information about the Openembedded-core mailing list