[OE-core] [PATCH] rootfs.py: Remove rpm database from staging area

Richard Purdie richard.purdie at linuxfoundation.org
Mon Mar 30 08:53:44 UTC 2015


On Mon, 2015-03-30 at 11:30 +0300, Ed Bartosh wrote:
> Rpm database in staging area is used only by createrepo.
> createrepo fails with the error
> "rpmdb: BDB0060 PANIC: fatal region error detected"
> if rpm database is broken from the previous run of createrepo.
> 
> Removing the databae before running createrepo can hopefully
> prevent this failure to happen.
> 
> [YOCTO #6571]
> 
> Signed-off-by: Ed Bartosh <ed.bartosh at linux.intel.com>
> ---
>  meta/lib/oe/rootfs.py | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/meta/lib/oe/rootfs.py b/meta/lib/oe/rootfs.py
> index 4e4e6eb..9f7dc65 100644
> --- a/meta/lib/oe/rootfs.py
> +++ b/meta/lib/oe/rootfs.py
> @@ -306,6 +306,9 @@ class RpmRootfs(Rootfs):
>              bb.utils.remove(self.image_rootfs, True)
>          else:
>              self.pm.recovery_packaging_data()
> +        dbpath = os.path.join(self.d.getVar('STAGING_DIR_NATIVE', True),
> +                              'var/lib/rpm/*')
> +        bb.utils.remove(dbpath, recurse=True)
>          bb.utils.remove(self.d.getVar('MULTILIB_TEMP_ROOTFS', True), True)
>  
>          self.pm.crea

This patch helps me see the problem a lot. I'd never realised there was
an rpm database in the native sysroot that was getting corrupted, I'd
always assumed it was the target rootfs one.

I'm a little worried about what happens if you have multiple images
generating at the same time as this change as above may delete something
being worked on by another process.

I'm wondering why is it getting into the sysroot at all? Rather than
delete it here, could we either not generate it at all, or place it
somewhere in WORKDIR (so that other tasks can't see it or race against
it)?

Cheers,

Richard




More information about the Openembedded-core mailing list