Openembedded Core Discussions
 help / color / mirror / Atom feed
* [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