2 commits - createrepo/deltarpms.py createrepo.spec

[email protected]
Newsgroups gmane.linux.rpm.metadata
Message-ID <[email protected]>
 createrepo.spec         |    2 +-
 createrepo/deltarpms.py |   32 ++++++++------------------------
 2 files changed, 9 insertions(+), 25 deletions(-)

New commits:
commit 50a77da0b10e95c54bde51092017064f7a433685
Author: Seth Vidal <[email protected]>
Date:   Mon Sep 14 16:43:05 2009 -0400

    add requirement on python-deltarpm for new patch from Bill.

diff --git a/createrepo.spec b/createrepo.spec
index 0d4bbd8..57a0196 100644
--- a/createrepo.spec
+++ b/createrepo.spec
@@ -11,7 +11,7 @@ URL: http://createrepo.baseurl.org/
 BuildRoot: %{_tmppath}/%{name}-%{version}root
 BuildArchitectures: noarch
 Requires: python >= 2.1, rpm-python, rpm >= 0:4.1.1, libxml2-python
-Requires: yum-metadata-parser, yum >= 3.2.23
+Requires: yum-metadata-parser, yum >= 3.2.23, python-deltarpm
 
 %description
 This utility will generate a common metadata repository from a directory of
commit c31855f2c4edf17358c4acea909768275818a27d
Author: Bill Nottingham <[email protected]>
Date:   Mon Sep 14 16:35:54 2009 -0400

    createrepo patch to use the new deltarpm python bindings

diff --git a/createrepo/deltarpms.py b/createrepo/deltarpms.py
index 26a6715..d14d3fa 100644
--- a/createrepo/deltarpms.py
+++ b/createrepo/deltarpms.py
@@ -18,7 +18,7 @@
 import os.path
 import commands
 from yum import misc
-import gzip
+import deltarpm
 from utils import MDError
 
 class DeltaRPMPackage:
@@ -44,17 +44,16 @@ class DeltaRPMPackage:
         os.lseek(fd, 0, 0)
         fo = os.fdopen(fd, 'rb')
         self.csum = misc.checksum(self.csum_type, fo)
-        fo.seek(int(self.po.hdrend))
-        self._getOldInfo(fo)
         del fo
         del fd
+        self._getDRPMInfo(os.path.join(basedir, filename))
                     
     def _stringToNEVR(self, string):
         i = string.rfind("-", 0, string.rfind("-")-1)
         name = string[:i]
         (epoch, ver, rel) = self._stringToVersion(string[i+1:])
         return (name, epoch, ver, rel)
-        
+
     def _getLength(self, in_data):
         length = 0
         for val in in_data:
@@ -62,27 +61,12 @@ class DeltaRPMPackage:
             length += ord(val)
         return length
         
-    def _getOldInfo(self, fo):
-        try:
-            compobj = gzip.GzipFile("", "rb", 9, fo)
-        except:
-            raise zlibError("Data not stored in gzip format")
-            
-        if compobj.read(4)[:3] != "DLT":
-            raise Exception("Not a deltarpm")
+    def _getDRPMInfo(self, filename):
+        d = deltarpm.readDeltaRPM(filename)
+        self.oldnevrstring = d['old_nevr']
+        self.oldnevr = self._stringToNEVR(d['old_nevr'])
+        self.sequence = d['seq']
         
-        nevr_length = self._getLength(compobj.read(4))
-        nevr = compobj.read(nevr_length).strip("\x00")
-        seq_length = self._getLength(compobj.read(4))
-        seq = compobj.read(seq_length)
-        hex_seq = ""
-        for char in seq:
-            hex_seq += str("%02x" % ord(char))
-        self.oldnevrstring = nevr
-        self.oldnevr = self._stringToNEVR(nevr)
-        self.sequence = hex_seq
-        compobj.close()
-            
     def _stringToVersion(self, strng):
         i = strng.find(':')
         if i != -1:
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.