Discussion:
[PATCH 3/3] modifyrepo: set correct opensize and openchecksum when input is compressed
Zdenek Pavlas
2013-09-30 15:23:35 UTC
Permalink
---
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
Zdenek Pavlas
2013-09-30 15:23:34 UTC
Permalink
When Seth added the code that decompresses already compressed
metadata, this should have been done as well.
---
modifyrepo.py | 10 +++-------
1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/modifyrepo.py b/modifyrepo.py
index 6614ebd..412b657 100755
--- a/modifyrepo.py
+++ b/modifyrepo.py
@@ -118,15 +118,11 @@ class RepoMetadata:
else:
raise MDError, 'invalid metadata type'

- do_compress = False
## Compress the metadata and move it into the repodata
- if self.compress and mdname.split('.')[-1] not in ('gz', 'bz2', 'xz'):
- do_compress = True
- mdname += '.' + self.compress_type
mdtype = self._get_mdtype(mdname, mdtype)
-
destmd = os.path.join(self.repodir, mdname)
- if do_compress:
+ if self.compress:
+ destmd += '.' + self.compress_type
newmd = compressOpen(destmd, mode='wb', compress_type=self.compress_type)
else:
newmd = open(destmd, 'wb')
@@ -150,7 +146,7 @@ class RepoMetadata:
new_rd.location = (None, 'repodata/' + base_destmd)
new_rd.checksum = (self.checksum_type, csum)
new_rd.size = str(os.stat(destmd).st_size)
- if do_compress:
+ if self.compress:
new_rd.openchecksum = (self.checksum_type, open_csum)
new_rd.opensize = str(os.stat(metadata).st_size)
new_rd.timestamp = str(int(os.stat(destmd).st_mtime))
--
1.7.11.7
Loading...