mirror of
https://git.yoctoproject.org/poky
synced 2026-02-06 00:38:45 +01:00
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:
committed by
Richard Purdie
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
|
||||
|
||||
Reference in New Issue
Block a user