]> code.ossystems Code Review - openembedded-core.git/commitdiff
package_manager: call createrepo with --dbpath pointing inside WORKDIR
authorEd Bartosh <ed.bartosh@linux.intel.com>
Wed, 1 Apr 2015 11:17:06 +0000 (14:17 +0300)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Thu, 2 Apr 2015 11:00:55 +0000 (12:00 +0100)
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 during previous run of createrepo.

Made createrepo to create rpm db in $WORKDIR/rpmdb/ from scratch
for every build and architecture. This should potentially fix the
failure as every run of createrepo will be using separate db.

[YOCTO #6571]

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/lib/oe/package_manager.py

index 743c7cb496583b5ae48a902b1c143b0968c475d2..ed0c9a7d3d0dfb3eabce9df52cf69c1e12ef8967 100644 (file)
@@ -111,11 +111,15 @@ class RpmIndexer(Indexer):
         index_cmds = []
         rpm_dirs_found = False
         for arch in archs:
+            dbpath = os.path.join(self.d.getVar('WORKDIR', True), 'rpmdb', arch)
+            if os.path.exists(dbpath):
+                bb.utils.remove(dbpath, True)
             arch_dir = os.path.join(self.deploy_dir, arch)
             if not os.path.isdir(arch_dir):
                 continue
 
-            index_cmds.append("%s --update -q %s" % (rpm_createrepo, arch_dir))
+            index_cmds.append("%s --dbpath %s --update -q %s" % \
+                             (rpm_createrepo, dbpath, arch_dir))
 
             rpm_dirs_found = True