python-smartpm: use md5 as the digest for rpm_sys channel
Use md5 sum instead of mtime as the "digest" method for rpm_sys channel. The digest is used to determine if the channel has been updated. It was found out that mtime was not a reliable digest. On some systems mtime of the rpm db does not get updated after every transaction if transactions (smart install / remove commands) are fired in quick succession. As a consequence smartpm cache and rpm db get out of sync. [YOCTO #10244] (From OE-Core rev: e7267b4e78461e71a1175f93e2eb5e90272c2b47) Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
3f95a21c71
commit
edc92ea8de
|
@ -0,0 +1,38 @@
|
|||
channels/rpm_sys: use md5sum instead of mtime as the digest
|
||||
|
||||
Use the internal getFileDigest() function (which defaults to md5) instead of
|
||||
mtime for getting the file digest. On some systems mtime proved to be
|
||||
unreliable because of delayed update. This caused smart to miss rpm db updates
|
||||
and thus get its understanding of installed packages out of sync.
|
||||
|
||||
Upstream-Status: Pending
|
||||
|
||||
Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
|
||||
---
|
||||
smart/channels/rpm_sys.py | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/smart/channels/rpm_sys.py b/smart/channels/rpm_sys.py
|
||||
index b9fda27..6f1fe94 100644
|
||||
--- a/smart/channels/rpm_sys.py
|
||||
+++ b/smart/channels/rpm_sys.py
|
||||
@@ -22,6 +22,7 @@
|
||||
from smart.backends.rpm.header import RPMDBLoader
|
||||
from smart.backends.rpm.base import getTS, rpm_join_dbpath
|
||||
from smart.channel import PackageChannel
|
||||
+from smart.util.filetools import getFileDigest
|
||||
from smart import *
|
||||
import os
|
||||
|
||||
@@ -35,7 +36,7 @@ class RPMSysChannel(PackageChannel):
|
||||
dbdir = rpm_join_dbpath(sysconf.get("rpm-root", "/"),
|
||||
sysconf.get("rpm-dbpath", "var/lib/rpm"))
|
||||
path = os.path.join(dbdir, "Packages")
|
||||
- digest = os.path.getmtime(path)
|
||||
+ digest = getFileDigest(path)
|
||||
if digest == self._digest:
|
||||
return True
|
||||
self.removeLoaders()
|
||||
--
|
||||
2.6.6
|
||||
|
|
@ -26,6 +26,7 @@ SRC_URI = "\
|
|||
file://smart-locale.patch \
|
||||
file://smartpm-rpm5-support-check-signatures.patch \
|
||||
file://smart-add-deugging-when-targetpath-is-empty.patch \
|
||||
file://channels-rpm_sys-use-md5sum-instead-of-mtime-as-the-.patch \
|
||||
"
|
||||
|
||||
SRCREV = "407a7eca766431257dcd1da15175cc36a1bb22d0"
|
||||
|
|
Loading…
Reference in New Issue