* [PATCH 0/1] package_manager.py: delete RPM db locks after calling rpmresolve
@ 2014-03-27 16:18 Laurentiu Palcu
2014-03-27 16:18 ` [PATCH 1/1] " Laurentiu Palcu
2014-03-28 9:05 ` [PATCH 0/1] " Laurentiu Palcu
0 siblings, 2 replies; 4+ messages in thread
From: Laurentiu Palcu @ 2014-03-27 16:18 UTC (permalink / raw)
To: openembedded-core
The following changes since commit c4eeaa8e35e926b6d1f633549f76d1ba9ed9278b:
bitbake: knotty: Show a link to the logfile for failed setscene tasks (2014-03-27 10:42:08 +0000)
are available in the git repository at:
git://git.yoctoproject.org/poky-contrib lpalcu/b6049_do_rootfs_crash
http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=lpalcu/b6049_do_rootfs_crash
Laurentiu Palcu (1):
package_manager.py: delete RPM db locks after calling rpmresolve
meta/lib/oe/package_manager.py | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
--
1.7.9.5
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 1/1] package_manager.py: delete RPM db locks after calling rpmresolve
2014-03-27 16:18 [PATCH 0/1] package_manager.py: delete RPM db locks after calling rpmresolve Laurentiu Palcu
@ 2014-03-27 16:18 ` Laurentiu Palcu
2014-03-27 16:34 ` Mark Hatle
2014-03-28 9:05 ` [PATCH 0/1] " Laurentiu Palcu
1 sibling, 1 reply; 4+ messages in thread
From: Laurentiu Palcu @ 2014-03-27 16:18 UTC (permalink / raw)
To: openembedded-core
If the locks are not removed, the output of the next rpm command
executed will contain the following string:
rpmdb: BDB1540 configured environment flags incompatible with
existing environment
And this will create various parsing issues.
[YOCTO #6049]
Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
---
meta/lib/oe/package_manager.py | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/meta/lib/oe/package_manager.py b/meta/lib/oe/package_manager.py
index 764ab72..0f22e46 100644
--- a/meta/lib/oe/package_manager.py
+++ b/meta/lib/oe/package_manager.py
@@ -242,6 +242,12 @@ class RpmPkgsList(PkgsList):
self.ml_prefix_list, self.ml_os_list = \
RpmIndexer(d, rootfs_dir).get_ml_prefix_and_os_list(arch_var, os_var)
+ def _unlock_rpm_db(self):
+ # Remove rpm db lock files
+ rpm_db_locks = glob.glob('%s/var/lib/rpm/__db.*' % self.rootfs_dir)
+ for f in rpm_db_locks:
+ bb.utils.remove(f, True)
+
'''
Translate the RPM/Smart format names to the OE multilib format names
'''
@@ -281,6 +287,8 @@ class RpmPkgsList(PkgsList):
try:
output = subprocess.check_output(cmd, stderr=subprocess.STDOUT).strip()
+
+ self._unlock_rpm_db()
except subprocess.CalledProcessError as e:
bb.fatal("Cannot get the package dependencies. Command '%s' "
"returned %d:\n%s" % (' '.join(cmd), e.returncode, e.output))
@@ -299,9 +307,7 @@ class RpmPkgsList(PkgsList):
# bb.note(cmd)
tmp_output = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True).strip()
- rpm_db_locks = glob.glob('%s/var/lib/rpm/__db.*' % self.rootfs_dir)
- for f in rpm_db_locks:
- bb.utils.remove(f, True)
+ self._unlock_rpm_db()
except subprocess.CalledProcessError as e:
bb.fatal("Cannot get the installed packages list. Command '%s' "
"returned %d:\n%s" % (cmd, e.returncode, e.output))
--
1.7.9.5
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 1/1] package_manager.py: delete RPM db locks after calling rpmresolve
2014-03-27 16:18 ` [PATCH 1/1] " Laurentiu Palcu
@ 2014-03-27 16:34 ` Mark Hatle
0 siblings, 0 replies; 4+ messages in thread
From: Mark Hatle @ 2014-03-27 16:34 UTC (permalink / raw)
To: openembedded-core
On 3/27/14, 11:18 AM, Laurentiu Palcu wrote:
> If the locks are not removed, the output of the next rpm command
> executed will contain the following string:
>
> rpmdb: BDB1540 configured environment flags incompatible with
> existing environment
This usually means that RPM was not called with the same environment, or
different version of RPM (or BerkleyDB) were used in the call.
We need to verify that the rpmresolve was using the proper (oe-built) version of
RPM, librpm, python-rpm and not the host's version.
Assuming this is true, then I believe the change is safe. Otherwise, we need to
fix rpmresolve to use the correct set of libraries.
--Mark
> And this will create various parsing issues.
>
> [YOCTO #6049]
>
> Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
> ---
> meta/lib/oe/package_manager.py | 12 +++++++++---
> 1 file changed, 9 insertions(+), 3 deletions(-)
>
> diff --git a/meta/lib/oe/package_manager.py b/meta/lib/oe/package_manager.py
> index 764ab72..0f22e46 100644
> --- a/meta/lib/oe/package_manager.py
> +++ b/meta/lib/oe/package_manager.py
> @@ -242,6 +242,12 @@ class RpmPkgsList(PkgsList):
> self.ml_prefix_list, self.ml_os_list = \
> RpmIndexer(d, rootfs_dir).get_ml_prefix_and_os_list(arch_var, os_var)
>
> + def _unlock_rpm_db(self):
> + # Remove rpm db lock files
> + rpm_db_locks = glob.glob('%s/var/lib/rpm/__db.*' % self.rootfs_dir)
> + for f in rpm_db_locks:
> + bb.utils.remove(f, True)
> +
> '''
> Translate the RPM/Smart format names to the OE multilib format names
> '''
> @@ -281,6 +287,8 @@ class RpmPkgsList(PkgsList):
>
> try:
> output = subprocess.check_output(cmd, stderr=subprocess.STDOUT).strip()
> +
> + self._unlock_rpm_db()
> except subprocess.CalledProcessError as e:
> bb.fatal("Cannot get the package dependencies. Command '%s' "
> "returned %d:\n%s" % (' '.join(cmd), e.returncode, e.output))
> @@ -299,9 +307,7 @@ class RpmPkgsList(PkgsList):
> # bb.note(cmd)
> tmp_output = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True).strip()
>
> - rpm_db_locks = glob.glob('%s/var/lib/rpm/__db.*' % self.rootfs_dir)
> - for f in rpm_db_locks:
> - bb.utils.remove(f, True)
> + self._unlock_rpm_db()
> except subprocess.CalledProcessError as e:
> bb.fatal("Cannot get the installed packages list. Command '%s' "
> "returned %d:\n%s" % (cmd, e.returncode, e.output))
>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 0/1] package_manager.py: delete RPM db locks after calling rpmresolve
2014-03-27 16:18 [PATCH 0/1] package_manager.py: delete RPM db locks after calling rpmresolve Laurentiu Palcu
2014-03-27 16:18 ` [PATCH 1/1] " Laurentiu Palcu
@ 2014-03-28 9:05 ` Laurentiu Palcu
1 sibling, 0 replies; 4+ messages in thread
From: Laurentiu Palcu @ 2014-03-28 9:05 UTC (permalink / raw)
To: openembedded-core
Put this on hold. I'll do some more investigations. I want to see what's
the deal with those rpm lock DBs and why we don't delete them only once,
after the rootfs generation has completely finished (after postprocess
commands are called, etc).
laurentiu
On Thu, Mar 27, 2014 at 06:18:52PM +0200, Laurentiu Palcu wrote:
> The following changes since commit c4eeaa8e35e926b6d1f633549f76d1ba9ed9278b:
>
> bitbake: knotty: Show a link to the logfile for failed setscene tasks (2014-03-27 10:42:08 +0000)
>
> are available in the git repository at:
>
> git://git.yoctoproject.org/poky-contrib lpalcu/b6049_do_rootfs_crash
> http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=lpalcu/b6049_do_rootfs_crash
>
> Laurentiu Palcu (1):
> package_manager.py: delete RPM db locks after calling rpmresolve
>
> meta/lib/oe/package_manager.py | 12 +++++++++---
> 1 file changed, 9 insertions(+), 3 deletions(-)
>
> --
> 1.7.9.5
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2014-03-28 9:05 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-03-27 16:18 [PATCH 0/1] package_manager.py: delete RPM db locks after calling rpmresolve Laurentiu Palcu
2014-03-27 16:18 ` [PATCH 1/1] " Laurentiu Palcu
2014-03-27 16:34 ` Mark Hatle
2014-03-28 9:05 ` [PATCH 0/1] " Laurentiu Palcu
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox