From 487afa2ce82c2836951edc29817ef2d5abc71765 Mon Sep 17 00:00:00 2001 From: Fabio Erculiani Date: Sat, 3 Oct 2009 19:05:51 +0200 Subject: [PATCH] [entropy.client] make get_package_action also check for digest --- libraries/entropy/client/interfaces/methods.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/libraries/entropy/client/interfaces/methods.py b/libraries/entropy/client/interfaces/methods.py index 147b7b15d..b31d72880 100644 --- a/libraries/entropy/client/interfaces/methods.py +++ b/libraries/entropy/client/interfaces/methods.py @@ -1611,13 +1611,21 @@ class MatchMixin: dbconn = self.open_repository(match[1]) pkgkey, pkgslot = dbconn.retrieveKeySlot(match[0]) results = self.clientDbconn.searchKeySlot(pkgkey, pkgslot) - if not results: return 1 + if not results: + return 1 installed_idpackage = results[0][0] pkgver, pkgtag, pkgrev = dbconn.getVersioningData(match[0]) installedVer, installedTag, installedRev = self.clientDbconn.getVersioningData(installed_idpackage) pkgcmp = self.entropyTools.entropy_compare_versions((pkgver,pkgtag,pkgrev),(installedVer,installedTag,installedRev)) if pkgcmp == 0: + # check digest, if it differs, we should mark pkg as update + # we don't want users to think that they are "reinstalling" stuff + # because it will just confuse them + inst_digest = self.clientDbconn.retrieveDigest(installed_idpackage) + repo_digest = dbconn.retrieveDigest(match[0]) + if inst_digest != repo_digest: + return 2 return 0 elif pkgcmp > 0: return 2