From b9ff2ac4c0c4dbfb25b309ce34366db4688731d8 Mon Sep 17 00:00:00 2001 From: Seth Vidal Date: Sep 03 2009 20:28:32 +0000 Subject: add drpm patch from https://bugzilla.redhat.com/show_bug.cgi?id=518658 --- diff --git a/createrepo-drpm.patch b/createrepo-drpm.patch new file mode 100644 index 0000000..eb27b30 --- /dev/null +++ b/createrepo-drpm.patch @@ -0,0 +1,78 @@ +From 0924c6540eeff8ac086c7b3ce9e0ca355a9bd258 Mon Sep 17 00:00:00 2001 +From: Bill Nottingham +Date: Fri, 21 Aug 2009 14:45:07 -0400 +Subject: [PATCH] Use deltarpm bindings rather than parsing them ourselves. + +--- + createrepo/deltarpms.py | 32 ++++++++------------------------ + 1 files changed, 8 insertions(+), 24 deletions(-) + +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: +-- +1.6.4 + diff --git a/createrepo.spec b/createrepo.spec index a64b963..106685f 100644 --- a/createrepo.spec +++ b/createrepo.spec @@ -3,16 +3,17 @@ Summary: Creates a common metadata repository Name: createrepo Version: 0.9.8 -Release: 1%{?dist} +Release: 2%{?dist} License: GPLv2 Group: System Environment/Base Source: %{name}-%{version}.tar.gz Patch0: ten-changelog-limit.patch +Patch1: createrepo-drpm.patch URL: http://createrepo.baseurl.org/ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildArchitectures: noarch Requires: python >= 2.1, rpm-python, rpm >= 4.1.1, libxml2-python -Requires: yum-metadata-parser, yum >= 3.2.23-10, deltarpm +Requires: yum-metadata-parser, yum >= 3.2.23-10, python-deltarpm, deltarpm BuildRequires: python %description @@ -22,6 +23,7 @@ packages. %prep %setup -q %patch0 -p0 +%patch1 -p1 %build @@ -44,6 +46,10 @@ rm -rf $RPM_BUILD_ROOT %{python_sitelib}/createrepo %changelog +* Thu Sep 3 2009 Seth Vidal - 0.9.8-2 +- add drpm patch from https://bugzilla.redhat.com/show_bug.cgi?id=518658 + + * Fri Aug 28 2009 Seth Vidal - 0.9.8-1 - bump yum requires version - remove head patch