* [PATCH v2] python-smartpm: use md5 as the digest for rpm_sys channel
@ 2016-09-14 8:46 Markus Lehtonen
2016-09-14 8:46 ` Markus Lehtonen
0 siblings, 1 reply; 2+ messages in thread
From: Markus Lehtonen @ 2016-09-14 8:46 UTC (permalink / raw)
To: openembedded-core
When reading smartpm sources more closely I found out that it has an internal
utility function for doing file hashes. It does hashing in a more memory
efficient way, processing the file in chunks. Thus, it is better to use it
instead of blindly reading the whole file into memory as v1 of this patch did.
Markus Lehtonen (1):
python-smartpm: use md5 as the digest for rpm_sys channel
...m_sys-use-md5sum-instead-of-mtime-as-the-.patch | 38 ++++++++++++++++++++++
meta/recipes-devtools/python/python-smartpm_git.bb | 1 +
2 files changed, 39 insertions(+)
create mode 100644 meta/recipes-devtools/python/python-smartpm/channels-rpm_sys-use-md5sum-instead-of-mtime-as-the-.patch
--
2.6.6
^ permalink raw reply [flat|nested] 2+ messages in thread
* [PATCH v2] python-smartpm: use md5 as the digest for rpm_sys channel
2016-09-14 8:46 [PATCH v2] python-smartpm: use md5 as the digest for rpm_sys channel Markus Lehtonen
@ 2016-09-14 8:46 ` Markus Lehtonen
0 siblings, 0 replies; 2+ messages in thread
From: Markus Lehtonen @ 2016-09-14 8:46 UTC (permalink / raw)
To: openembedded-core
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]
Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
---
...m_sys-use-md5sum-instead-of-mtime-as-the-.patch | 38 ++++++++++++++++++++++
meta/recipes-devtools/python/python-smartpm_git.bb | 1 +
2 files changed, 39 insertions(+)
create mode 100644 meta/recipes-devtools/python/python-smartpm/channels-rpm_sys-use-md5sum-instead-of-mtime-as-the-.patch
diff --git a/meta/recipes-devtools/python/python-smartpm/channels-rpm_sys-use-md5sum-instead-of-mtime-as-the-.patch b/meta/recipes-devtools/python/python-smartpm/channels-rpm_sys-use-md5sum-instead-of-mtime-as-the-.patch
new file mode 100644
index 0000000..2f14a12
--- /dev/null
+++ b/meta/recipes-devtools/python/python-smartpm/channels-rpm_sys-use-md5sum-instead-of-mtime-as-the-.patch
@@ -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
+
diff --git a/meta/recipes-devtools/python/python-smartpm_git.bb b/meta/recipes-devtools/python/python-smartpm_git.bb
index 0c26048..861910c 100644
--- a/meta/recipes-devtools/python/python-smartpm_git.bb
+++ b/meta/recipes-devtools/python/python-smartpm_git.bb
@@ -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"
--
2.6.6
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2016-09-14 8:46 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-09-14 8:46 [PATCH v2] python-smartpm: use md5 as the digest for rpm_sys channel Markus Lehtonen
2016-09-14 8:46 ` Markus Lehtonen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox