[oe-commits] Ed Bartosh : package_manager: call createrepo with --dbpath pointing inside WORKDIR

git at git.openembedded.org git at git.openembedded.org
Wed Apr 1 13:01:35 UTC 2015


Module: openembedded-core.git
Branch: master-next
Commit: 50df12bd9c14e6e8067e07f43bbf04c246551dc3
URL:    http://git.openembedded.org/?p=openembedded-core.git&a=commit;h=50df12bd9c14e6e8067e07f43bbf04c246551dc3

Author: Ed Bartosh <ed.bartosh at linux.intel.com>
Date:   Wed Apr  1 14:17:06 2015 +0300

package_manager: call createrepo with --dbpath pointing inside WORKDIR

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 at linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>

---

 meta/lib/oe/package_manager.py | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/meta/lib/oe/package_manager.py b/meta/lib/oe/package_manager.py
index 743c7cb..ed0c9a7 100644
--- a/meta/lib/oe/package_manager.py
+++ b/meta/lib/oe/package_manager.py
@@ -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
 



More information about the Openembedded-commits mailing list