[PATCH 3/3] modifyrepo: set correct opensize and openchecksum when input is compressed

Zdenek Pavlas <[email protected]> Mon, 30 Sep 2013 17:23:35 +0200
Newsgroups gmane.linux.rpm.metadata
Message-ID <[email protected]>
---
 modifyrepo.py | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/modifyrepo.py b/modifyrepo.py
index 412b657..3c8a8bd 100755
--- a/modifyrepo.py
+++ b/modifyrepo.py
@@ -32,7 +32,7 @@ import sys
 from createrepo import __version__
 from createrepo.utils import checksum_and_rename, compressOpen, MDError
 from createrepo.utils import _available_compression
-from yum.misc import checksum, _available_checksums
+from yum.misc import checksum, _available_checksums, AutoFileChecksums
 
 from yum.repoMDObject import RepoMD, RepoMDError, RepoData
 from xml.dom import minidom
@@ -111,6 +111,7 @@ class RepoMetadata:
                     oldmd = compressOpen(metadata, mode='rb')
                 else:
                     oldmd = file(metadata, 'r')
+                oldmd = AutoFileChecksums(oldmd, [self.checksum_type])
                 md = oldmd.read()
                 oldmd.close()
             else:
@@ -131,7 +132,6 @@ class RepoMetadata:
         newmd.close()
         print "Wrote:", destmd
 
-        open_csum = checksum(self.checksum_type, metadata)
         if self.unique_md_filenames:
             csum, destmd = checksum_and_rename(destmd, self.checksum_type)
         else:
@@ -147,8 +147,8 @@ class RepoMetadata:
         new_rd.checksum = (self.checksum_type, csum)
         new_rd.size = str(os.stat(destmd).st_size)
         if self.compress:
-            new_rd.openchecksum = (self.checksum_type, open_csum)
-            new_rd.opensize = str(os.stat(metadata).st_size)
+            new_rd.openchecksum = oldmd.checksums.hexdigests().popitem()
+            new_rd.opensize = str(oldmd.checksums.length)
         new_rd.timestamp = str(int(os.stat(destmd).st_mtime))
         self.repoobj.repoData[new_rd.type] = new_rd
         self._print_repodata(new_rd)
-- 
1.7.11.7